meta-nodejs icon indicating copy to clipboard operation
meta-nodejs copied to clipboard

Compile v6.8.1 on armv7

Open joaopaulob opened this issue 9 years ago • 7 comments
trafficstars

Hi,

I'm trying to compile the version v6.8.1 but I'm getting the following warning:

NOTE: preferred version 6.8.1 of nodejs not available (for item nodejs)
NOTE: versions of nodejs available: 0.12.7
NOTE: Resolving any missing task queue dependencies
NOTE: preferred version 6.8.1 of nodejs not available (for item nodejs-dev)
NOTE: versions of nodejs available: 0.12.7
NOTE: preferred version 6.8.1 of nodejs not available (for item nodejs)
NOTE: versions of nodejs available: 0.12.7

My local.conf:

PREFERRED_VERSION_nodejs = "6.8.1"

Build configuration:

BB_VERSION = "1.28.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Ubuntu-14.04" TARGET_SYS = "arm-poky-linux-gnueabi" MACHINE = "colibri-imx7" DISTRO = "poky" DISTRO_VERSION = "2.0.2" TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard cortexa7" TARGET_FPU = "vfp-neon" meta meta-yocto = "jethro:37eb21b2b1d5977a028a448e52551607fae99bf7" meta-oe meta-python meta-networking meta-gnome meta-ruby = "jethro:8ab04afbffb4bc5184cfe0655049de6f44269990" meta-yocto-bsp = "jethro:37eb21b2b1d5977a028a448e52551607fae99bf7" meta-toradex = "V2.6:485643678b2d39d37b1cc9d1aa2200bb934b08de" meta-fsl-arm = "jethro:417f669e4dede244a81e11aa6d8b60c4e333e589" meta-fsl-arm-extra = "master:fddc5aef6712b9ea87095772ad51a8d41be9ad67"

Am i missing anything? I'm using the latest master.

Best regards

joaopaulob avatar Oct 18 '16 16:10 joaopaulob

Maybe meta-nodejs is completely missing from your bblayers.conf? I don't see in your config...

gizero avatar Oct 18 '16 19:10 gizero

I agree with @gizero

Looks like meta-nodejs is not included.

imyller avatar Oct 18 '16 20:10 imyller

Hi,

My bblayers.conf:

`LCONF_VERSION = "6"

BBPATH = "${TOPDIR}" BBFILES ?= ""

BBLAYERS ?= "
${TOPDIR}/../meta
${TOPDIR}/../meta-yocto
${TOPDIR}/../meta-openembedded/meta-oe
${TOPDIR}/../meta-openembedded/meta-python
${TOPDIR}/../meta-openembedded/meta-networking
${TOPDIR}/../meta-openembedded/meta-gnome
${TOPDIR}/../meta-openembedded/meta-ruby
${TOPDIR}/../meta-yocto-bsp
${TOPDIR}/../meta-toradex \ ${TOPDIR}/../meta-fsl-arm \ ${TOPDIR}/../meta-fsl-arm-extra
${TOPDIR}/../meta-browser
${TOPDIR}/../meta-mytapp-chromium
" BBLAYERS_NON_REMOVABLE ?= "
${TOPDIR}/../meta
${TOPDIR}/../meta-yocto
" EXTRALAYERS +="
${TOPDIR}/../meta-nodejs
${TOPDIR}/../meta-nodejs-contrib
"`

$ bitbake -s | grep nodejs NOTE: preferred version 6.8.1 of nodejs not available NOTE: versions of nodejs available: 0.12.7 nodejs :0.12.7-r0
nodejs-native :0.12.7-r0
nodejs4-native :0.4.12-r0

`

$ cd meta-nodejs; git branch -av master c84b420 2016-10-14, Version 6.8.1 (Current) remotes/origin/HEAD -> origin/master remotes/origin/jethro aa4dfb9 2016-10-14, Version 6.8.1 (Current) remotes/origin/krogoth c84b420 2016-10-14, Version 6.8.1 (Current) remotes/origin/master c84b420 2016-10-14, Version 6.8.1 (Current)

`

The version 0.12.7 is compiled.

Regards

joaopaulob avatar Oct 18 '16 21:10 joaopaulob

Found the issue. The layer should not be on EXTRALAYERS section.

Now I am getting the following compiling error:

