Skip to contentSkip to conversation

package/nodejs: Add node.js v0.12.5 and set as the default version

PATCH New Martin Bark 4 participants 12 messages Jul 2, 2015 – Oct 12, 2015

lore
Share & tools
lore
#0 lore raw

PATCH v4 1/4 package/nodejs: Add node.js v0.12.5 and set as the default version

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.

---
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
package/nodejs/0.12.5/0001-Remove-dependency-on-Python-bz2-module.patch new file +39 -0
new file mode 100644
index 0000000..24a78a4
@@ -0,0 +1,39 @@
+From 3d4817c152d6f3afddcc699949c4d1664da91e2b Mon Sep 17 00:00:00 2001
+From: Martin Bark <[email protected]>
+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 <[email protected]>
+[Martin: adapt to 0.12.5]
+Signed-off-by: Martin Bark <[email protected]>
+---
+ 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
+
package/nodejs/0.12.5/0002-gyp-force-link-command-to-use-CXX.patch new file +27 -0
new file mode 100644
index 0000000..3b007f1
@@ -0,0 +1,27 @@
+From 90a3c113c19ec615249ab880c45c6c0a8d369098 Mon Sep 17 00:00:00 2001
+From: Martin Bark <[email protected]>
+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 <[email protected]>
+Signed-off-by: Martin Bark <[email protected]>
+---
+ 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
+
package/nodejs/0.12.5/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch new file +63 -0

63 lines not on this page · raw message

package/nodejs/0.12.5/0004-fix-build-error-without-OpenSSL-support.patch new file +46 -0

46 lines not on this page · raw message

package/nodejs/Config.in +8 -1
index 9a39385..580d9a2 100644
@@ -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"
 
package/nodejs/nodejs.hash +3 -0
index bc1f15f..816d602 100644
@@ -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
Signature · 1 line
2.1.4
#1 lore raw

