diff mbox

[2/2,v2] package/nodejs: add version 4.1.2

Message ID 91f96e06dbe44ab711b1bb688892c31886026b59.1445277033.git.yann.morin.1998@free.fr
State Changes Requested
Headers show

Commit Message

Yann E. MORIN Oct. 19, 2015, 5:51 p.m. UTC
We add a new version, because it is not API-compatible with the pervious
versions.

Also, 4.1.2 requires gcc >= 4.8.

Forward-port patches from 0.12.7:
  - 0001-Remove-dependency-on-Python-bz2-module.patch partially applied
    upstream;
  - 0002-gyp-force-link-command-to-use-CXX.patch slightly refreshed;
  - 0003-Use-a-python-variable-instead-of-hardcoding-Python.patch
    largely refreshed to address new occurences of hard-coded calls;
  - 0004-fix-build-error-without-OpenSSL-support.patch applied upstream
  - 0005-Fix-typo-for-arm-predefined-macro-in-atomicops_inte.patch
    applied upstream.

New patch:
  - 0004-fix-arm-vfpv2.patch to fix the gcc -mfpu option for VFPv2.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Jörg Krause <joerg.krause@embedded.rocks>
Cc: Martin Bark <martin@barkynet.com>
Cc: Jaap Crezee <jaap@jcz.nl>
---
 ...01-Remove-dependency-on-Python-bz2-module.patch | 33 ++++++++
 .../0002-gyp-force-link-command-to-use-CXX.patch   | 29 +++++++
 ...hon-variable-instead-of-hardcoding-Python.patch | 88 ++++++++++++++++++++++
 package/nodejs/4.1.2/0004-fix-arm-vfpv2.patch      | 18 +++++
 package/nodejs/Config.in                           | 12 ++-
 package/nodejs/nodejs.hash                         |  3 +
 package/nodejs/nodejs.mk                           |  4 +
 7 files changed, 186 insertions(+), 1 deletion(-)
 create mode 100644 package/nodejs/4.1.2/0001-Remove-dependency-on-Python-bz2-module.patch
 create mode 100644 package/nodejs/4.1.2/0002-gyp-force-link-command-to-use-CXX.patch
 create mode 100644 package/nodejs/4.1.2/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch
 create mode 100644 package/nodejs/4.1.2/0004-fix-arm-vfpv2.patch

Comments

Thomas Petazzoni Oct. 19, 2015, 8:30 p.m. UTC | #1
Dear Yann E. MORIN,

On Mon, 19 Oct 2015 19:51:01 +0200, Yann E. MORIN wrote:

> diff --git a/package/nodejs/4.1.2/0001-Remove-dependency-on-Python-bz2-module.patch b/package/nodejs/4.1.2/0001-Remove-dependency-on-Python-bz2-module.patch
> new file mode 100644
> index 0000000..dee8042
> --- /dev/null
> +++ b/package/nodejs/4.1.2/0001-Remove-dependency-on-Python-bz2-module.patch
> @@ -0,0 +1,33 @@
> +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.

Read this...

> +
> +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> +[Martin: adapt to 0.12.5]
> +Signed-off-by: Martin Bark <martin@barkynet.com>
> +[yann.morin.1998@free.fr: adapt to 4.1.2]
> +Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> +---
> + 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
> + 
> + 

... and compare it to the patch. You're no longer importing bz2
anywhere. Look at the same patch for 0.10 and 0.12, it is importing the
bz2 module, just conditionally.

We should maybe also upstream our nodejs patches... But that's a
separate work.

Thomas
Yann E. MORIN Oct. 19, 2015, 8:35 p.m. UTC | #2
Thomas, All,

