Skip to contentSkip to conversation

nodejs cleanup and add

PATCH Superseded Trevor Woerner 2 participants 5 messages Dec 1, 2015

v1 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

cover nodejs cleanup and add

The current stable version of nodejs is 4.2.2.

Currently there are two nodejs recipes from which to choose: nodejs, and nodejs4. A user would naturally assume nodejs4 refers to version 4.2.2, but they would be wrong. Nodejs4 refers to version 0.4.12.

Cleanup the current nodejs naming and include a new recipe for the latest stable version.

Trevor Woerner (2):
nodejs: cleanup
nodejs: add recipe for latest stable

 .../enable-armv5e-build.patch                      |  0
 .../{nodejs => nodejs-0.12.7}/no-registry.patch    |  0
 .../libev-cross-cc_0.4.12.patch                    |  0
 meta-oe/recipes-devtools/nodejs/nodejs.inc         | 80 ++++++++++++++++++++++
 meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb   | 74 +-------------------
 .../nodejs/{nodejs4_0.4.12.bb => nodejs_0.4.12.bb} |  2 +-
 meta-oe/recipes-devtools/nodejs/nodejs_4.2.2.bb    |  9 +++
 7 files changed, 92 insertions(+), 73 deletions(-)
 rename meta-oe/recipes-devtools/nodejs/{nodejs => nodejs-0.12.7}/enable-armv5e-build.patch (100%)
 rename meta-oe/recipes-devtools/nodejs/{nodejs => nodejs-0.12.7}/no-registry.patch (100%)
 rename meta-oe/recipes-devtools/nodejs/{nodejs4 => nodejs-0.4.12}/libev-cross-cc_0.4.12.patch (100%)
 create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs.inc
 rename meta-oe/recipes-devtools/nodejs/{nodejs4_0.4.12.bb => nodejs_0.4.12.bb} (87%)
 create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs_4.2.2.bb
Signature · 1 line
2.6.0.rc3
#1 lore raw

PATCH 1/2 nodejs: cleanup

Currently the latest stable version of node.js is 4.2.2. Also, currently, there are two nodejs recipes: one for nodejs and one for nodejs4. A user would naturally assume nodejs4 would be for the latest stable, but they would be wrong. Nodejs4 refers to version 0.4.12.

Cleanup the node recipes such that there are two nodejs recipes from which to choose. A user can select between them using the regular PREFERRED_VERSION_nodejs notation.

---
 .../enable-armv5e-build.patch                      |  0
 .../{nodejs => nodejs-0.12.7}/no-registry.patch    |  0
 .../libev-cross-cc_0.4.12.patch                    |  0
 meta-oe/recipes-devtools/nodejs/nodejs.inc         | 80 ++++++++++++++++++++++
 meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb   | 74 +-------------------
 .../nodejs/{nodejs4_0.4.12.bb => nodejs_0.4.12.bb} |  2 +-
 6 files changed, 83 insertions(+), 73 deletions(-)
 rename meta-oe/recipes-devtools/nodejs/{nodejs => nodejs-0.12.7}/enable-armv5e-build.patch (100%)
 rename meta-oe/recipes-devtools/nodejs/{nodejs => nodejs-0.12.7}/no-registry.patch (100%)
 rename meta-oe/recipes-devtools/nodejs/{nodejs4 => nodejs-0.4.12}/libev-cross-cc_0.4.12.patch (100%)
 create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs.inc
 rename meta-oe/recipes-devtools/nodejs/{nodejs4_0.4.12.bb => nodejs_0.4.12.bb} (87%)
