imyller / meta-nodejs

OpenEmbedded layer for latest Node.js releases
MIT License
79 stars 88 forks source link

Compile v6.8.1 on armv7 #55

Open joaopaulob opened 8 years ago

joaopaulob commented 8 years ago

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

gizero commented 8 years ago

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

imyller commented 8 years ago

I agree with @gizero

Looks like meta-nodejs is not included.

joaopaulob commented 8 years ago

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 commented 8 years ago

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

gizero commented 8 years ago

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

imyller commented 8 years ago

@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"
lewicki-pk commented 8 years ago

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:

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