summaryrefslogtreecommitdiffstats
path: root/meta/classes-recipe/npm.bbclass
diff options
context:
space:
mode:
authorBELOUARGA Mohamed <m.belouarga@technologyandstrategy.com>2023-05-31 00:27:52 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-06-29 11:10:39 +0100
commit186f1ee88d6981e9f4a4a48ff1ee0bd0b719b18b (patch)
treea0ebfc9da0777e212d6b46064a55a796dbaee185 /meta/classes-recipe/npm.bbclass
parent17732f9cb4a4925d6e5419a0122d052ca1d5556a (diff)
downloadpoky-186f1ee88d6981e9f4a4a48ff1ee0bd0b719b18b.tar.gz
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 <m.belouarga@technologyandstrategy.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes-recipe/npm.bbclass')
-rw-r--r--meta/classes-recipe/npm.bbclass21
1 files changed, 16 insertions, 5 deletions
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() {
153 153
154 if has_shrinkwrap_file: 154 if has_shrinkwrap_file:
155 cached_shrinkwrap = copy.deepcopy(orig_shrinkwrap) 155 cached_shrinkwrap = copy.deepcopy(orig_shrinkwrap)
156 cached_shrinkwrap.pop("dependencies", None) 156 for package in orig_shrinkwrap["packages"]:
157 if package != "":
158 cached_shrinkwrap["packages"].pop(package, None)
159 cached_shrinkwrap["packages"][""].pop("dependencies", None)
160 cached_shrinkwrap["packages"][""].pop("devDependencies", None)
157 cached_shrinkwrap["packages"][""].pop("peerDependencies", None) 161 cached_shrinkwrap["packages"][""].pop("peerDependencies", None)
158 162
159 # Manage the dependencies 163 # Manage the dependencies
@@ -177,9 +181,16 @@ python npm_do_configure() {
177 dep["integrity"] = _npm_integrity(tarball) 181 dep["integrity"] = _npm_integrity(tarball)
178 if params.get("dev", False): 182 if params.get("dev", False):
179 dep["dev"] = True 183 dep["dev"] = True
180 if "dependencies" not in cached_shrinkwrap: 184 if "devDependencies" not in cached_shrinkwrap["packages"][""]:
181 cached_shrinkwrap["dependencies"] = {} 185 cached_shrinkwrap["packages"][""]["devDependencies"] = {}
182 cached_shrinkwrap["dependencies"][name] = dep 186 cached_shrinkwrap["packages"][""]["devDependencies"][name] = pkg['version']
187
188 else:
189 if "dependencies" not in cached_shrinkwrap["packages"][""]:
190 cached_shrinkwrap["packages"][""]["dependencies"] = {}
191 cached_shrinkwrap["packages"][""]["dependencies"][name] = pkg['version']
192
193 cached_shrinkwrap["packages"][destsuffix] = dep
183 # Display progress 194 # Display progress
184 nonlocal progress_done 195 nonlocal progress_done
185 progress_done += 1 196 progress_done += 1
@@ -212,7 +223,7 @@ python npm_do_configure() {
212 # Configure the cached manifest file and cached shrinkwrap file 223 # Configure the cached manifest file and cached shrinkwrap file
213 def _update_manifest(depkey): 224 def _update_manifest(depkey):
214 for name in orig_manifest.get(depkey, {}): 225 for name in orig_manifest.get(depkey, {}):
215 version = cached_shrinkwrap["dependencies"][name]["version"] 226 version = cached_shrinkwrap["packages"][""][depkey][name]
216 if depkey not in cached_manifest: 227 if depkey not in cached_manifest:
217 cached_manifest[depkey] = {} 228 cached_manifest[depkey] = {}
218 cached_manifest[depkey][name] = version 229 cached_manifest[depkey][name] = version