From 186f1ee88d6981e9f4a4a48ff1ee0bd0b719b18b Mon Sep 17 00:00:00 2001 From: BELOUARGA Mohamed Date: Wed, 31 May 2023 00:27:52 +0200 Subject: classe-recipes: npm: Add support for dependencies and devDependencies Adapt the npm classe for the shrinkwrap of Nodejs 18, and seperate dependencies and dev dependencies. (From OE-Core rev: f8365c0216b24742b4ec456b5d35ea1c1647faa2) Signed-off-by: BELOUARGA Mohamed Signed-off-by: Alexandre Belloni Signed-off-by: Richard Purdie --- meta/classes-recipe/npm.bbclass | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'meta/classes-recipe/npm.bbclass') diff --git a/meta/classes-recipe/npm.bbclass b/meta/classes-recipe/npm.bbclass index c1944ca14e..91da3295f2 100644 --- a/meta/classes-recipe/npm.bbclass +++ b/meta/classes-recipe/npm.bbclass @@ -153,7 +153,11 @@ python npm_do_configure() { if has_shrinkwrap_file: cached_shrinkwrap = copy.deepcopy(orig_shrinkwrap) - cached_shrinkwrap.pop("dependencies", None) + for package in orig_shrinkwrap["packages"]: + if package != "": + cached_shrinkwrap["packages"].pop(package, None) + cached_shrinkwrap["packages"][""].pop("dependencies", None) + cached_shrinkwrap["packages"][""].pop("devDependencies", None) cached_shrinkwrap["packages"][""].pop("peerDependencies", None) # Manage the dependencies @@ -177,9 +181,16 @@ python npm_do_configure() { dep["integrity"] = _npm_integrity(tarball) if params.get("dev", False): dep["dev"] = True - if "dependencies" not in cached_shrinkwrap: - cached_shrinkwrap["dependencies"] = {} - cached_shrinkwrap["dependencies"][name] = dep + if "devDependencies" not in cached_shrinkwrap["packages"][""]: + cached_shrinkwrap["packages"][""]["devDependencies"] = {} + cached_shrinkwrap["packages"][""]["devDependencies"][name] = pkg['version'] + + else: + if "dependencies" not in cached_shrinkwrap["packages"][""]: + cached_shrinkwrap["packages"][""]["dependencies"] = {} + cached_shrinkwrap["packages"][""]["dependencies"][name] = pkg['version'] + + cached_shrinkwrap["packages"][destsuffix] = dep # Display progress nonlocal progress_done progress_done += 1 @@ -212,7 +223,7 @@ python npm_do_configure() { # Configure the cached manifest file and cached shrinkwrap file def _update_manifest(depkey): for name in orig_manifest.get(depkey, {}): - version = cached_shrinkwrap["dependencies"][name]["version"] + version = cached_shrinkwrap["packages"][""][depkey][name] if depkey not in cached_manifest: cached_manifest[depkey] = {} cached_manifest[depkey][name] = version -- cgit v1.2.3-54-g00ecf