bitbake: fetch2/npm: don't download same URL multiple times
If we've already fetched a particular URL then we do not need to do so again within in the same operation. Maintain an internal list of fetched URLs to avoid doing that. (Bitbake rev: b4705c80add1f618c11a9223cdd9578d763b50ec) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
d649c64beb
commit
d5698c0afc
|
@ -165,7 +165,9 @@ class Npm(FetchMethod):
|
||||||
pdata = json.loads('\n'.join(datalines))
|
pdata = json.loads('\n'.join(datalines))
|
||||||
return pdata
|
return pdata
|
||||||
|
|
||||||
def _getdependencies(self, pkg, data, version, d, ud, optional=False):
|
def _getdependencies(self, pkg, data, version, d, ud, optional=False, fetchedlist=None):
|
||||||
|
if fetchedlist is None:
|
||||||
|
fetchedlist = []
|
||||||
pkgfullname = pkg
|
pkgfullname = pkg
|
||||||
if version != '*' and not '/' in version:
|
if version != '*' and not '/' in version:
|
||||||
pkgfullname += "@'%s'" % version
|
pkgfullname += "@'%s'" % version
|
||||||
|
@ -187,7 +189,9 @@ class Npm(FetchMethod):
|
||||||
outputurl = pdata['dist']['tarball']
|
outputurl = pdata['dist']['tarball']
|
||||||
data[pkg] = {}
|
data[pkg] = {}
|
||||||
data[pkg]['tgz'] = os.path.basename(outputurl)
|
data[pkg]['tgz'] = os.path.basename(outputurl)
|
||||||
self._runwget(ud, d, "%s --directory-prefix=%s %s" % (self.basecmd, ud.prefixdir, outputurl), False)
|
if not outputurl in fetchedlist:
|
||||||
|
self._runwget(ud, d, "%s --directory-prefix=%s %s" % (self.basecmd, ud.prefixdir, outputurl), False)
|
||||||
|
fetchedlist.append(outputurl)
|
||||||
|
|
||||||
dependencies = pdata.get('dependencies', {})
|
dependencies = pdata.get('dependencies', {})
|
||||||
optionalDependencies = pdata.get('optionalDependencies', {})
|
optionalDependencies = pdata.get('optionalDependencies', {})
|
||||||
|
@ -200,9 +204,9 @@ class Npm(FetchMethod):
|
||||||
else:
|
else:
|
||||||
depsfound[dep] = dependencies[dep]
|
depsfound[dep] = dependencies[dep]
|
||||||
for dep, version in optdepsfound.items():
|
for dep, version in optdepsfound.items():
|
||||||
self._getdependencies(dep, data[pkg]['deps'], version, d, ud, optional=True)
|
self._getdependencies(dep, data[pkg]['deps'], version, d, ud, optional=True, fetchedlist=fetchedlist)
|
||||||
for dep, version in depsfound.items():
|
for dep, version in depsfound.items():
|
||||||
self._getdependencies(dep, data[pkg]['deps'], version, d, ud)
|
self._getdependencies(dep, data[pkg]['deps'], version, d, ud, fetchedlist=fetchedlist)
|
||||||
|
|
||||||
def _getshrinkeddependencies(self, pkg, data, version, d, ud, lockdown, manifest, toplevel=True):
|
def _getshrinkeddependencies(self, pkg, data, version, d, ud, lockdown, manifest, toplevel=True):
|
||||||
logger.debug(2, "NPM shrinkwrap file is %s" % data)
|
logger.debug(2, "NPM shrinkwrap file is %s" % data)
|
||||||
|
|
Loading…
Reference in New Issue