[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