package/nodejs: Add node.js v0.12.5 and set as the default version
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
@@ -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
@@ -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
@@ -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
@@ -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
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
@@ -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
PATCH v4 3/4 package/nodejs: Fixes for node-pre-gyp
In reply to Martin BarkMany 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
@@ -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
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_archandnpm_config_build_from_sourceto 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 <[email protected]>
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! :-)
Regards,
Yann E. MORIN.
Quoted 34 lines
---
Changes v3 -> v4
- Force always building from source (Suggested by Yann E. MORIN)
- Improved commit messageChanges 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@@ -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. | '------------------------------^-------^------------------^--------------------'
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-gypwill 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_archandnpm_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.
Signed-off-by Martin Bark <[email protected]>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]Reviewed-by "Yann E. MORIN" <[email protected]>
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
PATCH v4 4/4 package/nodejs: Define NPM command for other packages to use
In reply to Martin BarkOther 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
@@ -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
PATCH v4 1/4 package/nodejs: Add node.js v0.12.5 and set as the default version
In reply to Martin BarkMartin, 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.
Signed-off-by Martin Bark <[email protected]>
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 messageChanges 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.patchpackage/nodejs/0.12.5/0001-Remove-dependency-on-Python-bz2-module.patch new file +39
-0@@ -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@@ -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@@ -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@@ -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@@ -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@@ -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.gzSignature · 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. | '------------------------------^-------^------------------^--------------------'
PATCH v4 1/4 package/nodejs: Add node.js v0.12.5 and set as the default version
In reply to Martin BarkDear 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.
Signed-off-by Martin Bark <[email protected]>---
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
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.
Signed-off-by Martin Bark <[email protected]>---
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
PATCH v4 1/4 package/nodejs: Add node.js v0.12.5 and set as the default version
In reply to Martin BarkMartin, 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. | '------------------------------^-------^------------------^--------------------'
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. |'------------------------------^-------^------------------^--------------------'
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_defconfigand a simple test likenode -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. | '------------------------------^-------^------------------^--------------------'