]> code.ossystems Code Review - openembedded-core.git/commitdiff
npm: add target_arch flag to npm
authorBrendan Le Foll <brendan.le.foll@intel.com>
Tue, 24 May 2016 11:12:16 +0000 (12:12 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 30 May 2016 08:30:29 +0000 (09:30 +0100)
npm takes a target_arch flag which needs to be set to do some gyp compilations
correctly. It also doesn't use the same mapping as OE for target arch so a
small function is required to make the mapping work. Function is taken from
meta-nodejs

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/npm.bbclass

index 9843e87350aa7d079e2bc32cca36408e3367fb5d..d0d3d8fa03c42f1898717972842dc457cc9e5f8b 100644 (file)
@@ -3,6 +3,17 @@ S = "${WORKDIR}/npmpkg"
 
 NPM_INSTALLDIR = "${D}${libdir}/node_modules/${PN}"
 
+# function maps arch names to npm arch names
+def npm_oe_arch_map(target_arch, d):
+    import re
+    if   re.match('p(pc|owerpc)(|64)', target_arch): return 'ppc'
+    elif re.match('i.86$', target_arch): return 'ia32'
+    elif re.match('x86_64$', target_arch): return 'x64'
+    elif re.match('arm64$', target_arch): return 'arm'
+    return target_arch
+
+NPM_ARCH ?= "${@npm_oe_arch_map(d.getVar('TARGET_ARCH', True), d)}"
+
 npm_do_compile() {
        # changing the home directory to the working directory, the .npmrc will
        # be created in this directory
@@ -12,7 +23,7 @@ npm_do_compile() {
        # clear cache before every build
        npm cache clear
        # Install pkg into ${S} without going to the registry
-       npm --arch=${TARGET_ARCH} --production --no-registry install
+       npm --arch=${NPM_ARCH} --target_arch=${NPM_ARCH} --production --no-registry install
 }
 
 npm_do_install() {