package/nodejs: Fixes for node-pre-gyp
authorMartin Bark <martin@barkynet.com>
Thu, 2 Jul 2015 09:43:26 +0000 (10:43 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sat, 4 Jul 2015 12:38:33 +0000 (14:38 +0200)
Many packages use node-pre-gyp as a way of deploying precompiled binary
dependencies with fall back to compilation for other targets.  Currently
installing node modules that use node-pre-gyp can fail to use the correct
binary for the target.  This patch fixes this issue by correctly
configuring node-pre-gyp.

Firstly, node-gyp uses the option --arch to determine its target
architecture (which is already set correctly), however, node-pre-gyp uses
--target-arch.  Without this set node.js packages that uses node-pre-gyp
will pick the wrong target architecture.

Secondly, the use of precompiled binary packages is not desirable due to
potential security and licensing issues.  To solve this we use the
--build-from-source option to force node-pre-gyp to always build the C++
code.

This patch passes npm_config_target_arch and npm_config_build_from_source
to npm which causes --target-arch and --build-from-source to be passed to
node-pre-gyp.

I have tested this using the node.js package serialport which now
successfully builds and runs.

Signed-off-by: Martin Bark <martin@barkynet.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/nodejs/nodejs.mk

index 0b3f8a51c248a8bddc8327c4a3876e1726ca7048..156b151bee581a46c658baa735fd9f198e3827d0 100644 (file)
@@ -107,6 +107,8 @@ define NODEJS_INSTALL_MODULES
                $(TARGET_CONFIGURE_OPTS) \
                LD="$(TARGET_CXX)" \
                npm_config_arch=$(NODEJS_CPU) \
+               npm_config_target_arch=$(NODEJS_CPU) \
+               npm_config_build_from_source=true \
                npm_config_nodedir=$(BUILD_DIR)/nodejs-$(NODEJS_VERSION) \
                $(HOST_DIR)/usr/bin/npm install \
                $(NODEJS_MODULES_LIST) \