diff options
-rw-r--r-- | meta/classes-recipe/npm.bbclass | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/meta/classes-recipe/npm.bbclass b/meta/classes-recipe/npm.bbclass index 639f461a3a..92e59fefce 100644 --- a/meta/classes-recipe/npm.bbclass +++ b/meta/classes-recipe/npm.bbclass | |||
@@ -109,6 +109,7 @@ python npm_do_configure() { | |||
109 | import tempfile | 109 | import tempfile |
110 | from bb.fetch2.npm import NpmEnvironment | 110 | from bb.fetch2.npm import NpmEnvironment |
111 | from bb.fetch2.npm import npm_unpack | 111 | from bb.fetch2.npm import npm_unpack |
112 | from bb.fetch2.npm import npm_package | ||
112 | from bb.fetch2.npmsw import foreach_dependencies | 113 | from bb.fetch2.npmsw import foreach_dependencies |
113 | from bb.progress import OutOfProgressHandler | 114 | from bb.progress import OutOfProgressHandler |
114 | from oe.npm_registry import NpmRegistry | 115 | from oe.npm_registry import NpmRegistry |
@@ -169,6 +170,7 @@ python npm_do_configure() { | |||
169 | if has_shrinkwrap_file: | 170 | if has_shrinkwrap_file: |
170 | cached_shrinkwrap = copy.deepcopy(orig_shrinkwrap) | 171 | cached_shrinkwrap = copy.deepcopy(orig_shrinkwrap) |
171 | cached_shrinkwrap.pop("dependencies", None) | 172 | cached_shrinkwrap.pop("dependencies", None) |
173 | cached_shrinkwrap["packages"][""].pop("peerDependencies", None) | ||
172 | 174 | ||
173 | # Manage the dependencies | 175 | # Manage the dependencies |
174 | progress = OutOfProgressHandler(d, r"^(\d+)/(\d+)$") | 176 | progress = OutOfProgressHandler(d, r"^(\d+)/(\d+)$") |
@@ -203,6 +205,19 @@ python npm_do_configure() { | |||
203 | if has_shrinkwrap_file: | 205 | if has_shrinkwrap_file: |
204 | foreach_dependencies(orig_shrinkwrap, _count_dependency, dev) | 206 | foreach_dependencies(orig_shrinkwrap, _count_dependency, dev) |
205 | foreach_dependencies(orig_shrinkwrap, _cache_dependency, dev) | 207 | foreach_dependencies(orig_shrinkwrap, _cache_dependency, dev) |
208 | |||
209 | # Manage Peer Dependencies | ||
210 | if has_shrinkwrap_file: | ||
211 | packages = orig_shrinkwrap.get("packages", {}) | ||
212 | peer_deps = packages.get("", {}).get("peerDependencies", {}) | ||
213 | package_runtime_dependencies = d.getVar("RDEPENDS:%s" % d.getVar("PN")) | ||
214 | |||
215 | for peer_dep in peer_deps: | ||
216 | peer_dep_yocto_name = npm_package(peer_dep) | ||
217 | if peer_dep_yocto_name not in package_runtime_dependencies: | ||
218 | bb.warn(peer_dep + " is a peer dependencie that is not in RDEPENDS variable. " + | ||
219 | "Please add this peer dependencie to the RDEPENDS variable as %s and generate its recipe with devtool" | ||
220 | % peer_dep_yocto_name) | ||
206 | 221 | ||
207 | # Configure the main package | 222 | # Configure the main package |
208 | with tempfile.TemporaryDirectory() as tmpdir: | 223 | with tempfile.TemporaryDirectory() as tmpdir: |
@@ -279,6 +294,9 @@ python npm_do_compile() { | |||
279 | args.append(("target_arch", d.getVar("NPM_ARCH"))) | 294 | args.append(("target_arch", d.getVar("NPM_ARCH"))) |
280 | args.append(("build-from-source", "true")) | 295 | args.append(("build-from-source", "true")) |
281 | 296 | ||
297 | # Don't install peer dependencies as they should be in RDEPENDS variable | ||
298 | args.append(("legacy-peer-deps", "true")) | ||
299 | |||
282 | # Pack and install the main package | 300 | # Pack and install the main package |
283 | (tarball, _) = npm_pack(env, d.getVar("NPM_PACKAGE"), tmpdir) | 301 | (tarball, _) = npm_pack(env, d.getVar("NPM_PACKAGE"), tmpdir) |
284 | cmd = "npm install %s %s" % (shlex.quote(tarball), d.getVar("EXTRA_OENPM")) | 302 | cmd = "npm install %s %s" % (shlex.quote(tarball), d.getVar("EXTRA_OENPM")) |