meta-oe/recipes-devtools/nodejs/nodejs-0.12.7/enable-armv5e-build.patch renamed from meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch +0 -0
similarity index 100%
rename from meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch
rename to meta-oe/recipes-devtools/nodejs/nodejs-0.12.7/enable-armv5e-build.patch
meta-oe/recipes-devtools/nodejs/nodejs-0.12.7/no-registry.patch renamed from meta-oe/recipes-devtools/nodejs/nodejs/no-registry.patch +0 -0
similarity index 100%
rename from meta-oe/recipes-devtools/nodejs/nodejs/no-registry.patch
rename to meta-oe/recipes-devtools/nodejs/nodejs-0.12.7/no-registry.patch
meta-oe/recipes-devtools/nodejs/nodejs-0.4.12/libev-cross-cc_0.4.12.patch renamed from meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch +0 -0
similarity index 100%
rename from meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch
rename to meta-oe/recipes-devtools/nodejs/nodejs-0.4.12/libev-cross-cc_0.4.12.patch
meta-oe/recipes-devtools/nodejs/nodejs.inc new file +80 -0

80 lines not on this page · raw message

meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb +2 -72

81 lines not on this page · raw message

meta-oe/recipes-devtools/nodejs/nodejs_0.4.12.bb renamed from meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb +1 -1
similarity index 87%
rename from meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb
rename to meta-oe/recipes-devtools/nodejs/nodejs_0.4.12.bb
index c73cefc..0525143 100644
@@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=d6237f3a840aef5b7880fb4e49eecfe5"
 
 DEPENDS = "openssl"
 
-PNBLACKLIST[nodejs4] ?= "Used only by currently blacklisted cloud9 and fails to build for qemuarm with thumb: error: #error For thumb inter-working we require an architecture which supports blx"
+PNBLACKLIST[nodejs_0.4.12] ?= "Used only by currently blacklisted cloud9 and fails to build for qemuarm with thumb: error: #error For thumb inter-working we require an architecture which supports blx"
 
 SRC_URI = " \
     http://nodejs.org/dist/node-v${PV}.tar.gz \
Signature · 1 line
2.6.0.rc3
#2 lore raw

Re: [meta-oe][PATCH 1/2] nodejs: cleanup

Quoted 1 line

A user would

naturally assume nodejs4 would be for the latest stable, but they would be wrong. Nodejs4 refers to version 0.4.12.

It was using different recipe name intentionally, because both versions were meant to be built and installed in parallel, because some other recipes (like cloud9 mentioned in PNBLACKLIST) were (maybe still are) only with the older version 0.4.*.

As it was already PNBLACKLISTed I wouldn't mind removing it completely and replacing 0.12.7 with new version (without introducing the .inc) file.

One-version-to-rule-them-all is even more useful here as different nodejs versions aren't compatible with other recipes, so you cannot just change PREFERRED_VERSION and hope to build world.

Regards,

Quoted 285 lines · Trevor Woerner

Currently the latest stable version of node.js is 4.2.2. Also, currently, there are two nodejs recipes: one for nodejs and one for nodejs4. A user would
naturally assume nodejs4 would be for the latest stable, but they would be wrong. Nodejs4 refers to version 0.4.12.

Cleanup the node recipes such that there are two nodejs recipes from which to
choose. A user can select between them using the regular PREFERRED_VERSION_nodejs notation.

---
 .../enable-armv5e-build.patch                      |  0
 .../{nodejs => nodejs-0.12.7}/no-registry.patch    |  0
 .../libev-cross-cc_0.4.12.patch                    |  0
 meta-oe/recipes-devtools/nodejs/nodejs.inc         | 80
++++++++++++++++++++++
 meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb   | 74
+-------------------
 .../nodejs/{nodejs4_0.4.12.bb => nodejs_0.4.12.bb} |  2 +-
 6 files changed, 83 insertions(+), 73 deletions(-)
 rename meta-oe/recipes-devtools/nodejs/{nodejs =>
nodejs-0.12.7}/enable-armv5e-build.patch (100%)
 rename meta-oe/recipes-devtools/nodejs/{nodejs =>
nodejs-0.12.7}/no-registry.patch (100%)
 rename meta-oe/recipes-devtools/nodejs/{nodejs4 =>
nodejs-0.4.12}/libev-cross-cc_0.4.12.patch (100%)
 create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs.inc
 rename meta-oe/recipes-devtools/nodejs/{nodejs4_0.4.12.bb =>

nodejs_0.4.12.bb} (87%)

diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch b/meta-oe/recipes-devtools/nodejs/nodejs-0.12.7/enable-armv5e-build.patch similarity index 100%
rename from meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch rename to meta-oe/recipes-devtools/nodejs/nodejs-0.12.7/enable-armv5e-build.patch

meta-oe/recipes-devtools/nodejs/nodejs-0.12.7/no-registry.patch renamed from meta-oe/recipes-devtools/nodejs/nodejs/no-registry.patch +0 -0
similarity index 100%
rename from meta-oe/recipes-devtools/nodejs/nodejs/no-registry.patch
rename to meta-oe/recipes-devtools/nodejs/nodejs-0.12.7/no-registry.patch

diff --git a/meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch b/meta-oe/recipes-devtools/nodejs/nodejs-0.4.12/libev-cross-cc_0.4.12.patch similarity index 100%
rename from meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch rename to meta-oe/recipes-devtools/nodejs/nodejs-0.4.12/libev-cross-cc_0.4.12.patch

meta-oe/recipes-devtools/nodejs/nodejs.inc new file +13 -0
new file mode 100644
index 0000000..41eb5ee
@@ -0,0 +1,80 @@
+DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
+HOMEPAGE = "http://nodejs.org"
+LICENSE = "MIT & BSD & Artistic-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=14115ff11211df04b031ec7d40b6d31b"
+
+DEPENDS = "openssl"
+
+SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.gz \
+    file://enable-armv5e-build.patch \
+    file://no-registry.patch \
+"
+SRC_URI[md5sum] = "5523ec4347d7fe6b0f6dda1d1c7799d5"
+SRC_URI[sha256sum] =

"b23d64df051c9c969b0c583f802d5d71de342e53067127a5061415be7e12f39d"

meta-oe/recipes-devtools/nodejs/nodejs.inc new file +16 -0
+
+S = "${WORKDIR}/node-v${PV}"
+
+# v8 errors out if you have set CCACHE
+CCACHE = ""
+
+def map_nodejs_arch(a, d):
+    import re
+
+    if   re.match('p(pc|owerpc)(|64)', a): return 'ppc'
+    elif re.match('i.86$', a): return 'ia32'
+    elif re.match('x86_64$', a): return 'x64'
+    elif re.match('arm64$', a): return 'arm'
+    return a
+
+ARCHFLAGS_arm = "${@bb.utils.contains('TUNE_FEATURES',

'callconvention-hard', '--with-arm-float-abi=hard', '--with-arm-float-abi=softfp', d)}"

meta-oe/recipes-devtools/nodejs/nodejs.inc new file +4 -0
+GYP_DEFINES_append_mipsel = " mips_arch_variant='r1' "
+ARCHFLAGS ?= ""
+
+# Node is way too cool to use proper autotools, so we install two

wrappers to forcefully inject proper arch cflags to workaround gypi

meta-oe/recipes-devtools/nodejs/nodejs.inc new file +6 -0
+do_configure () {
+    export LD="${CXX}"
+    GYP_DEFINES="${GYP_DEFINES}" export GYP_DEFINES
+    # $TARGET_ARCH settings don't match --dest-cpu settings
+   ./configure --prefix=${prefix} --without-snapshot --shared-openssl \
+               --dest-cpu="${@map_nodejs_arch(d.getVar('TARGET_ARCH',

True), d)}" \

