All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-oe][PATCH v3 0/1] nodejs cleanup and update
@ 2015-12-22  4:27 Trevor Woerner
  2015-12-22  4:27 ` [meta-oe][PATCH v3 1/1] nodejs: " Trevor Woerner
  0 siblings, 1 reply; 8+ messages in thread
From: Trevor Woerner @ 2015-12-22  4:27 UTC (permalink / raw)
  To: openembedded-devel

My third attempt to update and cleanup the nodejs recipes.

This patch removes the older nodejs recipes and replaces them with a recipe
for nodejs 4.2.3 (the latest stable at this time).

Nodejs is picky about which architectures it supports. Add COMPATIBLE_MACHINE
and cleanup the architecture mapping function to reflect what is currently
supported. Nodejs dropped support for ARMv5 around V8 version 3.22. Also, gcc
no longer supports -mfpu=vfpv2 (which is what the nodejs build thinks it
should be using).

Successfully built for:
  qemuarm, qemuarm64, qemumips, qemumips64, qemuppc, qemuppc64, qemux86,
  qemux86-64, beaglebone, intel-corei7-64, genericx86, genericx86-64

Successfully ran on:
  qemuarm64, qemumips, qemux86, qemux86-64

Failed to run for:
  qemuppc:
    unhandled signal 4 at 2ee3bf48 nip 2ee3bf48 lr 2ee3ed70 code 30001
    Illegal instruction
  qemuppc64:
    I wasn't able to successfully run a qemuppc64 VM

Changes from v2:
  handle qemuarm build failure

Changes from v1:
  don't try to keep and unite the old recipe versions, just replace them with
  the latest stable

Trevor Woerner (1):
  nodejs: cleanup and update

 .../nodejs/nodejs/enable-armv5e-build.patch        | 22 ----------
 .../nodejs/nodejs4/libev-cross-cc_0.4.12.patch     | 13 ------
 meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb  | 49 ----------------------
 .../nodejs/{nodejs_0.12.7.bb => nodejs_4.2.3.bb}   | 23 ++++++----
 4 files changed, 16 insertions(+), 91 deletions(-)
 delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch
 delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch
 delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb
 rename meta-oe/recipes-devtools/nodejs/{nodejs_0.12.7.bb => nodejs_4.2.3.bb} (81%)

-- 
2.6.0.rc3



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [meta-oe][PATCH v3 1/1] nodejs: cleanup and update
  2015-12-22  4:27 [meta-oe][PATCH v3 0/1] nodejs cleanup and update Trevor Woerner
@ 2015-12-22  4:27 ` Trevor Woerner
  2015-12-22  9:35   ` Andre McCurdy
  0 siblings, 1 reply; 8+ messages in thread
From: Trevor Woerner @ 2015-12-22  4:27 UTC (permalink / raw)
  To: openembedded-devel

Remove old nodejs_0.4.12 and update nodejs_0.12.7 to the latest stable
nodejs_4.2.3.

Nodejs is picky about which architectures it supports. The supported arch
mapping required some updating to bring it up to date with the current nodejs
code. Add COMPATIBLE_MACHINE entries so it only builds for the supported
architectures.

It appears the nodejs project removed support for ARMv5 somewhere around V8
3.22 or 3.23. Also, gcc 5 no longer supports -mfpu=vfpv2 (which is what the
nodejs build thinks it should be using for ARMv5).
See https://github.com/nodejs/node/issues/3061

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
---
 .../nodejs/nodejs/enable-armv5e-build.patch        | 22 ----------
 .../nodejs/nodejs4/libev-cross-cc_0.4.12.patch     | 13 ------
 meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb  | 49 ----------------------
 .../nodejs/{nodejs_0.12.7.bb => nodejs_4.2.3.bb}   | 23 ++++++----
 4 files changed, 16 insertions(+), 91 deletions(-)
 delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch
 delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch
 delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb
 rename meta-oe/recipes-devtools/nodejs/{nodejs_0.12.7.bb => nodejs_4.2.3.bb} (81%)

diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch b/meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch
deleted file mode 100644
index cc7c9ab..0000000
--- a/meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Building for qemuarm without thumb enabled is using -march=armv5e which isn't
-recognized here. Fix it by adding __ARM_ARCH_5E__.
-
-v0.12.2 branch of node doesn't seem to be affected, because it's using
-different version of v8
-
-Upstream-Status: Pending
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-
-diff -uNr node-v0.12.2/deps/v8/src/base/atomicops_internals_arm_gcc.h node-v0.12.2-fix/deps/v8/src/base/atomicops_internals_arm_gcc.h
---- node-v0.12.2/deps/v8/src/base/atomicops_internals_arm_gcc.h	2015-04-01 00:13:01.000000000 +0200
-+++ node-v0.12.2-fix/deps/v8/src/base/atomicops_internals_arm_gcc.h	2015-04-28 14:30:43.119509207 +0200
-@@ -156,7 +156,7 @@
- 
- // This tests against any known ARMv5 variant.
- #elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \
--      defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
-+      defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
- 
- // The kernel also provides a helper function to perform an atomic
- // compare-and-swap operation at the hard-wired address 0xffff0fc0.
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch b/meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch
deleted file mode 100644
index 2b9838f..0000000
--- a/meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/deps/libev/wscript b/deps/libev/wscript
-index 4f6c9a8..1796749 100644
---- a/deps/libev/wscript
-+++ b/deps/libev/wscript
-@@ -58,7 +58,7 @@ def configure(conf):
-           return 0;
-       }
-   """
--  conf.check_cc(fragment=code, define_name="HAVE_CLOCK_SYSCALL", execute=True,
-+  conf.check_cc(fragment=code, define_name="HAVE_CLOCK_SYSCALL", execute=False,
-                 msg="Checking for SYS_clock_gettime")
- 
-   have_librt = conf.check(lib='rt', uselib_store='RT')
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb b/meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb
deleted file mode 100644
index c73cefc..0000000
--- a/meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "nodeJS Evented I/O for V8 JavaScript"
-HOMEPAGE = "http://nodejs.org"
-LICENSE = "MIT & Zlib"
-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"
-
-SRC_URI = " \
-    http://nodejs.org/dist/node-v${PV}.tar.gz \
-    file://libev-cross-cc_${PV}.patch \
-"
-SRC_URI[md5sum] = "a6375eaa43db5356bf443e25b828ae16"
-SRC_URI[sha256sum] = "c01af05b933ad4d2ca39f63cac057f54f032a4d83cff8711e42650ccee24fce4"
-
-S = "${WORKDIR}/node-v${PV}"
-
-# v8 errors out if you have set CCACHE
-CCACHE = ""
-
-do_configure () {
-    sed -i -e 's:/usr/lib:${STAGING_LIBDIR}:g' wscript
-    sed -i -e 's:/usr/local/lib:${STAGING_LIBDIR}:g' wscript
-    ./configure --prefix=${prefix} --without-snapshot
-}
-
-do_compile () {
-    make
-}
-
-do_install () {
-    oe_runmake install DESTDIR=${D}
-
-    # fix namespace conflicts with other nodejs recipes
-    mv ${D}${bindir}/node ${D}${bindir}/node4
-    mv ${D}${bindir}/node-waf ${D}${bindir}/node4-waf
-
-    mv ${D}${includedir}/node ${D}${includedir}/node4
-
-    mv ${D}${libdir}/node ${D}${libdir}/node4
-    mv ${D}${libdir}/pkgconfig/nodejs.pc ${D}${libdir}/pkgconfig/nodejs4.pc
-    sed -i -e s:include/node:include/node4: ${D}${libdir}/pkgconfig/nodejs4.pc
-
-    mv ${D}${datadir}/man/man1/node.1 ${D}${datadir}/man/man1/node4.1
-}
-
-FILES_${PN} += "${libdir}/node4/wafadmin"
-BBCLASSEXTEND = "native"
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb b/meta-oe/recipes-devtools/nodejs/nodejs_4.2.3.bb
similarity index 81%
rename from meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb
rename to meta-oe/recipes-devtools/nodejs/nodejs_4.2.3.bb
index 41eb5ee..5ae5be2 100644
--- a/meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb
+++ b/meta-oe/recipes-devtools/nodejs/nodejs_4.2.3.bb
@@ -1,16 +1,24 @@
 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"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ee90ba97d933fc8d56e97812b7dd62e9"
 
 DEPENDS = "openssl"
 
+COMPATIBLE_MACHINE = "(-)"
+COMPATIBLE_MACHINE_x86 = "(.*)"
+COMPATIBLE_MACHINE_x86-64 = "(.*)"
+COMPATIBLE_MACHINE_armv7a = "(.*)"
+COMPATIBLE_MACHINE_aarch64 = "(.*)"
+COMPATIBLE_MACHINE_mips = "(.*)"
+COMPATIBLE_MACHINE_powerpc = "(.*)"
+COMPATIBLE_MACHINE_powerpc64 = "(.*)"
+
 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"
+SRC_URI[md5sum] = "529a8abd4ca5a2225636767d3f14c382"
+SRC_URI[sha256sum] = "5008ade5feb4b089f59163f66bffddc113f27de5d78edf203e39435c2c5d554f"
 
 S = "${WORKDIR}/node-v${PV}"
 
@@ -20,10 +28,11 @@ 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'
+    if   re.match('i.86$', a): return 'ia32'
     elif re.match('x86_64$', a): return 'x64'
-    elif re.match('arm64$', a): return 'arm'
+    elif re.match('aarch64$', a): return 'arm64'
+    elif re.match('powerpc64$', a): return 'ppc64'
+    elif re.match('powerpc$', a): return 'ppc'
     return a
 
 ARCHFLAGS_arm = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '--with-arm-float-abi=hard', '--with-arm-float-abi=softfp', d)}"
-- 
2.6.0.rc3



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [meta-oe][PATCH v3 1/1] nodejs: cleanup and update
  2015-12-22  4:27 ` [meta-oe][PATCH v3 1/1] nodejs: " Trevor Woerner
