summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib')
-rw-r--r--bitbake/lib/bb/fetch2/npmsw.py35
1 files changed, 26 insertions, 9 deletions
diff --git a/bitbake/lib/bb/fetch2/npmsw.py b/bitbake/lib/bb/fetch2/npmsw.py
index d89be10caf..971ccc9050 100644
--- a/bitbake/lib/bb/fetch2/npmsw.py
+++ b/bitbake/lib/bb/fetch2/npmsw.py
@@ -43,15 +43,32 @@ def foreach_dependencies(shrinkwrap, callback=None, dev=False):
43 params = the package parameters (dictionary) 43 params = the package parameters (dictionary)
44 destdir = the destination of the package (string) 44 destdir = the destination of the package (string)
45 """ 45 """
46 packages = shrinkwrap.get("packages", {}) 46 # For handling old style dependencies entries in shinkwrap files
47 47 def _walk_deps(deps, deptree):
48 for package in packages: 48 for name in deps:
49 if package != "": 49 subtree = [*deptree, name]
50 name = package.split('node_modules/')[-1] 50 _walk_deps(deps[name].get("dependencies", {}), subtree)
51 package_infos = packages.get(package, {}) 51 if callback is not None:
52 if dev == False and package_infos.get("dev", False): 52 if deps[name].get("dev", False) and not dev:
53 continue 53 continue
54 callback(name, package_infos, package) 54 elif deps[name].get("bundled", False):
55 continue
56 destsubdirs = [os.path.join("node_modules", dep) for dep in subtree]
57 destsuffix = os.path.join(*destsubdirs)
58 callback(name, deps[name], destsuffix)
59
60 # packages entry means new style shrinkwrap file, else use dependencies
61 packages = shrinkwrap.get("packages", None)
62 if packages is not None:
63 for package in packages:
64 if package != "":
65 name = package.split('node_modules/')[-1]
66 package_infos = packages.get(package, {})
67 if dev == False and package_infos.get("dev", False):
68 continue
69 callback(name, package_infos, package)
70 else:
71 _walk_deps(shrinkwrap.get("dependencies", {}), [])
55 72
56class NpmShrinkWrap(FetchMethod): 73class NpmShrinkWrap(FetchMethod):
57 """Class to fetch all package from a shrinkwrap file""" 74 """Class to fetch all package from a shrinkwrap file"""