meta-oe/recipes-devtools/nodejs/nodejs.inc new file +19 -0
+               --dest-os=linux \
+               ${ARCHFLAGS}
+}
+
+do_compile () {
+    export LD="${CXX}"
+    oe_runmake BUILDTYPE=Release
+}
+
+do_install () {
+    oe_runmake install DESTDIR=${D}
+}
+
+do_install_append_class-native() {
+    # use node from PATH instead of absolute path to sysroot
+    # node-v0.10.25/tools/install.py is using:
+    # shebang = os.path.join(node_prefix, 'bin/node')
+    # update_shebang(link_path, shebang)
+    # and node_prefix can be very long path to bindir in native sysroot

and
+ # when it exceeds 128 character shebang limit it's stripped to
incorrect path
+ # and npm fails to execute like in this case with 133 characters show
in log.do_install:
+ # updating shebang of
/home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/work/x86_64-linux/nodejs-native/0.10.15-r0/image/home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/npm to
/home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/node

meta-oe/recipes-devtools/nodejs/nodejs.inc new file +2 -0
+    # /usr/bin/npm is symlink to /usr/lib/node_modules/npm/bin/npm-cli.js
+    # use sed on npm-cli.js because otherwise symlink is replaced with

normal file and

meta-oe/recipes-devtools/nodejs/nodejs.inc new file +2 -0
+    # npm-cli.js continues to use old shebang
+    sed "1s^.*^#\!/usr/bin/env node^g" -i

${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js

meta-oe/recipes-devtools/nodejs/nodejs.inc new file +4 -0
+}
+
+do_install_append_class-target() {
+    sed "1s^.*^#\!${bindir}/env node^g" -i

${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js

meta-oe/recipes-devtools/nodejs/nodejs.inc new file +5 -0
+}
+
+PACKAGES =+ "${PN}-npm"
+FILES_${PN}-npm = "${exec_prefix}/lib/node_modules ${bindir}/npm"
+RDEPENDS_${PN}-npm = "bash python-shell python-datetime python-subprocess

python-textutils"

meta-oe/recipes-devtools/nodejs/nodejs.inc new file +6 -0
+
+PACKAGES =+ "${PN}-systemtap"
+FILES_${PN}-systemtap = "${datadir}/systemtap"
+
+
+BBCLASSEXTEND = "native"
meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb +2 -5
index 41eb5ee..f9d3f04 100644
@@ -1,9 +1,6 @@
-DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
-HOMEPAGE = "http://nodejs.org"
-LICENSE = "MIT & BSD & Artistic-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=14115ff11211df04b031ec7d40b6d31b"
+require nodejs.inc
 
-DEPENDS = "openssl"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=14115ff11211df04b031ec7d40b6d31b"
 
 SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.gz \
     file://enable-armv5e-build.patch \
@@ -11,70 +8,3 @@ SRC_URI = "
 http://nodejs.org/dist/v${PV}/node-v${PV}.tar.gz \
 "
 SRC_URI[md5sum] = "5523ec4347d7fe6b0f6dda1d1c7799d5"
 SRC_URI[sha256sum] =

"b23d64df051c9c969b0c583f802d5d71de342e53067127a5061415be7e12f39d"

meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb +0 -16
-
-S = "${WORKDIR}/node-v${PV}"
-
-# v8 errors out if you have set CCACHE
-CCACHE = ""
-
-def map_nodejs_arch(a, d):
-    import re
-
-    if   re.match('p(pc|owerpc)(|64)', a): return 'ppc'
-    elif re.match('i.86$', a): return 'ia32'
-    elif re.match('x86_64$', a): return 'x64'
-    elif re.match('arm64$', a): return 'arm'
-    return a
-
-ARCHFLAGS_arm = "${@bb.utils.contains('TUNE_FEATURES',

'callconvention-hard', '--with-arm-float-abi=hard', '--with-arm-float-abi=softfp', d)}"

meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb +0 -4
-GYP_DEFINES_append_mipsel = " mips_arch_variant='r1' "
-ARCHFLAGS ?= ""
-
-# Node is way too cool to use proper autotools, so we install two

wrappers to forcefully inject proper arch cflags to workaround gypi

meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb +0 -6
-do_configure () {
-    export LD="${CXX}"
-    GYP_DEFINES="${GYP_DEFINES}" export GYP_DEFINES
-    # $TARGET_ARCH settings don't match --dest-cpu settings
-   ./configure --prefix=${prefix} --without-snapshot --shared-openssl \
-               --dest-cpu="${@map_nodejs_arch(d.getVar('TARGET_ARCH',

True), d)}" \

meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb +0 -19
-               --dest-os=linux \
-               ${ARCHFLAGS}
-}
-
-do_compile () {
-    export LD="${CXX}"
-    oe_runmake BUILDTYPE=Release
-}
-
-do_install () {
-    oe_runmake install DESTDIR=${D}
-}
-
-do_install_append_class-native() {
-    # use node from PATH instead of absolute path to sysroot
-    # node-v0.10.25/tools/install.py is using:
-    # shebang = os.path.join(node_prefix, 'bin/node')
-    # update_shebang(link_path, shebang)
-    # and node_prefix can be very long path to bindir in native sysroot

and
- # when it exceeds 128 character shebang limit it's stripped to
incorrect path
- # and npm fails to execute like in this case with 133 characters show
in log.do_install:
- # updating shebang of
/home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/work/x86_64-linux/nodejs-native/0.10.15-r0/image/home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/npm to
/home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/node

meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb +0 -2
-    # /usr/bin/npm is symlink to /usr/lib/node_modules/npm/bin/npm-cli.js
-    # use sed on npm-cli.js because otherwise symlink is replaced with

normal file and

meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb +0 -2
-    # npm-cli.js continues to use old shebang
-    sed "1s^.*^#\!/usr/bin/env node^g" -i

${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js

meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb +0 -4
-}
-
-do_install_append_class-target() {
-    sed "1s^.*^#\!${bindir}/env node^g" -i

${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js

meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb +0 -5
-}
-
-PACKAGES =+ "${PN}-npm"
-FILES_${PN}-npm = "${exec_prefix}/lib/node_modules ${bindir}/npm"
-RDEPENDS_${PN}-npm = "bash python-shell python-datetime python-subprocess

python-textutils"

meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb +0 -6
-
-PACKAGES =+ "${PN}-systemtap"
-FILES_${PN}-systemtap = "${datadir}/systemtap"
-
-
-BBCLASSEXTEND = "native"
meta-oe/recipes-devtools/nodejs/nodejs_0.4.12.bb renamed from meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb +0 -0
similarity index 87%
rename from meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb
rename to meta-oe/recipes-devtools/nodejs/nodejs_0.4.12.bb
index c73cefc..0525143 100644
@@ -5,7 +5,7 @@ LIC_FILES_CHKSUM =

"file://LICENSE;md5=d6237f3a840aef5b7880fb4e49eecfe5"

DEPENDS = "openssl"

-PNBLACKLIST[nodejs4] ?= "Used only by currently blacklisted cloud9 and fails to build for qemuarm with thumb: error: #error For thumb inter-working we require an architecture which supports blx" +PNBLACKLIST[nodejs_0.4.12] ?= "Used only by currently blacklisted cloud9 and fails to build for qemuarm with thumb: error: #error For thumb inter-working we require an architecture which supports blx"

 SRC_URI = " \
     http://nodejs.org/dist/node-v${PV}.tar.gz \

--
2.6.0.rc3

#3 lore raw

Re: [meta-oe][PATCH 1/2] nodejs: cleanup

Quoted 2 lines · Martin Jansa

As it was already PNBLACKLISTed I wouldn't mind removing it completely and replacing 0.12.7 with new version (without introducing the .inc) file.

Thanks for providing the background info, I was wondering why it was implemented this way.

I'll submit a v2 where everything is replaced with 4.2.2.

Thanks

#4 lore raw

PATCH 2/2 nodejs: add recipe for latest stable

In reply to Trevor Woerner

The latest stable version of nodejs is 4.2.2; add a recipe to make it available.

---
 meta-oe/recipes-devtools/nodejs/nodejs_4.2.2.bb | 9 +++++++++
 1 file changed, 9 insertions(+)
 create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs_4.2.2.bb
meta-oe/recipes-devtools/nodejs/nodejs_4.2.2.bb new file +9 -0
new file mode 100644
index 0000000..7572625
@@ -0,0 +1,9 @@
+require nodejs.inc
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ee90ba97d933fc8d56e97812b7dd62e9"
+
+SRC_URI = " \
+    http://nodejs.org/dist/v${PV}/node-v${PV}.tar.gz \
+    "
+SRC_URI[md5sum] = "7c46c158e4c9a44cfbd039951c13dfe6"
+SRC_URI[sha256sum] = "00e709353435b436b5bbf5e62272ebb15fe801065422c4c2afe2b93456210cb1"
Signature · 1 line
2.6.0.rc3