@ 2015-12-22  9:35   ` Andre McCurdy
  2015-12-22 15:29     ` Trevor Woerner
  0 siblings, 1 reply; 8+ messages in thread
From: Andre McCurdy @ 2015-12-22  9:35 UTC (permalink / raw)
  To: openembedded-devel

Hi Trevor,

On Mon, Dec 21, 2015 at 8:27 PM, Trevor Woerner <twoerner@gmail.com> wrote:
> Remove old nodejs_0.4.12 and update nodejs_0.12.7 to the latest stable
> nodejs_4.2.3.
>
> Nodejs is picky about which architectures it supports. The supported arch
> mapping required some updating to bring it up to date with the current nodejs
> code. Add COMPATIBLE_MACHINE entries so it only builds for the supported
> architectures.
>
> It appears the nodejs project removed support for ARMv5 somewhere around V8
> 3.22 or 3.23. Also, gcc 5 no longer supports -mfpu=vfpv2 (which is what the
> nodejs build thinks it should be using for ARMv5).
> See https://github.com/nodejs/node/issues/3061

Here's the link to the "official" announcement about v8 dropping
support for ARM cores without vfp2 support:

  https://groups.google.com/forum/#!topic/v8-users/aSOFbaAQvMk

"Due the increasing cost of the keeping the "no-VFPv2" port of V8
working on ARM, we are planning on making 3.17 the last V8 release
that that supports ARM chips without VFPv2. Starting with the 3.18
release, the minimal V8 requirements will increase to ARMv6 + VFPv2.
In order to simplify maintenance, we will also remove the "pre-VFP2"
ARM code from the V8 code base."

