From d38e1e2c2ea4646b34ea6282d3d7620df5b0374b Mon Sep 17 00:00:00 2001 From: Böszörményi Zoltán Date: Thu, 1 Feb 2018 14:08:30 +0100 Subject: npm.bbclass: Fix building node modules with npm@5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit npm cache clear throws an error with npm@5 and suggests to use npm cache verify instead. But our cache is actually empty, so use npm cache clear --force. npm install in the source directory creates symlinks with npm@5. Use a combination of npm pack and npm install module-version.tgz that works the same way with older and new npm versions and is guaranteed to create actual copies instead of directory symlinks. This change allows using nodejs 8.x LTS, tested with 8.9.4. (From OE-Core rev: 2d7d2a460842c8747df17990970f22f4a11f36f6) Signed-off-by: Zoltán Böszörményi Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- meta/classes/npm.bbclass | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'meta/classes/npm.bbclass') diff --git a/meta/classes/npm.bbclass b/meta/classes/npm.bbclass index a69bedbb28..898a54eb50 100644 --- a/meta/classes/npm.bbclass +++ b/meta/classes/npm.bbclass @@ -31,7 +31,7 @@ npm_do_compile() { fi npm set cache ${WORKDIR}/npm_cache # clear cache before every build - npm cache clear + npm cache clear --force # Install pkg into ${S} without going to the registry if [ "${NPM_INSTALL_DEV}" = "1" ]; then npm --arch=${NPM_ARCH} --target_arch=${NPM_ARCH} --no-registry install @@ -45,7 +45,8 @@ npm_do_install() { # be created in this directory export HOME=${WORKDIR} mkdir -p ${NPM_INSTALLDIR}/ - npm install --prefix ${D}${prefix} -g --arch=${NPM_ARCH} --target_arch=${NPM_ARCH} --production --no-registry + npm pack . + npm install --prefix ${D}${prefix} -g --arch=${NPM_ARCH} --target_arch=${NPM_ARCH} --production --no-registry ${PN}-${PV}.tgz if [ -d ${D}${prefix}/etc ] ; then # This will be empty rmdir ${D}${prefix}/etc -- cgit v1.2.3-54-g00ecf