[bitbake-devel] [PATCH] fetch2/npm.py: Fix inverted condition to prevent infinite loop

Matthijs Vader mvader at victronenergy.com
Tue Feb 13 12:46:25 UTC 2018


Hi Böszörményi Zoltán,

On Sunday Feb 4th, you wrote:
 
> At least the cli-color node module has dependencies that have cyclic
> dependency among themselves. npm.py is prepared to deal with such a case
> but the condition is handled only for downloading or not a dependency
> again, but then it goes checking the its dependency which causes an infinite
> loop in _getdependencies().
> Make this function simply return when a dependency is already downloaded
> and only download and check its dependencies when not.
> 
> Signed-off-by: Zoltán Böszörményi <zboszor at pr.hu>
> ---
>   lib/bb/fetch2/npm.py | 8 +++++---
>   1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/lib/bb/fetch2/npm.py b/lib/bb/fetch2/npm.py index
> b5f148ca..730c346a 100644
> --- a/lib/bb/fetch2/npm.py
> +++ b/lib/bb/fetch2/npm.py
> @@ -195,9 +195,11 @@ class Npm(FetchMethod):
>           outputurl = pdata['dist']['tarball']
>           data[pkg] = {}
>           data[pkg]['tgz'] = os.path.basename(outputurl)
> -        if not outputurl in fetchedlist:
> -            self._runwget(ud, d, "%s --directory-prefix=%s %s" % (self.basecmd, ud.prefixdir, outputurl), False)
> -            fetchedlist.append(outputurl)
> +        if outputurl in fetchedlist:
> +            return
> +
> +        self._runwget(ud, d, "%s --directory-prefix=%s %s" %
> + (self.basecmd, ud.prefixdir, outputurl), False)
> +        fetchedlist.append(outputurl)
>            dependencies = pdata.get('dependencies', {})
>           optionalDependencies = pdata.get('optionalDependencies', {})
> --
> 2.14.3

I tested your change, and it works OK & fixes the problem on cli-color.

Matthijs.



More information about the bitbake-devel mailing list