PATCH v4 2/4 package/nodejs: symlink /usr/lib/node_modules/.bin/* to /usr/bin

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.

---
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(+)
package/nodejs/nodejs.mk +8 -0
index 59e03b0..0b3f8a5 100644
@@ -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
 
Signature · 1 line
2.1.4
#2 lore raw

PATCH v4 3/4 package/nodejs: Fixes for node-pre-gyp

In reply to Martin Bark

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.

---
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(+)
package/nodejs/nodejs.mk +2 -0
index 0b3f8a5..156b151 100644
@@ -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) \
Signature · 1 line
2.1.4
#3 lore raw

PATCH v4 3/4 package/nodejs: Fixes for node-pre-gyp

Martin, All,

On 2015-07-02 10:43 +0100, Martin Bark spake thusly:

Quoted 16 lines

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.

Quoted 8 lines

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.

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]

Regards,
Yann E. MORIN.

Quoted 34 lines

---
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(+)
package/nodejs/nodejs.mk +2 -0
index 0b3f8a5..156b151 100644
@@ -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) \
Signature · 6 lines
2.1.4

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  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.  |
'------------------------------^-------^------------------^--------------------'
#4 lore raw

PATCH v4 3/4 package/nodejs: Fixes for node-pre-gyp

Hi Yann, Martin, all,

Quoted 40 lines · Yann E. MORIN

Martin, All,

On 2015-07-02 10:43 +0100, Martin Bark spake thusly:

Quoted 29 lines

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

(quoted diff) +0 -3
-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.

Quoted 4 lines

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

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

Quoted 5 lines

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

[really only a code review]

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

#5 lore raw

PATCH v4 4/4 package/nodejs: Define NPM command for other packages to use

In reply to Martin Bark

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.

---
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(-)
package/nodejs/nodejs.mk +10 -8
index 156b151..414f3f3 100644
@@ -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
Signature · 1 line
2.1.4
#6 lore raw

PATCH v4 1/4 package/nodejs: Add node.js v0.12.5 and set as the default version

In reply to Martin Bark

Martin, All,

On 2015-07-02 10:43 +0100, Martin Bark spake thusly:

Quoted 6 lines

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.

This time for good I hope. ;-)

Regards,
Yann E. MORIN.

Quoted 274 lines

---
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
package/nodejs/0.12.5/0001-Remove-dependency-on-Python-bz2-module.patch new file +39 -0
new file mode 100644
index 0000000..24a78a4
@@ -0,0 +1,39 @@
+From 3d4817c152d6f3afddcc699949c4d1664da91e2b Mon Sep 17 00:00:00 2001
+From: Martin Bark <[email protected]>
+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 <[email protected]>
+[Martin: adapt to 0.12.5]
+Signed-off-by: Martin Bark <[email protected]>
+---
+ 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
+
package/nodejs/0.12.5/0002-gyp-force-link-command-to-use-CXX.patch new file +27 -0
new file mode 100644
index 0000000..3b007f1
@@ -0,0 +1,27 @@
+From 90a3c113c19ec615249ab880c45c6c0a8d369098 Mon Sep 17 00:00:00 2001
+From: Martin Bark <[email protected]>
+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 <[email protected]>
+Signed-off-by: Martin Bark <[email protected]>
+---
+ 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
+
package/nodejs/0.12.5/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch new file +63 -0
new file mode 100644
index 0000000..37ceda3
@@ -0,0 +1,63 @@
+From 4a48c65921b0f05b621aef5b902b6aa54811ad7a Mon Sep 17 00:00:00 2001
+From: Martin Bark <[email protected]>
+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 <[email protected]>
+[Martin: adapt to 0.12.5]
+Signed-off-by: Martin Bark <[email protected]>
+---
+ 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
+
package/nodejs/0.12.5/0004-fix-build-error-without-OpenSSL-support.patch new file +46 -0
new file mode 100644
index 0000000..ccb29b1
@@ -0,0 +1,46 @@
+From 6bfa497dceb83de5257c64da59fbcf6a32d83305 Mon Sep 17 00:00:00 2001
+From: Martin Bark <[email protected]>
+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 <[email protected]>
+[Martin: adapt to 0.12.5]
+Signed-off-by: Martin Bark <[email protected]>
+---
+ 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
+
package/nodejs/Config.in +8 -1
index 9a39385..580d9a2 100644
@@ -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"
 
package/nodejs/nodejs.hash +3 -0
index bc1f15f..816d602 100644
@@ -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
Signature · 6 lines
2.1.4

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  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.  |
'------------------------------^-------^------------------^--------------------'
#7 lore raw

PATCH v4 1/4 package/nodejs: Add node.js v0.12.5 and set as the default version

In reply to Martin Bark

Dear Martin Bark,

Quoted 11 lines · Martin Bark

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.

---
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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#8 lore raw

PATCH v4 1/4 package/nodejs: Add node.js v0.12.5 and set as the default version

Thomas, Yann,

Quoted 17 lines · Thomas Petazzoni

Dear Martin Bark,

Quoted 11 lines · Martin Bark

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.

---
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!

Quoted 7 lines

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

Quoted 4 lines

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

#9 lore raw

PATCH v4 1/4 package/nodejs: Add node.js v0.12.5 and set as the default version

In reply to Martin Bark

Martin, All,

On 2015-07-02 10:43 +0100, Martin Bark spake thusly:

Quoted 2 lines

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.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  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.  |
'------------------------------^-------^------------------^--------------------'
#10 lore raw

PATCH v4 1/4 package/nodejs: Add node.js v0.12.5 and set as the default version

Yann,

Quoted 8 lines · Yann E. MORIN

Martin, All,

On 2015-07-02 10:43 +0100, Martin Bark spake thusly:

Quoted 2 lines

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?

Quoted 5 lines

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");'

Quoted 1 line

- 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

Quoted 11 lines

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.  |

'------------------------------^-------^------------------^--------------------'

#11 lore raw

PATCH v4 1/4 package/nodejs: Add node.js v0.12.5 and set as the default version

MArtin, All,

On 2015-10-12 09:48 +0100, Martin Bark spake thusly:

Quoted 10 lines · Yann E. MORIN
Quoted 8 lines

Martin, All,

On 2015-07-02 10:43 +0100, Martin Bark spake thusly:

Quoted 2 lines

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.

Quoted 7 lines

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.

Quoted 13 lines
Quoted 4 lines

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");'

Quoted 1 line

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

Quoted 8 lines

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.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  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.  |
'------------------------------^-------^------------------^--------------------'