diff options
author | BELOUARGA Mohamed <m.belouarga@technologyandstrategy.com> | 2023-05-31 00:27:52 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-06-29 11:10:39 +0100 |
commit | 186f1ee88d6981e9f4a4a48ff1ee0bd0b719b18b (patch) | |
tree | a0ebfc9da0777e212d6b46064a55a796dbaee185 | |
parent | 17732f9cb4a4925d6e5419a0122d052ca1d5556a (diff) | |
download | poky-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>
-rw-r--r-- | meta/classes-recipe/npm.bbclass | 21 |
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 |