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")) |