On 2015-10-19 22:30 +0200, Thomas Petazzoni spake thusly:
> On Mon, 19 Oct 2015 19:51:01 +0200, Yann E. MORIN wrote:
> > diff --git a/package/nodejs/4.1.2/0001-Remove-dependency-on-Python-bz2-module.patch b/package/nodejs/4.1.2/0001-Remove-dependency-on-Python-bz2-module.patch
> > new file mode 100644
> > index 0000000..dee8042
> > --- /dev/null
> > +++ b/package/nodejs/4.1.2/0001-Remove-dependency-on-Python-bz2-module.patch
> > @@ -0,0 +1,33 @@
> > +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.
> 
> Read this...

Damn...

> > +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> > +[Martin: adapt to 0.12.5]
> > +Signed-off-by: Martin Bark <martin@barkynet.com>
> > +[yann.morin.1998@free.fr: adapt to 4.1.2]
> > +Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> > +---
> > + 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
> > + 
> > + 
> 
> ... and compare it to the patch. You're no longer importing bz2
> anywhere. Look at the same patch for 0.10 and 0.12, it is importing the
> bz2 module, just conditionally.

ACK, I'll fix that commit log.

> We should maybe also upstream our nodejs patches... But that's a
> separate work.

I can take a shot at that...

Thanks!

Regards,
Yann E. MORIN.
Thomas Petazzoni Oct. 19, 2015, 8:37 p.m. UTC | #3
Dear Yann E. MORIN,

On Mon, 19 Oct 2015 22:35:43 +0200, Yann E. MORIN wrote:

> > ... and compare it to the patch. You're no longer importing bz2
> > anywhere. Look at the same patch for 0.10 and 0.12, it is importing the
> > bz2 module, just conditionally.
> 
> ACK, I'll fix that commit log.

So the bz2 import is no longer needed at all?

> > We should maybe also upstream our nodejs patches... But that's a
> > separate work.
> 
> I can take a shot at that...

Would be good, but it is definitely not mandatory to get your patch
accepted, of course.

Thanks!

Thomas
Yann E. MORIN Oct. 19, 2015, 8:44 p.m. UTC | #4
Thomas, All,

On 2015-10-19 22:37 +0200, Thomas Petazzoni spake thusly:
> On Mon, 19 Oct 2015 22:35:43 +0200, Yann E. MORIN wrote:
> > > ... and compare it to the patch. You're no longer importing bz2
> > > anywhere. Look at the same patch for 0.10 and 0.12, it is importing the
> > > bz2 module, just conditionally.
> > 
> > ACK, I'll fix that commit log.
> 
> So the bz2 import is no longer needed at all?

Nope. The build goes OK without it.

> > > We should maybe also upstream our nodejs patches... But that's a
> > > separate work.
> > I can take a shot at that...
> Would be good, but it is definitely not mandatory to get your patch
> accepted, of course.

Understood, but I'll try nonetheless (some of those patches are probably
easy to sneak in, liek the bz2 one).

Regards,
Yann E. MORIN.
Jörg Krause Oct. 19, 2015, 9:31 p.m. UTC | #5
On Mo, 2015-10-19 at 19:51 +0200, Yann E. MORIN wrote:
> We add a new version, because it is not API-compatible with the
> pervious
> versions.

previous? :-)

> 
> Also, 4.1.2 requires gcc >= 4.8.

I tried with a gcc 4.8 toolchain and it compiles without any errors.

Best regards
Jörg Krause
Yann E. MORIN Oct. 19, 2015, 9:35 p.m. UTC | #6
On 2015-10-19 23:31 +0200, Jörg Krause spake thusly:
> On Mo, 2015-10-19 at 19:51 +0200, Yann E. MORIN wrote:
> > We add a new version, because it is not API-compatible with the
> > pervious
> > versions.
> previous? :-)

That was vicious. ;-)
Fixed, thanks.

> > Also, 4.1.2 requires gcc >= 4.8.
> I tried with a gcc 4.8 toolchain and it compiles without any errors.

Yes, I tries with gcc-4.7 and it breaks, while it builds with gcc-4.8.
Thanks for the confirmation. :-)

