All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version
@ 2015-07-02  9:43 Martin Bark
  2015-07-02  9:43 ` [Buildroot] [v4 2/4] package/nodejs: symlink /usr/lib/node_modules/.bin/* to /usr/bin Martin Bark
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Martin Bark @ 2015-07-02  9:43 UTC (permalink / raw)
  To: buildroot

The version of the V8 JavaScript engine used by node.js v0.12.5 requires
at least an ARMv6 architecture with VFPv2.  For this reason v0.10.39
remains the default for ARMv5 targets, all other targets now default to
v0.12.5.

Signed-off-by: Martin Bark <martin@barkynet.com>

---
Changes v3 -> v4
 - Added back depends on !BR2_ARM_CPU_ARMV5 that was removed by mistake
   (Suggested by Yann E. MORIN)

Changes v2 -> v3
 - Corrected default node.js version on ARMv5 (Suggested by Yann E. MORIN)
 - Removed stray empty line (Suggested by Yann E. MORIN)
 - Corrected Signed-off-by in 0.12.5 patches (Suggested by Yann E. MORIN)
 - Improved commit message

Changes v1 -> v2
 - Added depends on !BR2_ARM_CPU_ARMV5
 - Updated from node.js v0.12.4 to v0.12.5
---
 ...01-Remove-dependency-on-Python-bz2-module.patch | 39 ++++++++++++++
 .../0002-gyp-force-link-command-to-use-CXX.patch   | 27 ++++++++++
 ...hon-variable-instead-of-hardcoding-Python.patch | 63 ++++++++++++++++++++++
 ...4-fix-build-error-without-OpenSSL-support.patch | 46 ++++++++++++++++
 package/nodejs/Config.in                           |  9 +++-
 package/nodejs/nodejs.hash                         |  3 ++
 6 files changed, 186 insertions(+), 1 deletion(-)
 create mode 100644 package/nodejs/0.12.5/0001-Remove-dependency-on-Python-bz2-module.patch
 create mode 100644 package/nodejs/0.12.5/0002-gyp-force-link-command-to-use-CXX.patch
 create mode 100644 package/nodejs/0.12.5/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch
 create mode 100644 package/nodejs/0.12.5/0004-fix-build-error-without-OpenSSL-support.patch

diff --git a/package/nodejs/0.12.5/0001-Remove-dependency-on-Python-bz2-module.patch b/package/nodejs/0.12.5/0001-Remove-dependency-on-Python-bz2-module.patch
new file mode 100644
index 0000000..24a78a4
--- /dev/null
+++ b/package/nodejs/0.12.5/0001-Remove-dependency-on-Python-bz2-module.patch
@@ -0,0 +1,39 @@
+From 3d4817c152d6f3afddcc699949c4d1664da91e2b Mon Sep 17 00:00:00 2001
+From: Martin Bark <martin@barkynet.com>
+Date: Tue, 30 Jun 2015 09:43:11 +0100
+Subject: [PATCH 1/4] Remove dependency on Python bz2 module
+
+The Python bz2 module is only needed in certain cases, so only import
+it when needed. In the normal nodejs build, this allows to remove the
+dependency on this module.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+[Martin: adapt to 0.12.5]
+Signed-off-by: Martin Bark <martin@barkynet.com>
+---
+ deps/v8/tools/js2c.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/deps/v8/tools/js2c.py b/deps/v8/tools/js2c.py
+index 77485f6..371caf5 100755
+--- a/deps/v8/tools/js2c.py
++++ b/deps/v8/tools/js2c.py
+@@ -34,7 +34,6 @@
+ import os, re, sys, string
+ import optparse
+ import jsmin
+-import bz2
+ import textwrap
+ 
+ 
+@@ -492,6 +491,7 @@ def CompressMaybe(sources, compression_type):
+   if compression_type == "off":
+     return sources_bytes
+   elif compression_type == "bz2":
++    import bz2
+     return bz2.compress(sources_bytes)
+   else:
+     raise Error("Unknown compression type %s." % compression_type)
+-- 
+2.1.4
+
diff --git a/package/nodejs/0.12.5/0002-gyp-force-link-command-to-use-CXX.patch b/package/nodejs/0.12.5/0002-gyp-force-link-command-to-use-CXX.patch
new file mode 100644
index 0000000..3b007f1
--- /dev/null
+++ b/package/nodejs/0.12.5/0002-gyp-force-link-command-to-use-CXX.patch
@@ -0,0 +1,27 @@
+From 90a3c113c19ec615249ab880c45c6c0a8d369098 Mon Sep 17 00:00:00 2001
+From: Martin Bark <martin@barkynet.com>
+Date: Tue, 30 Jun 2015 09:43:47 +0100
+Subject: [PATCH 2/4] gyp: force link command to use CXX
+
+Signed-off-by: Samuel Martin <s.martin49@gmail.com>
+Signed-off-by: Martin Bark <martin@barkynet.com>
+---
+ tools/gyp/pylib/gyp/generator/make.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/gyp/pylib/gyp/generator/make.py b/tools/gyp/pylib/gyp/generator/make.py
+index b88a433..0a1f2e0 100644
+--- a/tools/gyp/pylib/gyp/generator/make.py
++++ b/tools/gyp/pylib/gyp/generator/make.py
+@@ -141,7 +141,7 @@ cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^)
+ # special "figure out circular dependencies" flags around the entire
+ # input list during linking.
+ quiet_cmd_link = LINK($(TOOLSET)) $@
+-cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--start-group $(LD_INPUTS) -Wl,--end-group $(LIBS)
++cmd_link = $(CXX.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--start-group $(LD_INPUTS) -Wl,--end-group $(LIBS)
+ 
+ # We support two kinds of shared objects (.so):
+ # 1) shared_library, which is just bundling together many dependent libraries
+-- 
+2.1.4
+
diff --git a/package/nodejs/0.12.5/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch b/package/nodejs/0.12.5/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch
new file mode 100644
index 0000000..37ceda3
--- /dev/null
+++ b/package/nodejs/0.12.5/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch
@@ -0,0 +1,63 @@
+From 4a48c65921b0f05b621aef5b902b6aa54811ad7a Mon Sep 17 00:00:00 2001
+From: Martin Bark <martin@barkynet.com>
+Date: Tue, 30 Jun 2015 09:44:33 +0100
+Subject: [PATCH 3/4] Use a python variable instead of hardcoding Python
+
+The nodejs build system uses python in a number of locations. However,
+there are some locations where it hardcodes 'python' as the Python
+interpreter. However, this causes problems when we need to use python2
+instead of just python.
+
+This patch fixes that by using the python variable already in place in
+the nodejs build system.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+[Martin: adapt to 0.12.5]
+Signed-off-by: Martin Bark <martin@barkynet.com>
+---
+ deps/v8/tools/gyp/v8.gyp | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/deps/v8/tools/gyp/v8.gyp b/deps/v8/tools/gyp/v8.gyp
+index c703155..06c0b2b 100644
+--- a/deps/v8/tools/gyp/v8.gyp
++++ b/deps/v8/tools/gyp/v8.gyp
+@@ -1353,7 +1353,7 @@
+             'outputs': [
+               '<(PRODUCT_DIR)/natives_blob.bin',
+             ],
+-            'action': ['python', '<@(_inputs)', '<@(_outputs)'],
++            'action': ['<(python)', '<@(_inputs)', '<@(_outputs)'],
+           }],
+         }],
+         ['want_separate_host_toolset==1', {
+@@ -1435,7 +1435,7 @@
+             '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
+           ],
+           'action': [
+-            'python',
++            '<(python)',
+             '../../tools/js2c.py',
+             '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
+             'CORE',
+@@ -1462,7 +1462,7 @@
+             '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
+           ],
+           'action': [
+-            'python',
++            '<(python)',
+             '../../tools/js2c.py',
+             '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
+             'EXPERIMENTAL',
+@@ -1500,7 +1500,7 @@
+               '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
+             ],
+             'action': [
+-              'python',
++              '<(python)',
+               '../../tools/gen-postmortem-metadata.py',
+               '<@(_outputs)',
+               '<@(heapobject_files)'
+-- 
+2.1.4
+
diff --git a/package/nodejs/0.12.5/0004-fix-build-error-without-OpenSSL-support.patch b/package/nodejs/0.12.5/0004-fix-build-error-without-OpenSSL-support.patch
new file mode 100644
index 0000000..ccb29b1
--- /dev/null
+++ b/package/nodejs/0.12.5/0004-fix-build-error-without-OpenSSL-support.patch
@@ -0,0 +1,46 @@
+From 6bfa497dceb83de5257c64da59fbcf6a32d83305 Mon Sep 17 00:00:00 2001
+From: Martin Bark <martin@barkynet.com>
+Date: Tue, 30 Jun 2015 09:45:07 +0100
+Subject: [PATCH 4/4] fix build error without OpenSSL support
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: J?rg Krause <jkrause@posteo.de>
+[Martin: adapt to 0.12.5]
+Signed-off-by: Martin Bark <martin@barkynet.com>
+---
+ src/node.cc | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/node.cc b/src/node.cc
+index e669706..d43b791 100644
+--- a/src/node.cc
++++ b/src/node.cc
+@@ -2934,8 +2934,10 @@ static void PrintHelp() {
+          "                       present.\n"
+ #endif
+ #endif
++#if HAVE_OPENSSL
+          "  --enable-ssl2        enable ssl2\n"
+          "  --enable-ssl3        enable ssl3\n"
++#endif
+          "\n"
+          "Environment variables:\n"
+ #ifdef _WIN32
+@@ -3003,10 +3005,12 @@ static void ParseArgs(int* argc,
+     } else if (strcmp(arg, "--version") == 0 || strcmp(arg, "-v") == 0) {
+       printf("%s\n", NODE_VERSION);
+       exit(0);
++#if HAVE_OPENSSL
+     } else if (strcmp(arg, "--enable-ssl2") == 0) {
+       SSL2_ENABLE = true;
+     } else if (strcmp(arg, "--enable-ssl3") == 0) {
+       SSL3_ENABLE = true;
++#endif
+     } else if (strcmp(arg, "--help") == 0 || strcmp(arg, "-h") == 0) {
+       PrintHelp();
+       exit(0);
+-- 
+2.1.4
+
diff --git a/package/nodejs/Config.in b/package/nodejs/Config.in
index 9a39385..580d9a2 100644
--- a/package/nodejs/Config.in
+++ b/package/nodejs/Config.in
@@ -24,18 +24,25 @@ if BR2_PACKAGE_NODEJS
 
 choice
 	prompt "Node.js version"
-	default BR2_BR2_PACKAGE_NODEJS_0_10_39
+	default BR2_BR2_PACKAGE_NODEJS_0_10_39 if BR2_ARM_CPU_ARMV5
+	default BR2_BR2_PACKAGE_NODEJS_0_12_5
 	help
 	  Select the version of Node.js you wish to use.
 
 config BR2_BR2_PACKAGE_NODEJS_0_10_39
 	bool "v0.10.39"
 
+# V8 included with v0.12.5 requires at least ARMv6
+config BR2_BR2_PACKAGE_NODEJS_0_12_5
+	bool "v0.12.5"
+	depends on !BR2_ARM_CPU_ARMV5
+
 endchoice
 
 config BR2_PACKAGE_NODEJS_VERSION_STRING
 	string
 	default "0.10.39"	if BR2_BR2_PACKAGE_NODEJS_0_10_39
+	default "0.12.5"	if BR2_BR2_PACKAGE_NODEJS_0_12_5
 
 menu "Module Selection"
 
diff --git a/package/nodejs/nodejs.hash b/package/nodejs/nodejs.hash
index bc1f15f..816d602 100644
--- a/package/nodejs/nodejs.hash
+++ b/package/nodejs/nodejs.hash
@@ -1,2 +1,5 @@
 # From upstream URL: http://nodejs.org/dist/v0.10.39/SHASUMS256.txt
 sha256	68f8d8f9515c4e77e2a06034b742e19e9848c1fee5bcadedc1d68f3e4302df37  node-v0.10.39.tar.gz
+
+# From upstream URL: http://nodejs.org/dist/v0.12.5/SHASUMS256.txt
+sha256	4bc1e25f4c62ac65324d3cf4aa9de2d801cd708757c3567b6ad2ced7df30cdd2  node-v0.12.5.tar.gz
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [v4 2/4] package/nodejs: symlink /usr/lib/node_modules/.bin/* to /usr/bin
  2015-07-02  9:43 [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version Martin Bark
@ 2015-07-02  9:43 ` Martin Bark
  2015-07-02  9:43 ` [Buildroot] [v4 3/4] package/nodejs: Fixes for node-pre-gyp Martin Bark
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Martin Bark @ 2015-07-02  9:43 UTC (permalink / raw)
  To: buildroot

This patch symlinks all executables in /usr/lib/node_modules/.bin
to /usr/bin so that node.js modules installed using
BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL are accessible from the command line.

Signed-off-by: Martin Bark <martin@barkynet.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

---
Chnages v3 -> v4
 - Added Reviewed-by: Yann E. MORIN

Changes v2 -> v3
 - Create symlinks instead of setting PATH (Suggested by Yann E. MORIN)

Changes v1 -> v2
 - Improved commit message
---
 package/nodejs/nodejs.mk | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
index 59e03b0..0b3f8a5 100644
--- a/package/nodejs/nodejs.mk
+++ b/package/nodejs/nodejs.mk
@@ -111,6 +111,14 @@ define NODEJS_INSTALL_MODULES
 		$(HOST_DIR)/usr/bin/npm install \
 		$(NODEJS_MODULES_LIST) \
 	)
+
+	# Symlink all executables in $(TARGET_DIR)/usr/lib/node_modules/.bin to
+	# $(TARGET_DIR)/usr/bin so they are accessible from the command line
+	cd $(TARGET_DIR)/usr/bin; \
+	for f in ../../usr/lib/node_modules/.bin/*; do \
+		[ -f "$${f}" -a -x "$${f}" ] || continue; \
+		ln -sf "$${f}" "$${f##*/}" || exit 1; \
+	done
 endef
 endif
 
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [v4 3/4] package/nodejs: Fixes for node-pre-gyp
  2015-07-02  9:43 [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version Martin Bark
  2015-07-02  9:43 ` [Buildroot] [v4 2/4] package/nodejs: symlink /usr/lib/node_modules/.bin/* to /usr/bin Martin Bark
@ 2015-07-02  9:43 ` Martin Bark
  2015-07-02 21:54   ` Yann E. MORIN
  2015-07-02  9:43 ` [Buildroot] [v4 4/4] package/nodejs: Define NPM command for other packages to use Martin Bark
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Martin Bark @ 2015-07-02  9:43 UTC (permalink / raw)
  To: buildroot

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>

---
Changes v3 -> v4
 - Force always building from source (Suggested by Yann E. MORIN)
 - Improved commit message

Changes v2 -> v3
 - Adjusted patch order so this is before the new definition of $(NPM)

Changes v1 -> v2
 - No changes, new in v2
---
 package/nodejs/nodejs.mk | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
index 0b3f8a5..156b151 100644
--- a/package/nodejs/nodejs.mk
+++ b/package/nodejs/nodejs.mk
@@ -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) \
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [v4 4/4] package/nodejs: Define NPM command for other packages to use
  2015-07-02  9:43 [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version Martin Bark
  2015-07-02  9:43 ` [Buildroot] [v4 2/4] package/nodejs: symlink /usr/lib/node_modules/.bin/* to /usr/bin Martin Bark
  2015-07-02  9:43 ` [Buildroot] [v4 3/4] package/nodejs: Fixes for node-pre-gyp Martin Bark
@ 2015-07-02  9:43 ` Martin Bark
  2015-07-02 21:51 ` [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version Yann E. MORIN
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Martin Bark @ 2015-07-02  9:43 UTC (permalink / raw)
  To: buildroot

Other nodejs-related packages will need to call npm with the same set of
arguments as is currently used by the nodejs package itself.

To avoid duplicating this code, set the NPM variable so those packages can
re-use it.

Signed-off-by: Martin Bark <martin@barkynet.com>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

---
Note: currently, this is only used in the nodejs package itself. I
plan on sending new nodejs-related packages that will use this, like
a pm2 (https://github.com/Unitech/pm2) package which I have tested
successfully using this $(NPM).

Changes v3 -> v4
 - Merged in npm_config_build_from_source=true added by previous patch
 - Added Acked-by: Yann E. MORIN

Changes v2 -> v3
 - Improved commit message (Suggested by Yann E. MORIN)

Changes v1 -> v2
 - No changes
---
 package/nodejs/nodejs.mk | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
index 156b151..414f3f3 100644
--- a/package/nodejs/nodejs.mk
+++ b/package/nodejs/nodejs.mk
@@ -95,6 +95,15 @@ NODEJS_MODULES_LIST= $(call qstrip,\
 	$(if $(BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT),coffee-script) \
 	$(BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL))
 
+# Define NPM for other packages to use
+NPM = $(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
+
 #
 # We can only call NPM if there's something to install.
 #
@@ -104,14 +113,7 @@ define NODEJS_INSTALL_MODULES
 	# npm install call below and setting npm_config_rollback=false can both
 	# help in diagnosing the problem.
 	(cd $(TARGET_DIR)/usr/lib && mkdir -p node_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) \
+		$(NPM) install $(NODEJS_MODULES_LIST) \
 	)
 
 	# Symlink all executables in $(TARGET_DIR)/usr/lib/node_modules/.bin to
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version
  2015-07-02  9:43 [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version Martin Bark
                   ` (2 preceding siblings ...)
  2015-07-02  9:43 ` [Buildroot] [v4 4/4] package/nodejs: Define NPM command for other packages to use Martin Bark
@ 2015-07-02 21:51 ` Yann E. MORIN
  2015-07-04 12:56 ` Thomas Petazzoni
  2015-10-11 19:25 ` Yann E. MORIN
  5 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2015-07-02 21:51 UTC (permalink / raw)
  To: buildroot

Martin, All,

On 2015-07-02 10:43 +0100, Martin Bark spake thusly:
> The version of the V8 JavaScript engine used by node.js v0.12.5 requires
> at least an ARMv6 architecture with VFPv2.  For this reason v0.10.39
> remains the default for ARMv5 targets, all other targets now default to
> v0.12.5.
> 
> Signed-off-by: Martin Bark <martin@barkynet.com>

Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

This time for good I hope. ;-)

Regards,
Yann E. MORIN.

> ---
> Changes v3 -> v4
>  - Added back depends on !BR2_ARM_CPU_ARMV5 that was removed by mistake
>    (Suggested by Yann E. MORIN)
> 
> Changes v2 -> v3
>  - Corrected default node.js version on ARMv5 (Suggested by Yann E. MORIN)
>  - Removed stray empty line (Suggested by Yann E. MORIN)
>  - Corrected Signed-off-by in 0.12.5 patches (Suggested by Yann E. MORIN)
>  - Improved commit message
> 
> Changes v1 -> v2
>  - Added depends on !BR2_ARM_CPU_ARMV5
>  - Updated from node.js v0.12.4 to v0.12.5
> ---
>  ...01-Remove-dependency-on-Python-bz2-module.patch | 39 ++++++++++++++
>  .../0002-gyp-force-link-command-to-use-CXX.patch   | 27 ++++++++++
>  ...hon-variable-instead-of-hardcoding-Python.patch | 63 ++++++++++++++++++++++
>  ...4-fix-build-error-without-OpenSSL-support.patch | 46 ++++++++++++++++
>  package/nodejs/Config.in                           |  9 +++-
>  package/nodejs/nodejs.hash                         |  3 ++
>  6 files changed, 186 insertions(+), 1 deletion(-)
>  create mode 100644 package/nodejs/0.12.5/0001-Remove-dependency-on-Python-bz2-module.patch
>  create mode 100644 package/nodejs/0.12.5/0002-gyp-force-link-command-to-use-CXX.patch
>  create mode 100644 package/nodejs/0.12.5/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch
>  create mode 100644 package/nodejs/0.12.5/0004-fix-build-error-without-OpenSSL-support.patch
> 
> diff --git a/package/nodejs/0.12.5/0001-Remove-dependency-on-Python-bz2-module.patch b/package/nodejs/0.12.5/0001-Remove-dependency-on-Python-bz2-module.patch
> new file mode 100644
> index 0000000..24a78a4
> --- /dev/null
> +++ b/package/nodejs/0.12.5/0001-Remove-dependency-on-Python-bz2-module.patch
> @@ -0,0 +1,39 @@
> +From 3d4817c152d6f3afddcc699949c4d1664da91e2b Mon Sep 17 00:00:00 2001
> +From: Martin Bark <martin@barkynet.com>
> +Date: Tue, 30 Jun 2015 09:43:11 +0100
> +Subject: [PATCH 1/4] Remove dependency on Python bz2 module
> +
> +The Python bz2 module is only needed in certain cases, so only import
> +it when needed. In the normal nodejs build, this allows to remove the
> +dependency on this module.
> +
> +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> +[Martin: adapt to 0.12.5]
> +Signed-off-by: Martin Bark <martin@barkynet.com>
> +---
> + deps/v8/tools/js2c.py | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/deps/v8/tools/js2c.py b/deps/v8/tools/js2c.py
> +index 77485f6..371caf5 100755
> +--- a/deps/v8/tools/js2c.py
> ++++ b/deps/v8/tools/js2c.py
> +@@ -34,7 +34,6 @@
> + import os, re, sys, string
> + import optparse
> + import jsmin
> +-import bz2
> + import textwrap
> + 
> + 
> +@@ -492,6 +491,7 @@ def CompressMaybe(sources, compression_type):
> +   if compression_type == "off":
> +     return sources_bytes
> +   elif compression_type == "bz2":
> ++    import bz2
> +     return bz2.compress(sources_bytes)
> +   else:
> +     raise Error("Unknown compression type %s." % compression_type)
> +-- 
> +2.1.4
> +
> diff --git a/package/nodejs/0.12.5/0002-gyp-force-link-command-to-use-CXX.patch b/package/nodejs/0.12.5/0002-gyp-force-link-command-to-use-CXX.patch
> new file mode 100644
> index 0000000..3b007f1
> --- /dev/null
> +++ b/package/nodejs/0.12.5/0002-gyp-force-link-command-to-use-CXX.patch
> @@ -0,0 +1,27 @@
> +From 90a3c113c19ec615249ab880c45c6c0a8d369098 Mon Sep 17 00:00:00 2001
> +From: Martin Bark <martin@barkynet.com>
> +Date: Tue, 30 Jun 2015 09:43:47 +0100
> +Subject: [PATCH 2/4] gyp: force link command to use CXX
> +
> +Signed-off-by: Samuel Martin <s.martin49@gmail.com>
> +Signed-off-by: Martin Bark <martin@barkynet.com>
> +---
> + tools/gyp/pylib/gyp/generator/make.py | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/tools/gyp/pylib/gyp/generator/make.py b/tools/gyp/pylib/gyp/generator/make.py
> +index b88a433..0a1f2e0 100644
> +--- a/tools/gyp/pylib/gyp/generator/make.py
> ++++ b/tools/gyp/pylib/gyp/generator/make.py
> +@@ -141,7 +141,7 @@ cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^)
> + # special "figure out circular dependencies" flags around the entire
> + # input list during linking.
> + quiet_cmd_link = LINK($(TOOLSET)) $@
> +-cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--start-group $(LD_INPUTS) -Wl,--end-group $(LIBS)
> ++cmd_link = $(CXX.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--start-group $(LD_INPUTS) -Wl,--end-group $(LIBS)
> + 
> + # We support two kinds of shared objects (.so):
> + # 1) shared_library, which is just bundling together many dependent libraries
> +-- 
> +2.1.4
> +
> diff --git a/package/nodejs/0.12.5/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch b/package/nodejs/0.12.5/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch
> new file mode 100644
> index 0000000..37ceda3
> --- /dev/null
> +++ b/package/nodejs/0.12.5/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch
> @@ -0,0 +1,63 @@
> +From 4a48c65921b0f05b621aef5b902b6aa54811ad7a Mon Sep 17 00:00:00 2001
> +From: Martin Bark <martin@barkynet.com>
> +Date: Tue, 30 Jun 2015 09:44:33 +0100
> +Subject: [PATCH 3/4] Use a python variable instead of hardcoding Python
> +
> +The nodejs build system uses python in a number of locations. However,
> +there are some locations where it hardcodes 'python' as the Python
> +interpreter. However, this causes problems when we need to use python2
> +instead of just python.
> +
> +This patch fixes that by using the python variable already in place in
> +the nodejs build system.
> +
> +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> +[Martin: adapt to 0.12.5]
> +Signed-off-by: Martin Bark <martin@barkynet.com>
> +---
> + deps/v8/tools/gyp/v8.gyp | 8 ++++----
> + 1 file changed, 4 insertions(+), 4 deletions(-)
> +
> +diff --git a/deps/v8/tools/gyp/v8.gyp b/deps/v8/tools/gyp/v8.gyp
> +index c703155..06c0b2b 100644
> +--- a/deps/v8/tools/gyp/v8.gyp
> ++++ b/deps/v8/tools/gyp/v8.gyp
> +@@ -1353,7 +1353,7 @@
> +             'outputs': [
> +               '<(PRODUCT_DIR)/natives_blob.bin',
> +             ],
> +-            'action': ['python', '<@(_inputs)', '<@(_outputs)'],
> ++            'action': ['<(python)', '<@(_inputs)', '<@(_outputs)'],
> +           }],
> +         }],
> +         ['want_separate_host_toolset==1', {
> +@@ -1435,7 +1435,7 @@
> +             '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
> +           ],
> +           'action': [
> +-            'python',
> ++            '<(python)',
> +             '../../tools/js2c.py',
> +             '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
> +             'CORE',
> +@@ -1462,7 +1462,7 @@
> +             '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
> +           ],
> +           'action': [
> +-            'python',
> ++            '<(python)',
> +             '../../tools/js2c.py',
> +             '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
> +             'EXPERIMENTAL',
> +@@ -1500,7 +1500,7 @@
> +               '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
> +             ],
> +             'action': [
> +-              'python',
> ++              '<(python)',
> +               '../../tools/gen-postmortem-metadata.py',
> +               '<@(_outputs)',
> +               '<@(heapobject_files)'
> +-- 
> +2.1.4
> +
> diff --git a/package/nodejs/0.12.5/0004-fix-build-error-without-OpenSSL-support.patch b/package/nodejs/0.12.5/0004-fix-build-error-without-OpenSSL-support.patch
> new file mode 100644
> index 0000000..ccb29b1
> --- /dev/null
> +++ b/package/nodejs/0.12.5/0004-fix-build-error-without-OpenSSL-support.patch
> @@ -0,0 +1,46 @@
> +From 6bfa497dceb83de5257c64da59fbcf6a32d83305 Mon Sep 17 00:00:00 2001
> +From: Martin Bark <martin@barkynet.com>
> +Date: Tue, 30 Jun 2015 09:45:07 +0100
> +Subject: [PATCH 4/4] fix build error without OpenSSL support
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +Signed-off-by: J?rg Krause <jkrause@posteo.de>
> +[Martin: adapt to 0.12.5]
> +Signed-off-by: Martin Bark <martin@barkynet.com>
> +---
> + src/node.cc | 4 ++++
> + 1 file changed, 4 insertions(+)
> +
> +diff --git a/src/node.cc b/src/node.cc
> +index e669706..d43b791 100644
> +--- a/src/node.cc
> ++++ b/src/node.cc
> +@@ -2934,8 +2934,10 @@ static void PrintHelp() {
> +          "                       present.\n"
> + #endif
> + #endif
> ++#if HAVE_OPENSSL
> +          "  --enable-ssl2        enable ssl2\n"
> +          "  --enable-ssl3        enable ssl3\n"
> ++#endif
> +          "\n"
> +          "Environment variables:\n"
> + #ifdef _WIN32
> +@@ -3003,10 +3005,12 @@ static void ParseArgs(int* argc,
> +     } else if (strcmp(arg, "--version") == 0 || strcmp(arg, "-v") == 0) {
> +       printf("%s\n", NODE_VERSION);
> +       exit(0);
> ++#if HAVE_OPENSSL
> +     } else if (strcmp(arg, "--enable-ssl2") == 0) {
> +       SSL2_ENABLE = true;
> +     } else if (strcmp(arg, "--enable-ssl3") == 0) {
> +       SSL3_ENABLE = true;
> ++#endif
> +     } else if (strcmp(arg, "--help") == 0 || strcmp(arg, "-h") == 0) {
> +       PrintHelp();
> +       exit(0);
> +-- 
> +2.1.4
> +
> diff --git a/package/nodejs/Config.in b/package/nodejs/Config.in
> index 9a39385..580d9a2 100644
> --- a/package/nodejs/Config.in
> +++ b/package/nodejs/Config.in
> @@ -24,18 +24,25 @@ if BR2_PACKAGE_NODEJS
>  
>  choice
>  	prompt "Node.js version"
> -	default BR2_BR2_PACKAGE_NODEJS_0_10_39
> +	default BR2_BR2_PACKAGE_NODEJS_0_10_39 if BR2_ARM_CPU_ARMV5
> +	default BR2_BR2_PACKAGE_NODEJS_0_12_5
>  	help
>  	  Select the version of Node.js you wish to use.
>  
>  config BR2_BR2_PACKAGE_NODEJS_0_10_39
>  	bool "v0.10.39"
>  
> +# V8 included with v0.12.5 requires at least ARMv6
> +config BR2_BR2_PACKAGE_NODEJS_0_12_5
> +	bool "v0.12.5"
> +	depends on !BR2_ARM_CPU_ARMV5
> +
>  endchoice
>  
>  config BR2_PACKAGE_NODEJS_VERSION_STRING
>  	string
>  	default "0.10.39"	if BR2_BR2_PACKAGE_NODEJS_0_10_39
> +	default "0.12.5"	if BR2_BR2_PACKAGE_NODEJS_0_12_5
>  
>  menu "Module Selection"
>  
> diff --git a/package/nodejs/nodejs.hash b/package/nodejs/nodejs.hash
> index bc1f15f..816d602 100644
> --- a/package/nodejs/nodejs.hash
> +++ b/package/nodejs/nodejs.hash
> @@ -1,2 +1,5 @@
>  # From upstream URL: http://nodejs.org/dist/v0.10.39/SHASUMS256.txt
>  sha256	68f8d8f9515c4e77e2a06034b742e19e9848c1fee5bcadedc1d68f3e4302df37  node-v0.10.39.tar.gz
> +
> +# From upstream URL: http://nodejs.org/dist/v0.12.5/SHASUMS256.txt
> +sha256	4bc1e25f4c62ac65324d3cf4aa9de2d801cd708757c3567b6ad2ced7df30cdd2  node-v0.12.5.tar.gz
> -- 
> 2.1.4
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [v4 3/4] package/nodejs: Fixes for node-pre-gyp
  2015-07-02  9:43 ` [Buildroot] [v4 3/4] package/nodejs: Fixes for node-pre-gyp Martin Bark
@ 2015-07-02 21:54   ` Yann E. MORIN
  2015-07-04  6:51     ` Jörg Krause
  0 siblings, 1 reply; 12+ messages in thread
From: Yann E. MORIN @ 2015-07-02 21:54 UTC (permalink / raw)
  To: buildroot

Martin, All,

On 2015-07-02 10:43 +0100, Martin Bark spake thusly:
> 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>

I'm not much of a nodejs guy, so I'd like some feedback from other
nodejs users. J?rg, maybe?

Otherwise, the build-form-source chunk looks way better, thanks! :-)

[really only a code review]
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.

> ---
> Changes v3 -> v4
>  - Force always building from source (Suggested by Yann E. MORIN)
>  - Improved commit message
> 
> Changes v2 -> v3
>  - Adjusted patch order so this is before the new definition of $(NPM)
> 
> Changes v1 -> v2
>  - No changes, new in v2
> ---
>  package/nodejs/nodejs.mk | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
> index 0b3f8a5..156b151 100644
> --- a/package/nodejs/nodejs.mk
> +++ b/package/nodejs/nodejs.mk
> @@ -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) \
> -- 
> 2.1.4
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [v4 3/4] package/nodejs: Fixes for node-pre-gyp
  2015-07-02 21:54   ` Yann E. MORIN
@ 2015-07-04  6:51     ` Jörg Krause
  0 siblings, 0 replies; 12+ messages in thread
From: Jörg Krause @ 2015-07-04  6:51 UTC (permalink / raw)
  To: buildroot

Hi Yann, Martin, all,

On Do, 2015-07-02 at 23:54 +0200, Yann E. MORIN wrote:
> Martin, All,
> 
> On 2015-07-02 10:43 +0100, Martin Bark spake thusly:
> > 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>
> 
> I'm not much of a nodejs guy, so I'd like some feedback from other
> nodejs users. J?rg, maybe?
> 
> Otherwise, the build-form-source chunk looks way better, thanks! :-)
> 
> [really only a code review]
> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> 

I'm quite a bit busy now and it is beyond me. Perhaps I can give
feedback in a week.

Best regards
J?rg Krause

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version
  2015-07-02  9:43 [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version Martin Bark
                   ` (3 preceding siblings ...)
  2015-07-02 21:51 ` [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version Yann E. MORIN
@ 2015-07-04 12:56 ` Thomas Petazzoni
  2015-07-05 19:07   ` Martin Bark
  2015-10-11 19:25 ` Yann E. MORIN
  5 siblings, 1 reply; 12+ messages in thread
From: Thomas Petazzoni @ 2015-07-04 12:56 UTC (permalink / raw)
  To: buildroot

Dear Martin Bark,

On Thu,  2 Jul 2015 10:43:24 +0100, Martin Bark wrote:
> The version of the V8 JavaScript engine used by node.js v0.12.5 requires
> at least an ARMv6 architecture with VFPv2.  For this reason v0.10.39
> remains the default for ARMv5 targets, all other targets now default to
> v0.12.5.
> 
> Signed-off-by: Martin Bark <martin@barkynet.com>
> 
> ---
> Changes v3 -> v4
>  - Added back depends on !BR2_ARM_CPU_ARMV5 that was removed by mistake
>    (Suggested by Yann E. MORIN)

All four patches applied, thanks!

For reference, I've tested by adding the "learnyournode" module, which
thanks to your patch 2/4 now installs the command in /usr/bin, which
allows to run it transparently.

Thanks to Yann for the review/comments!

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version
  2015-07-04 12:56 ` Thomas Petazzoni
@ 2015-07-05 19:07   ` Martin Bark
  0 siblings, 0 replies; 12+ messages in thread
From: Martin Bark @ 2015-07-05 19:07 UTC (permalink / raw)
  To: buildroot

Thomas, Yann,

On 4 July 2015 at 13:56, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Dear Martin Bark,
>
> On Thu,  2 Jul 2015 10:43:24 +0100, Martin Bark wrote:
>> The version of the V8 JavaScript engine used by node.js v0.12.5 requires
>> at least an ARMv6 architecture with VFPv2.  For this reason v0.10.39
>> remains the default for ARMv5 targets, all other targets now default to
>> v0.12.5.
>>
>> Signed-off-by: Martin Bark <martin@barkynet.com>
>>
>> ---
>> Changes v3 -> v4
>>  - Added back depends on !BR2_ARM_CPU_ARMV5 that was removed by mistake
>>    (Suggested by Yann E. MORIN)
>
> All four patches applied, thanks!
>
> For reference, I've tested by adding the "learnyournode" module, which
> thanks to your patch 2/4 now installs the command in /usr/bin, which
> allows to run it transparently.
>
> Thanks to Yann for the review/comments!
>
> Thomas

Thanks, I'm please the patches helped.

Big thanks to Yann for the feedback, it was much appreciated.

Martin

> --
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version
  2015-07-02  9:43 [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version Martin Bark
                   ` (4 preceding siblings ...)
  2015-07-04 12:56 ` Thomas Petazzoni
@ 2015-10-11 19:25 ` Yann E. MORIN
  2015-10-12  8:48   ` Martin Bark
  5 siblings, 1 reply; 12+ messages in thread
From: Yann E. MORIN @ 2015-10-11 19:25 UTC (permalink / raw)
  To: buildroot

Martin, All,

On 2015-07-02 10:43 +0100, Martin Bark spake thusly:
> The version of the V8 JavaScript engine used by node.js v0.12.5 requires
> at least an ARMv6 architecture with VFPv2.

I'm trying to bump to node.js 4.1.2 and was wondering if that limitation
still exists in that version.

I was able to sucessfully build for an arm926t (armv5) with a VFPv2 FPU.

So:
  - is the failure a runtime failure or a build time one?
  - is armv6 really required, or can we just require VFPv2?

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version
  2015-10-11 19:25 ` Yann E. MORIN
@ 2015-10-12  8:48   ` Martin Bark
  2015-10-12 16:51     ` Yann E. MORIN
  0 siblings, 1 reply; 12+ messages in thread
From: Martin Bark @ 2015-10-12  8:48 UTC (permalink / raw)
  To: buildroot

Yann,

On 11 October 2015 at 20:25, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> Martin, All,
>
> On 2015-07-02 10:43 +0100, Martin Bark spake thusly:
>> The version of the V8 JavaScript engine used by node.js v0.12.5 requires
>> at least an ARMv6 architecture with VFPv2.
>
> I'm trying to bump to node.js 4.1.2 and was wondering if that limitation
> still exists in that version.

Yes I've been thinking about this too.  As far as i can tell v0.10.x
was the last release to support ARMv5 due to changes in the V8
JavaScript engine.  One thing i have been wondering is if we need to
support multiple versions of node.js or just 4.1.x?  The node.js LTS
working group here https://github.com/nodejs/LTS/ seems to say that
0.10.x and 0.12.x are still being maintained but supporting only the
latest version would be simpler.  What do you think?

>
> I was able to sucessfully build for an arm926t (armv5) with a VFPv2 FPU.
>
> So:
>   - is the failure a runtime failure or a build time one?

From memory it only show up at runtime as an illegal instruction.  I
think i tested using qemu_arm_versatile_defconfig and a simple test
like

    node -e 'console.log("hello world");'

>   - is armv6 really required, or can we just require VFPv2?

I went off this announcement for V8
https://groups.google.com/forum/#!topic/v8-users/aSOFbaAQvMk where it
states the minimum is now ARMv6 with VFPv2.  It was the no-VFPv2 port
that was removed but i don't know if it also requires any ARMv6 or
higher instructions.  The node.js configure script only seems to check
form ARMv6 or ARMv7, see
https://github.com/nodejs/node/blob/master/configure#L616.  So i
assume node.js and V8 need a minimum ARMv6 instruction set.

Thanks

Martin

>
> Regards,
> Yann E. MORIN.
>
> --
> .-----------------.--------------------.------------------.--------------------.
> |  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> | +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
> | +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
> '------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version
  2015-10-12  8:48   ` Martin Bark
@ 2015-10-12 16:51     ` Yann E. MORIN
  0 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2015-10-12 16:51 UTC (permalink / raw)
  To: buildroot

MArtin, All,

On 2015-10-12 09:48 +0100, Martin Bark spake thusly:
> On 11 October 2015 at 20:25, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> > Martin, All,
> >
> > On 2015-07-02 10:43 +0100, Martin Bark spake thusly:
> >> The version of the V8 JavaScript engine used by node.js v0.12.5 requires
> >> at least an ARMv6 architecture with VFPv2.
> >
> > I'm trying to bump to node.js 4.1.2 and was wondering if that limitation
> > still exists in that version.
> 
> Yes I've been thinking about this too.  As far as i can tell v0.10.x
> was the last release to support ARMv5 due to changes in the V8
> JavaScript engine.  One thing i have been wondering is if we need to
> support multiple versions of node.js or just 4.1.x?  The node.js LTS
> working group here https://github.com/nodejs/LTS/ seems to say that
> 0.10.x and 0.12.x are still being maintained but supporting only the
> latest version would be simpler.  What do you think?

We currently have kept nodejs 0.10.x for backward compatibility with
armv5 or non-VFP CPUs, in parallel with 0.12.x for armv6+ with VFP CPUs.

> > I was able to sucessfully build for an arm926t (armv5) with a VFPv2 FPU.
> >
> > So:
> >   - is the failure a runtime failure or a build time one?
> 
> From memory it only show up at runtime as an illegal instruction.  I
> think i tested using qemu_arm_versatile_defconfig and a simple test
> like
> 
>     node -e 'console.log("hello world");'
> 
> >   - is armv6 really required, or can we just require VFPv2?
> 
> I went off this announcement for V8
> https://groups.google.com/forum/#!topic/v8-users/aSOFbaAQvMk where it
> states the minimum is now ARMv6 with VFPv2.  It was the no-VFPv2 port
> that was removed but i don't know if it also requires any ARMv6 or
> higher instructions.  The node.js configure script only seems to check
> form ARMv6 or ARMv7, see
> https://github.com/nodejs/node/blob/master/configure#L616.  So i
> assume node.js and V8 need a minimum ARMv6 instruction set.

OK, so let's do as upstream wants it:

  - armv6 or above ir required
  - VFPv2 or above is required

Thanks! :-)

BTW, you can see my WIP patch there (moving target, the branch may get
rebased from time to time; handle with care! ;-) ):
    http://git.buildroot.org/~ymorin/git/buildroot/log/?h=yem/node

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2015-10-12 16:51 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-02  9:43 [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version Martin Bark
2015-07-02  9:43 ` [Buildroot] [v4 2/4] package/nodejs: symlink /usr/lib/node_modules/.bin/* to /usr/bin Martin Bark
2015-07-02  9:43 ` [Buildroot] [v4 3/4] package/nodejs: Fixes for node-pre-gyp Martin Bark
2015-07-02 21:54   ` Yann E. MORIN
2015-07-04  6:51     ` Jörg Krause
2015-07-02  9:43 ` [Buildroot] [v4 4/4] package/nodejs: Define NPM command for other packages to use Martin Bark
2015-07-02 21:51 ` [Buildroot] [v4 1/4] package/nodejs: Add node.js v0.12.5 and set as the default version Yann E. MORIN
2015-07-04 12:56 ` Thomas Petazzoni
2015-07-05 19:07   ` Martin Bark
2015-10-11 19:25 ` Yann E. MORIN
2015-10-12  8:48   ` Martin Bark
2015-10-12 16:51     ` Yann E. MORIN

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.