Maybe worth including that in the commit message.

Also see comments inline below.


> Signed-off-by: Trevor Woerner <twoerner@gmail.com>
> ---
>  .../nodejs/nodejs/enable-armv5e-build.patch        | 22 ----------
>  .../nodejs/nodejs4/libev-cross-cc_0.4.12.patch     | 13 ------
>  meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb  | 49 ----------------------
>  .../nodejs/{nodejs_0.12.7.bb => nodejs_4.2.3.bb}   | 23 ++++++----
>  4 files changed, 16 insertions(+), 91 deletions(-)
>  delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch
>  delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch
>  delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb
>  rename meta-oe/recipes-devtools/nodejs/{nodejs_0.12.7.bb => nodejs_4.2.3.bb} (81%)
>
> diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch b/meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch
> deleted file mode 100644
> index cc7c9ab..0000000
> --- a/meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch
> +++ /dev/null
> @@ -1,22 +0,0 @@
> -Building for qemuarm without thumb enabled is using -march=armv5e which isn't
> -recognized here. Fix it by adding __ARM_ARCH_5E__.
> -
> -v0.12.2 branch of node doesn't seem to be affected, because it's using
> -different version of v8
> -
> -Upstream-Status: Pending
> -
> -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
> -
> -diff -uNr node-v0.12.2/deps/v8/src/base/atomicops_internals_arm_gcc.h node-v0.12.2-fix/deps/v8/src/base/atomicops_internals_arm_gcc.h
> ---- node-v0.12.2/deps/v8/src/base/atomicops_internals_arm_gcc.h        2015-04-01 00:13:01.000000000 +0200
> -+++ node-v0.12.2-fix/deps/v8/src/base/atomicops_internals_arm_gcc.h    2015-04-28 14:30:43.119509207 +0200
> -@@ -156,7 +156,7 @@
> -
> - // This tests against any known ARMv5 variant.
> - #elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \
> --      defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
> -+      defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
> -
> - // The kernel also provides a helper function to perform an atomic
> - // compare-and-swap operation at the hard-wired address 0xffff0fc0.
> diff --git a/meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch b/meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch
> deleted file mode 100644
> index 2b9838f..0000000
> --- a/meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch
> +++ /dev/null
> @@ -1,13 +0,0 @@
> -diff --git a/deps/libev/wscript b/deps/libev/wscript
> -index 4f6c9a8..1796749 100644
> ---- a/deps/libev/wscript
> -+++ b/deps/libev/wscript
> -@@ -58,7 +58,7 @@ def configure(conf):
> -           return 0;
> -       }
> -   """
> --  conf.check_cc(fragment=code, define_name="HAVE_CLOCK_SYSCALL", execute=True,
> -+  conf.check_cc(fragment=code, define_name="HAVE_CLOCK_SYSCALL", execute=False,
> -                 msg="Checking for SYS_clock_gettime")
> -
> -   have_librt = conf.check(lib='rt', uselib_store='RT')
> diff --git a/meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb b/meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb
> deleted file mode 100644
> index c73cefc..0000000
> --- a/meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -SUMMARY = "nodeJS Evented I/O for V8 JavaScript"
> -HOMEPAGE = "http://nodejs.org"
> -LICENSE = "MIT & Zlib"
> -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"
> -
> -SRC_URI = " \
> -    http://nodejs.org/dist/node-v${PV}.tar.gz \
> -    file://libev-cross-cc_${PV}.patch \
> -"
> -SRC_URI[md5sum] = "a6375eaa43db5356bf443e25b828ae16"
> -SRC_URI[sha256sum] = "c01af05b933ad4d2ca39f63cac057f54f032a4d83cff8711e42650ccee24fce4"
> -
> -S = "${WORKDIR}/node-v${PV}"
> -
> -# v8 errors out if you have set CCACHE
> -CCACHE = ""
> -
> -do_configure () {
> -    sed -i -e 's:/usr/lib:${STAGING_LIBDIR}:g' wscript
> -    sed -i -e 's:/usr/local/lib:${STAGING_LIBDIR}:g' wscript
> -    ./configure --prefix=${prefix} --without-snapshot
> -}
> -
> -do_compile () {
> -    make
> -}
> -
> -do_install () {
> -    oe_runmake install DESTDIR=${D}
> -
> -    # fix namespace conflicts with other nodejs recipes
> -    mv ${D}${bindir}/node ${D}${bindir}/node4
> -    mv ${D}${bindir}/node-waf ${D}${bindir}/node4-waf
> -
> -    mv ${D}${includedir}/node ${D}${includedir}/node4
> -
> -    mv ${D}${libdir}/node ${D}${libdir}/node4
> -    mv ${D}${libdir}/pkgconfig/nodejs.pc ${D}${libdir}/pkgconfig/nodejs4.pc
> -    sed -i -e s:include/node:include/node4: ${D}${libdir}/pkgconfig/nodejs4.pc
> -
> -    mv ${D}${datadir}/man/man1/node.1 ${D}${datadir}/man/man1/node4.1
> -}
> -
> -FILES_${PN} += "${libdir}/node4/wafadmin"
> -BBCLASSEXTEND = "native"
> diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb b/meta-oe/recipes-devtools/nodejs/nodejs_4.2.3.bb
> similarity index 81%
> rename from meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb
> rename to meta-oe/recipes-devtools/nodejs/nodejs_4.2.3.bb
> index 41eb5ee..5ae5be2 100644
> --- a/meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb
> +++ b/meta-oe/recipes-devtools/nodejs/nodejs_4.2.3.bb
> @@ -1,16 +1,24 @@
>  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"
> +LIC_FILES_CHKSUM = "file://LICENSE;md5=ee90ba97d933fc8d56e97812b7dd62e9"
>
>  DEPENDS = "openssl"
>
> +COMPATIBLE_MACHINE = "(-)"
> +COMPATIBLE_MACHINE_x86 = "(.*)"
> +COMPATIBLE_MACHINE_x86-64 = "(.*)"
> +COMPATIBLE_MACHINE_armv7a = "(.*)"

Please blacklist armv4 and armv5 instead of whitelisting armv7a (armv6
and potential future arm targets such as armv7ve are still expected to
work. It's only armv4 and armv5 which are not).

> +COMPATIBLE_MACHINE_aarch64 = "(.*)"
> +COMPATIBLE_MACHINE_mips = "(.*)"
> +COMPATIBLE_MACHINE_powerpc = "(.*)"
> +COMPATIBLE_MACHINE_powerpc64 = "(.*)"
> +
>  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"
> +SRC_URI[md5sum] = "529a8abd4ca5a2225636767d3f14c382"
> +SRC_URI[sha256sum] = "5008ade5feb4b089f59163f66bffddc113f27de5d78edf203e39435c2c5d554f"
>
>  S = "${WORKDIR}/node-v${PV}"
>
> @@ -20,10 +28,11 @@ 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'
> +    if   re.match('i.86$', a): return 'ia32'
>      elif re.match('x86_64$', a): return 'x64'
> -    elif re.match('arm64$', a): return 'arm'
> +    elif re.match('aarch64$', a): return 'arm64'
> +    elif re.match('powerpc64$', a): return 'ppc64'
> +    elif re.match('powerpc$', a): return 'ppc'
>      return a
>
>  ARCHFLAGS_arm = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '--with-arm-float-abi=hard', '--with-arm-float-abi=softfp', d)}"
> --
> 2.6.0.rc3
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [meta-oe][PATCH v3 1/1] nodejs: cleanup and update
  2015-12-22  9:35   ` Andre McCurdy
@ 2015-12-22 15:29     ` Trevor Woerner
  2015-12-22 15:49       ` Martin Jansa
  0 siblings, 1 reply; 8+ messages in thread
From: Trevor Woerner @ 2015-12-22 15:29 UTC (permalink / raw)
  To: openembedded-devel

Hi Andre,

On 12/22/15 04:35, Andre McCurdy wrote:
> Here's the link to the "official" announcement about v8 dropping
> support for ARM cores without vfp2 support:

Thanks, I'll include that in v4.

> +COMPATIBLE_MACHINE = "(-)"
> +COMPATIBLE_MACHINE_x86 = "(.*)"
> +COMPATIBLE_MACHINE_x86-64 = "(.*)"
> +COMPATIBLE_MACHINE_armv7a = "(.*)"
> Please blacklist armv4 and armv5 instead of whitelisting armv7a (armv6
> and potential future arm targets such as armv7ve are still expected to
> work. It's only armv4 and armv5 which are not).

That was what I was trying to do :-) I don't have much experience in
this, I've been asking on IRC and the mailing lists, and there aren't
many examples to copy. I think the following works:

    COMPATIBLE_MACHINE_armv4 = "(!.*armv4).*"
    COMPATIBLE_MACHINE_armv5 = "(!.*armv5).*"
    COMPATIBLE_MACHINE_mips64 = "(!.*mips64).*"

?

Best regards,
    Trevor


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [meta-oe][PATCH v3 1/1] nodejs: cleanup and update
  2015-12-22 15:29     ` Trevor Woerner
@ 2015-12-22 15:49       ` Martin Jansa
  2015-12-22 16:00         ` Trevor Woerner
  0 siblings, 1 reply; 8+ messages in thread
From: Martin Jansa @ 2015-12-22 15:49 UTC (permalink / raw)
  To: openembedded-devel

[-- Attachment #1: Type: text/plain, Size: 1608 bytes --]

On Tue, Dec 22, 2015 at 10:29:47AM -0500, Trevor Woerner wrote:
> Hi Andre,
> 
> On 12/22/15 04:35, Andre McCurdy wrote:
> > Here's the link to the "official" announcement about v8 dropping
> > support for ARM cores without vfp2 support:
> 
> Thanks, I'll include that in v4.
> 
> > +COMPATIBLE_MACHINE = "(-)"
> > +COMPATIBLE_MACHINE_x86 = "(.*)"
> > +COMPATIBLE_MACHINE_x86-64 = "(.*)"
> > +COMPATIBLE_MACHINE_armv7a = "(.*)"
> > Please blacklist armv4 and armv5 instead of whitelisting armv7a (armv6
> > and potential future arm targets such as armv7ve are still expected to
> > work. It's only armv4 and armv5 which are not).
> 
> That was what I was trying to do :-) I don't have much experience in
> this, I've been asking on IRC and the mailing lists, and there aren't
> many examples to copy. I think the following works:
> 
>     COMPATIBLE_MACHINE_armv4 = "(!.*armv4).*"
>     COMPATIBLE_MACHINE_armv5 = "(!.*armv5).*"
>     COMPATIBLE_MACHINE_mips64 = "(!.*mips64).*"
> 
> ?

It's not nice but you can use:
COMPATIBLE_MACHINE_arm = "(.*)"
COMPATIBLE_MACHINE_armv4 = "(-)"
COMPATIBLE_MACHINE_armv5 = "(-)"
COMPATIBLE_MACHINE_mips64 = "(-)"

If these 3 are the only 3 unsupported, then you can drop override for
x86, x86-64, arm and change the default to (.*).

> Best regards,
>     Trevor
> -- 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 188 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [meta-oe][PATCH v3 1/1] nodejs: cleanup and update
  2015-12-22 15:49       ` Martin Jansa
@ 2015-12-22 16:00         ` Trevor Woerner
  0 siblings, 0 replies; 8+ messages in thread
From: Trevor Woerner @ 2015-12-22 16:00 UTC (permalink / raw)
  To: openembedded-devel

Hi Martin,

On 12/22/15 10:49, Martin Jansa wrote:
>> That was what I was trying to do :-) I don't have much experience in
>> this, I've been asking on IRC and the mailing lists, and there aren't
>> many examples to copy. I think the following works:
>>
>>     COMPATIBLE_MACHINE_armv4 = "(!.*armv4).*"
>>     COMPATIBLE_MACHINE_armv5 = "(!.*armv5).*"
>>     COMPATIBLE_MACHINE_mips64 = "(!.*mips64).*"
>>
>> ?
> It's not nice but you can use:
> COMPATIBLE_MACHINE_arm = "(.*)"
> COMPATIBLE_MACHINE_armv4 = "(-)"
> COMPATIBLE_MACHINE_armv5 = "(-)"
> COMPATIBLE_MACHINE_mips64 = "(-)"
>
> If these 3 are the only 3 unsupported, then you can drop override for
> x86, x86-64, arm and change the default to (.*).

Okay, those look like they might work too. I build-tested[1] the
COMPATIBLE_MACHINE lines I proposed and the build did what I wanted it
to do against the 12 I tried. I get the feeling the ones I proposed
might do better against things like "armv5te" and those sorts of
variants? But I'm happy to send a v5 if yours (or something else) are
better.

Best regards,
    Trevor




[1] I run-tested them yesterday, so I probably don't have to re-do that
test


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [meta-oe][PATCH v3 1/1] nodejs: cleanup and update
  2015-12-22  4:10 ` [meta-oe][PATCH v3 1/1] nodejs: " Trevor Woerner
@ 2015-12-22  4:24   ` Trevor Woerner
  0 siblings, 0 replies; 8+ messages in thread
From: Trevor Woerner @ 2015-12-22  4:24 UTC (permalink / raw)
  To: openembedded-core

Oops, sent to wrong list. resending...


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [meta-oe][PATCH v3 1/1] nodejs: cleanup and update
  2015-12-22  4:10 [meta-oe][PATCH v3 0/1] nodejs " Trevor Woerner
@ 2015-12-22  4:10 ` Trevor Woerner
  2015-12-22  4:24   ` Trevor Woerner
  0 siblings, 1 reply; 8+ messages in thread
From: Trevor Woerner @ 2015-12-22  4:10 UTC (permalink / raw)
  To: openembedded-core

Remove old nodejs_0.4.12 and update nodejs_0.12.7 to the latest stable
nodejs_4.2.3.

Nodejs is picky about which architectures it supports. The supported arch
mapping required some updating to bring it up to date with the current nodejs
code. Add COMPATIBLE_MACHINE entries so it only builds for the supported
architectures.

It appears the nodejs project removed support for ARMv5 somewhere around V8
3.22 or 3.23. Also, gcc 5 no longer supports -mfpu=vfpv2 (which is what the
nodejs build thinks it should be using for ARMv5).
See https://github.com/nodejs/node/issues/3061

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
---
 .../nodejs/nodejs/enable-armv5e-build.patch        | 22 ----------
 .../nodejs/nodejs4/libev-cross-cc_0.4.12.patch     | 13 ------
 meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb  | 49 ----------------------
 .../nodejs/{nodejs_0.12.7.bb => nodejs_4.2.3.bb}   | 23 ++++++----
 4 files changed, 16 insertions(+), 91 deletions(-)
 delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch
 delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch
 delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb
 rename meta-oe/recipes-devtools/nodejs/{nodejs_0.12.7.bb => nodejs_4.2.3.bb} (81%)

diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch b/meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch
deleted file mode 100644
index cc7c9ab..0000000
--- a/meta-oe/recipes-devtools/nodejs/nodejs/enable-armv5e-build.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Building for qemuarm without thumb enabled is using -march=armv5e which isn't
-recognized here. Fix it by adding __ARM_ARCH_5E__.
-
-v0.12.2 branch of node doesn't seem to be affected, because it's using
-different version of v8
-
-Upstream-Status: Pending
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-
-diff -uNr node-v0.12.2/deps/v8/src/base/atomicops_internals_arm_gcc.h node-v0.12.2-fix/deps/v8/src/base/atomicops_internals_arm_gcc.h
---- node-v0.12.2/deps/v8/src/base/atomicops_internals_arm_gcc.h	2015-04-01 00:13:01.000000000 +0200
-+++ node-v0.12.2-fix/deps/v8/src/base/atomicops_internals_arm_gcc.h	2015-04-28 14:30:43.119509207 +0200
-@@ -156,7 +156,7 @@
- 
- // This tests against any known ARMv5 variant.
- #elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \
--      defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
-+      defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
- 
- // The kernel also provides a helper function to perform an atomic
- // compare-and-swap operation at the hard-wired address 0xffff0fc0.
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch b/meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch
deleted file mode 100644
index 2b9838f..0000000
--- a/meta-oe/recipes-devtools/nodejs/nodejs4/libev-cross-cc_0.4.12.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/deps/libev/wscript b/deps/libev/wscript
-index 4f6c9a8..1796749 100644
---- a/deps/libev/wscript
-+++ b/deps/libev/wscript
-@@ -58,7 +58,7 @@ def configure(conf):
-           return 0;
-       }
-   """
--  conf.check_cc(fragment=code, define_name="HAVE_CLOCK_SYSCALL", execute=True,
-+  conf.check_cc(fragment=code, define_name="HAVE_CLOCK_SYSCALL", execute=False,
-                 msg="Checking for SYS_clock_gettime")
- 
-   have_librt = conf.check(lib='rt', uselib_store='RT')
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb b/meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb
deleted file mode 100644
index c73cefc..0000000
--- a/meta-oe/recipes-devtools/nodejs/nodejs4_0.4.12.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "nodeJS Evented I/O for V8 JavaScript"
-HOMEPAGE = "http://nodejs.org"
-LICENSE = "MIT & Zlib"
-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"
-
-SRC_URI = " \
-    http://nodejs.org/dist/node-v${PV}.tar.gz \
-    file://libev-cross-cc_${PV}.patch \
-"
-SRC_URI[md5sum] = "a6375eaa43db5356bf443e25b828ae16"
-SRC_URI[sha256sum] = "c01af05b933ad4d2ca39f63cac057f54f032a4d83cff8711e42650ccee24fce4"
-
-S = "${WORKDIR}/node-v${PV}"
-
-# v8 errors out if you have set CCACHE
-CCACHE = ""
-
-do_configure () {
-    sed -i -e 's:/usr/lib:${STAGING_LIBDIR}:g' wscript
-    sed -i -e 's:/usr/local/lib:${STAGING_LIBDIR}:g' wscript
-    ./configure --prefix=${prefix} --without-snapshot
-}
-
-do_compile () {
-    make
-}
-
-do_install () {
-    oe_runmake install DESTDIR=${D}
-
-    # fix namespace conflicts with other nodejs recipes
-    mv ${D}${bindir}/node ${D}${bindir}/node4
-    mv ${D}${bindir}/node-waf ${D}${bindir}/node4-waf
-
-    mv ${D}${includedir}/node ${D}${includedir}/node4
-
-    mv ${D}${libdir}/node ${D}${libdir}/node4
-    mv ${D}${libdir}/pkgconfig/nodejs.pc ${D}${libdir}/pkgconfig/nodejs4.pc
-    sed -i -e s:include/node:include/node4: ${D}${libdir}/pkgconfig/nodejs4.pc
-
-    mv ${D}${datadir}/man/man1/node.1 ${D}${datadir}/man/man1/node4.1
-}
-
-FILES_${PN} += "${libdir}/node4/wafadmin"
-BBCLASSEXTEND = "native"
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb b/meta-oe/recipes-devtools/nodejs/nodejs_4.2.3.bb
similarity index 81%
rename from meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb
rename to meta-oe/recipes-devtools/nodejs/nodejs_4.2.3.bb
index 41eb5ee..5ae5be2 100644
--- a/meta-oe/recipes-devtools/nodejs/nodejs_0.12.7.bb
+++ b/meta-oe/recipes-devtools/nodejs/nodejs_4.2.3.bb
@@ -1,16 +1,24 @@
 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"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ee90ba97d933fc8d56e97812b7dd62e9"
 
 DEPENDS = "openssl"
 
+COMPATIBLE_MACHINE = "(-)"
+COMPATIBLE_MACHINE_x86 = "(.*)"
+COMPATIBLE_MACHINE_x86-64 = "(.*)"
+COMPATIBLE_MACHINE_armv7a = "(.*)"
+COMPATIBLE_MACHINE_aarch64 = "(.*)"
+COMPATIBLE_MACHINE_mips = "(.*)"
+COMPATIBLE_MACHINE_powerpc = "(.*)"
+COMPATIBLE_MACHINE_powerpc64 = "(.*)"
+
 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"
+SRC_URI[md5sum] = "529a8abd4ca5a2225636767d3f14c382"
+SRC_URI[sha256sum] = "5008ade5feb4b089f59163f66bffddc113f27de5d78edf203e39435c2c5d554f"
 
 S = "${WORKDIR}/node-v${PV}"
 
@@ -20,10 +28,11 @@ 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'
+    if   re.match('i.86$', a): return 'ia32'
     elif re.match('x86_64$', a): return 'x64'
-    elif re.match('arm64$', a): return 'arm'
+    elif re.match('aarch64$', a): return 'arm64'
+    elif re.match('powerpc64$', a): return 'ppc64'
+    elif re.match('powerpc$', a): return 'ppc'
     return a
 
 ARCHFLAGS_arm = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '--with-arm-float-abi=hard', '--with-arm-float-abi=softfp', d)}"
-- 
2.6.0.rc3



^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-12-22 16:00 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-22  4:27 [meta-oe][PATCH v3 0/1] nodejs cleanup and update Trevor Woerner
2015-12-22  4:27 ` [meta-oe][PATCH v3 1/1] nodejs: " Trevor Woerner
2015-12-22  9:35   ` Andre McCurdy
2015-12-22 15:29     ` Trevor Woerner
2015-12-22 15:49       ` Martin Jansa
2015-12-22 16:00         ` Trevor Woerner
  -- strict thread matches above, loose matches on Subject: below --
2015-12-22  4:10 [meta-oe][PATCH v3 0/1] nodejs " Trevor Woerner
2015-12-22  4:10 ` [meta-oe][PATCH v3 1/1] nodejs: " Trevor Woerner
2015-12-22  4:24   ` Trevor Woerner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.