Regards,
Yann E. MORIN.
diff mbox

Patch

diff --git a/package/nodejs/4.1.2/0001-Remove-dependency-on-Python-bz2-module.patch b/package/nodejs/4.1.2/0001-Remove-dependency-on-Python-bz2-module.patch
new file mode 100644
index 0000000..dee8042
--- /dev/null
+++ b/package/nodejs/4.1.2/0001-Remove-dependency-on-Python-bz2-module.patch
@@ -0,0 +1,33 @@ 
+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>
+[yann.morin.1998@free.fr: adapt to 4.1.2]
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+---
+ 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
+ 
+ 
+-- 
+2.1.4
+
diff --git a/package/nodejs/4.1.2/0002-gyp-force-link-command-to-use-CXX.patch b/package/nodejs/4.1.2/0002-gyp-force-link-command-to-use-CXX.patch
new file mode 100644
index 0000000..5746582
--- /dev/null
+++ b/package/nodejs/4.1.2/0002-gyp-force-link-command-to-use-CXX.patch
@@ -0,0 +1,29 @@ 
+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>
+[yann.morin.1998@free.fr: adapt to 4.1.2]
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+---
+ 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
+@@ -142,7 +142,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/4.1.2/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch b/package/nodejs/4.1.2/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch
new file mode 100644
index 0000000..2e266af
--- /dev/null
+++ b/package/nodejs/4.1.2/0003-Use-a-python-variable-instead-of-hardcoding-Python.patch
@@ -0,0 +1,88 @@ 
+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>
+[yann.morin.1998@free.fr: adapat to 4.1.2]
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+---
+ 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
+@@ -1696,14 +1696,14 @@
+                       '<(PRODUCT_DIR)/natives_blob_host.bin',
+                     ],
+                     'action': [
+-                      'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_host.bin'
++                      '<(python)', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_host.bin'
+                     ],
+                   }, {
+                     'outputs': [
+                       '<(PRODUCT_DIR)/natives_blob.bin',
+                     ],
+                     'action': [
+-                      'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob.bin'
++                      '<(python)', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob.bin'
+                     ],
+                   }],
+                 ],
+@@ -1712,7 +1712,7 @@
+                   '<(PRODUCT_DIR)/natives_blob.bin',
+                 ],
+                 'action': [
+-                  'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob.bin'
++                  '<(python)', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob.bin'
+                 ],
+               }],
+             ],
+@@ -1812,7 +1812,7 @@
+             '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
+           ],
+           'action': [
+-            'python',
++            '<(python)',
+             '../../tools/js2c.py',
+             '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
+             'CORE',
+@@ -1838,7 +1838,7 @@
+             '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
+           ],
+           'action': [
+-            'python',
++            '<(python)',
+             '../../tools/js2c.py',
+             '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
+             'EXPERIMENTAL',
+@@ -1863,7 +1863,7 @@
+             '<(SHARED_INTERMEDIATE_DIR)/extras-libraries.cc',
+           ],
+           'action': [
+-            'python',
++            '<(python)',
+             '../../tools/js2c.py',
+             '<(SHARED_INTERMEDIATE_DIR)/extras-libraries.cc',
+             'EXTRAS',
+@@ -1900,7 +1900,7 @@
+               '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
+             ],
+             'action': [
+-              'python',
++              '<(python)',
+               '../../tools/gen-postmortem-metadata.py',
+               '<@(_outputs)',
+               '<@(heapobject_files)'
diff --git a/package/nodejs/4.1.2/0004-fix-arm-vfpv2.patch b/package/nodejs/4.1.2/0004-fix-arm-vfpv2.patch
new file mode 100644
index 0000000..b753dfe
--- /dev/null
+++ b/package/nodejs/4.1.2/0004-fix-arm-vfpv2.patch
@@ -0,0 +1,18 @@ 
+configure: fix ARM VFPv2
+
+The gcc -mfpu flag for VFPv2 is 'vfp', not 'vfpv2'.
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+diff -durN a/configure b/configure
+--- a/configure
++++ b/configure
+@@ -611,7 +611,7 @@
+     o['variables']['arm_fpu'] = 'vfpv3'
+     o['variables']['arm_version'] = '7'
+   else:
+-    o['variables']['arm_fpu'] = 'vfpv2'
++    o['variables']['arm_fpu'] = 'vfp'
+     o['variables']['arm_version'] = '6' if is_arch_armv6() else 'default'
+ 
+   o['variables']['arm_thumb'] = 0      # -marm
diff --git a/package/nodejs/Config.in b/package/nodejs/Config.in
index bd63d29..880410b 100644
--- a/package/nodejs/Config.in
+++ b/package/nodejs/Config.in
@@ -35,7 +35,7 @@  config BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS
 choice
 	prompt "Node.js version"
 	default BR2_BR2_PACKAGE_NODEJS_0_10_X if BR2_ARM_CPU_ARMV5
-	default BR2_BR2_PACKAGE_NODEJS_0_12_X
+	default BR2_BR2_PACKAGE_NODEJS_4_X
 	help
 	  Select the version of Node.js you wish to use.
 
@@ -46,12 +46,22 @@  config BR2_BR2_PACKAGE_NODEJS_0_12_X
 	bool "v0.12.7"
 	depends on BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS
 
+config BR2_BR2_PACKAGE_NODEJS_4_X
+	bool "v4.1.2"
+	depends on BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
+comment "v4.1.2 needs a toolchain w/ gcc >= 4.8"
+	depends on BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS
+	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
 endchoice
 
 config BR2_PACKAGE_NODEJS_VERSION_STRING
 	string
 	default "0.10.40"	if BR2_BR2_PACKAGE_NODEJS_0_10_X
 	default "0.12.7"	if BR2_BR2_PACKAGE_NODEJS_0_12_X
+	default "4.1.2"		if BR2_BR2_PACKAGE_NODEJS_4_X
 
 menu "Module Selection"
 
diff --git a/package/nodejs/nodejs.hash b/package/nodejs/nodejs.hash
index 9be2806..ab506df 100644
--- a/package/nodejs/nodejs.hash
+++ b/package/nodejs/nodejs.hash
@@ -3,3 +3,6 @@  sha256	bae79c2fd959aebe1629af36077bebbb760128db753da226d2344cd91499149f  node-v0
 
 # From upstream URL: http://nodejs.org/dist/v0.12.7/SHASUMS256.txt
 sha256	b23d64df051c9c969b0c583f802d5d71de342e53067127a5061415be7e12f39d  node-v0.12.7.tar.gz
+
+# From upstream URL: http://nodejs.org/dist/v4.1.2/SHASUMS256.txt
+sha256  443c8251e812b1f2c4b3e9152a47df23c55567ade739e017e2c0ca0869b71e74  node-v4.1.2.tar.xz
diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
index 414f3f3..099b3f0 100644
--- a/package/nodejs/nodejs.mk
+++ b/package/nodejs/nodejs.mk
@@ -5,7 +5,11 @@ 
 ################################################################################
 
 NODEJS_VERSION = $(call qstrip,$(BR2_PACKAGE_NODEJS_VERSION_STRING))
+ifeq ($(BR2_BR2_PACKAGE_NODEJS_4_X),y)
+NODEJS_SOURCE = node-v$(NODEJS_VERSION).tar.xz
+else
 NODEJS_SOURCE = node-v$(NODEJS_VERSION).tar.gz
+endif
 NODEJS_SITE = http://nodejs.org/dist/v$(NODEJS_VERSION)
 NODEJS_DEPENDENCIES = host-python host-nodejs zlib \
 	$(call qstrip,$(BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL_DEPS))