]> code.ossystems Code Review - openembedded-core.git/commitdiff
npm.bbclass: Fix building node modules with npm@5
authorBöszörményi Zoltán <zboszor@pr.hu>
Thu, 1 Feb 2018 13:08:30 +0000 (14:08 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 6 Feb 2018 10:54:34 +0000 (10:54 +0000)
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.

Signed-off-by: Zoltán Böszörményi <zboszor@pr.hu>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/npm.bbclass

index a69bedbb28630f125a6ddcfd5289a6b66b136e24..898a54eb5083c9d635f52b80b760032df74b69e4 100644 (file)
@@ -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