diff options
| -rw-r--r-- | bitbake/lib/bb/fetch2/npmsw.py | 35 |
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 | ||
| 56 | class NpmShrinkWrap(FetchMethod): | 73 | class NpmShrinkWrap(FetchMethod): |
| 57 | """Class to fetch all package from a shrinkwrap file""" | 74 | """Class to fetch all package from a shrinkwrap file""" |