| arm-poky-linux-gnueabi-gcc -march=armv7-a -marm -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7 --sysroot=/home/joao/projetos/toradex/poky_imx7/poky-toradex/build/tmp/sysroots/colibri-imx7 '-D_REENTRANT' '-DPURIFY' '-DOPENSSL_NO_COMP' '-DOPENSSL_NO_SSL3' '-DOPENSSL_NO_HEARTBEATS' '-DOPENSSL_NO_HW' '-DENGINESDIR="/dev/null"' '-DTERMIOS' '-DOPENSSLDIR="/etc/ssl"' '-DL_ENDIAN' '-DAES_ASM' '-DCPUID_ASM' '-DOPENSSL_BN_ASM_MONT' '-DOPENSSL_CPUID_OBJ' '-DSHA1_ASM' '-DSHA256_ASM' '-DSHA512_ASM' '-DGHASH_ASM' '-DDSO_DLFCN' '-DHAVE_DLFCN_H' -I../deps/openssl -I../deps/openssl/openssl -I../deps/openssl/openssl/crypto -I../deps/openssl/openssl/crypto/asn1 -I../deps/openssl/openssl/crypto/evp -I../deps/openssl/openssl/crypto/md2 -I../deps/openssl/openssl/crypto/modes -I../deps/openssl/openssl/crypto/store -I../deps/openssl/openssl/include -Wno-missing-field-initializers -pthread -Wall -Wextra -Wno-unused-parameter -O3 -fno-omit-frame-pointer -MMD -MF /home/joao/projetos/toradex/poky_imx7/poky-toradex/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/nodejs/6.8.1-r1.7/node-v6.8.1/out/Release/.deps//home/joao/projetos/toradex/poky_imx7/poky-toradex/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/nodejs/6.8.1-r1.7/node-v6.8.1/out/Release/obj.target/openssl/deps/openssl/openssl/crypto/armcap.o.d.raw -O2 -pipe -g -feliminate-unused-debug-types -c -o /home/joao/projetos/toradex/poky_imx7/poky-toradex/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/nodejs/6.8.1-r1.7/node-v6.8.1/out/Release/obj.target/openssl/deps/openssl/openssl/crypto/armcap.o ../deps/openssl/openssl/crypto/armcap.c | arm-poky-linux-gnueabi-gcc -march=armv7-a -marm -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7 --sysroot=/home/joao/projetos/toradex/poky_imx7/poky-toradex/build/tmp/sysroots/colibri-imx7 '-D_REENTRANT' '-DPURIFY' '-DOPENSSL_NO_COMP' '-DOPENSSL_NO_SSL3' '-DOPENSSL_NO_HEARTBEATS' '-DOPENSSL_NO_HW' '-DENGINESDIR="/dev/null"' '-DTERMIOS' '-DOPENSSLDIR="/etc/ssl"' '-DL_ENDIAN' '-DAES_ASM' '-DCPUID_ASM' '-DOPENSSL_BN_ASM_MONT' '-DOPENSSL_CPUID_OBJ' '-DSHA1_ASM' '-DSHA256_ASM' '-DSHA512_ASM' '-DGHASH_ASM' '-DDSO_DLFCN' '-DHAVE_DLFCN_H' -I../deps/openssl -I../deps/openssl/openssl -I../deps/openssl/openssl/crypto -I../deps/openssl/openssl/crypto/asn1 -I../deps/openssl/openssl/crypto/evp -I../deps/openssl/openssl/crypto/md2 -I../deps/openssl/openssl/crypto/modes -I../deps/openssl/openssl/crypto/store -I../deps/openssl/openssl/include -Wno-missing-field-initializers -pthread -Wall -Wextra -Wno-unused-parameter -O3 -fno-omit-frame-pointer -MMD -MF /home/joao/projetos/toradex/poky_imx7/poky-toradex/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/nodejs/6.8.1-r1.7/node-v6.8.1/out/Release/.deps//home/joao/projetos/toradex/poky_imx7/poky-toradex/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/nodejs/6.8.1-r1.7/node-v6.8.1/out/Release/obj.target/openssl/deps/openssl/openssl/crypto/armv4cpuid.o.d.raw -O2 -pipe -g -feliminate-unused-debug-types -c -o /home/joao/projetos/toradex/poky_imx7/poky-toradex/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/nodejs/6.8.1-r1.7/node-v6.8.1/out/Release/obj.target/openssl/deps/openssl/openssl/crypto/armv4cpuid.o ../deps/openssl/openssl/crypto/armv4cpuid.S

| make[1]: execvp: printf: Argument list too long

| make[1]: *** [/home/joao/projetos/toradex/poky_imx7/poky-toradex/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/nodejs/6.8.1-r1.7/node-v6.8.1/out/Release/obj.target/deps/openssl/libopenssl.a] Error 127 | make[1]: Leaving directory `/home/joao/projetos/toradex/poky_imx7/poky-toradex/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/nodejs/6.8.1-r1.7/node-v6.8.1/out'

| make: *** [node] Error 2 | ERROR: oe_runmake failed | ERROR: Function failed: do_compile (log file is located at /home/joao/projetos/toradex/poky_imx7/poky-toradex/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/nodejs/6.8.1-r1.7/temp/log.do_compile.3691) ERROR: Task 290 (/home/joao/projetos/toradex/poky_imx7/poky-toradex/build/../meta-nodejs/recipes-devtools/nodejs/nodejs_6.8.1.bb, do_compile) failed with exit code '1

Best regards

joaopaulob avatar Oct 18 '16 23:10 joaopaulob

Take a look at #9... seems related. I also experienced a similar issue when building from unusual build paths and suspected this was related to the length of the paths

gizero avatar Oct 20 '16 21:10 gizero

@joaopaulob

If bundled openssl compilation fails you can build Node.js with use shared openssl.

This can be enabled with PACKAGECONFIG:

http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#var-PACKAGECONFIG

For example, in your local.conf

PACKAGECONFIG_append_pn-nodejs = " openssl"

or in nodejs_%.bbappend:

PACKAGECONFIG_append = " openssl"

imyller avatar Oct 29 '16 19:10 imyller

using PACKAGECONFIG_append = " openssl" helps you because it shortens the command used to link openssl, but it does not touch the core of the issue.

I give you my example. I keep my yocto related stuff in one directory, where I have 2 other dirs: build and layers. This should be self-explainatory.

If my main path is:

  • /home/myusername12/yocto-builds/2016-11-02 - the build fails with execvp: printf: Argument list too long error, but if i change it to:
  • /home/myusername12/2016-11-02 - the build succeeds (username changed, but directory name length preserved).

In my opinion this issue should be forwarded to the developers responsible for creating nodejs.

There has already been a patch for this issue in nodejs 0.8.18 but I tried applying it manually (normal patching failed), but even that did not help.

There is already an issue for it in here: https://github.com/nodejs/node/issues/9137

lewicki-pk avatar Nov 02 '16 13:11 lewicki-pk