mirror of
https://git.yoctoproject.org/poky
synced 2026-04-20 11:28:58 +00:00
npm: use npm_registry to cache package
With nodejs 16, the simple 'npm cache add' approach does not work anymore because its fetcher implementation downloads also meta information from the registry. We have to generate these information and add them to the cache. There is no direct support in 'npm' for task so we have to implement it manually. This implementation consists of a openembedded python module (in oe-core) and a nodejs version specific helper (in oe-meta). (From OE-Core rev: 019b9c341d539939098962c228c1fd5c99331312) Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
6ca69f66ba
commit
ccfa4132f9
@@ -19,7 +19,7 @@
|
||||
|
||||
inherit python3native
|
||||
|
||||
DEPENDS:prepend = "nodejs-native "
|
||||
DEPENDS:prepend = "nodejs-native nodejs-oe-cache-native "
|
||||
RDEPENDS:${PN}:append:class-target = " nodejs"
|
||||
|
||||
EXTRA_OENPM = ""
|
||||
@@ -46,6 +46,7 @@ NPM_ARCH ?= "${@npm_target_arch_map(d.getVar("TARGET_ARCH"))}"
|
||||
NPM_PACKAGE = "${WORKDIR}/npm-package"
|
||||
NPM_CACHE = "${WORKDIR}/npm-cache"
|
||||
NPM_BUILD = "${WORKDIR}/npm-build"
|
||||
NPM_REGISTRY = "${WORKDIR}/npm-registry"
|
||||
|
||||
def npm_global_configs(d):
|
||||
"""Get the npm global configuration"""
|
||||
@@ -112,16 +113,18 @@ python npm_do_configure() {
|
||||
from bb.fetch2.npm import npm_unpack
|
||||
from bb.fetch2.npmsw import foreach_dependencies
|
||||
from bb.progress import OutOfProgressHandler
|
||||
from oe.npm_registry import NpmRegistry
|
||||
|
||||
bb.utils.remove(d.getVar("NPM_CACHE"), recurse=True)
|
||||
bb.utils.remove(d.getVar("NPM_PACKAGE"), recurse=True)
|
||||
|
||||
env = NpmEnvironment(d, configs=npm_global_configs(d))
|
||||
registry = NpmRegistry(d.getVar('NPM_REGISTRY'), d.getVar('NPM_CACHE'))
|
||||
|
||||
def _npm_cache_add(tarball):
|
||||
"""Run 'npm cache add' for a specified tarball"""
|
||||
cmd = "npm cache add %s" % shlex.quote(tarball)
|
||||
env.run(cmd)
|
||||
def _npm_cache_add(tarball, pkg):
|
||||
"""Add tarball to local registry and register it in the
|
||||
cache"""
|
||||
registry.add_pkg(tarball, pkg)
|
||||
|
||||
def _npm_integrity(tarball):
|
||||
"""Return the npm integrity of a specified tarball"""
|
||||
@@ -185,7 +188,7 @@ python npm_do_configure() {
|
||||
# Add the dependency to the npm cache
|
||||
destdir = os.path.join(d.getVar("S"), destsuffix)
|
||||
(tarball, pkg) = npm_pack(env, destdir, tmpdir)
|
||||
_npm_cache_add(tarball)
|
||||
_npm_cache_add(tarball, pkg)
|
||||
# Add its signature to the cached shrinkwrap
|
||||
dep = _npmsw_dependency_dict(cached_shrinkwrap, deptree)
|
||||
dep["version"] = pkg['version']
|
||||
|
||||
Reference in New Issue
Block a user