diff mbox

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

Message ID 1435830207-16664-1-git-send-email-martin@barkynet.com
State Accepted
Headers show

Commit Message

Martin Bark July 2, 2015, 9:43 a.m. UTC
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

Comments

Yann E. MORIN July 2, 2015, 9:51 p.m. UTC | #1
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@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Thomas Petazzoni July 4, 2015, 12:56 p.m. UTC | #2
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
Martin Bark July 5, 2015, 7:07 p.m. UTC | #3
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
Yann E. MORIN Oct. 11, 2015, 7:25 p.m. UTC | #4
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.
Martin Bark Oct. 12, 2015, 8:48 a.m. UTC | #5
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.  |
> '------------------------------^-------^------------------^--------------------'
Yann E. MORIN Oct. 12, 2015, 4:51 p.m. UTC | #6
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.
diff mbox

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