[oe] [meta-oe][PATCH] nodejs: ensure to use correct compiler & flags always

André Draszik git at andred.net
Wed Nov 13 12:19:22 UTC 2019


Khem,

This is a rev2, as v1 is still in master-next, only.
I forgot to set the subject line right...

Cheers,
Andre'

On Wed, 2019-11-13 at 09:58 +0000, André Draszik wrote:
> NodeJS comes with an embedded, patched, version of gyp.
> 
> Normally, gyp supports compiling for the build machine, e.g.
> native tools that need to be compiled to run during the build,
> and for the host, using different variables, e.g. CC and
> CC.host, etc.
> Most of this has been patched out in the NodeJS version of gyp,
> and essentially it only supports compiling using one compiler -
> ${CC}. This modification excludes LDFLAGS for native tools, and
> those still evaluate LDFLAGS.host (only).
> 
> While this modified behaviour is OK for the OE use-case of building
> native and target tools separately, it means that this recipe can
> not work as-is with standard gyp, and wrong LDFLAGS are being used
> for some of the tools compiled (torque) in either case.
> 
> By setting the make variables that gyp-generated makefiles inspect,
> we support use of unpatched gyp, and we ensure that all tools
> are compiled with correct LDFLAGS in either case.
> 
> This now also allows us to drop the patch that had been applied to
> work-around this problem.
> 
> Signed-off-by: André Draszik <git at andred.net>
> 
> ---
> v2: _append not needed for EXTRA_OEMAKE
> ---
>  .../nodejs/0006-Use-target-ldflags.patch      | 24 -------------------
>  .../recipes-devtools/nodejs/nodejs_10.17.0.bb | 13 +++++++++-
>  2 files changed, 12 insertions(+), 25 deletions(-)
>  delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/0006-Use-target-ldflags.patch
> 
> diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/0006-Use-target-ldflags.patch b/meta-oe/recipes-
> devtools/nodejs/nodejs/0006-Use-target-ldflags.patch
> deleted file mode 100644
> index f6569cd57..000000000
> --- a/meta-oe/recipes-devtools/nodejs/nodejs/0006-Use-target-ldflags.patch
> +++ /dev/null
> @@ -1,24 +0,0 @@
> -The target LDFLAGS have been ignored. Tools like torque
> -have been loaded from system libraries, even if a native
> -one was the target.
> -|$ ldd torque 
> -|    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1
> -|    libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
> -|    libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1
> -|    libicui18n.so.63 => not found
> -|    libicuuc.so.63 => not found
> -...
> -
> -Signed-off-by: Andrej Valek <andrej.valek at siemens.com>
> -
> -diff -Naur node-v10.15.1/deps/v8/gypfiles/toolchain.gypi node-v10.15.1/deps/v8/gypfiles/toolchain.gypi
> ---- node-v10.15.1/deps/v8/gypfiles/toolchain.gypi	2019-03-18 15:01:39.000000000 +0100
> -+++ node-v10.15.1/deps/v8/gypfiles/toolchain.gypi	2019-03-18 15:04:08.628361308 +0100
> -@@ -1106,6 +1106,7 @@
> -             'cflags': [ '-fno-strict-aliasing' ],
> -           }],
> -         ],  # conditions
> -+        'ldflags+': [ '$(LDFLAGS)' ],
> -       }],
> -       ['OS=="solaris"', {
> -         'defines': [ '__C99FEATURES__=1' ],  # isinf() etc.
> diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_10.17.0.bb b/meta-oe/recipes-devtools/nodejs/nodejs_10.17.0.bb
> index 4013c6931..9af0d998c 100644
> --- a/meta-oe/recipes-devtools/nodejs/nodejs_10.17.0.bb
> +++ b/meta-oe/recipes-devtools/nodejs/nodejs_10.17.0.bb
> @@ -19,7 +19,6 @@ SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
>             file://0001-Disable-running-gyp-files-for-bundled-deps.patch \
>             file://0004-Make-compatibility-with-gcc-4.8.patch \
>             file://0005-Link-atomic-library.patch \
> -           file://0006-Use-target-ldflags.patch \
>             "
>  SRC_URI_append_class-target = " \
>             file://0002-Using-native-torque.patch \
> @@ -58,6 +57,18 @@ PACKAGECONFIG[libuv] = "--shared-libuv,,libuv"
>  PACKAGECONFIG[nghttp2] = "--shared-nghttp2,,nghttp2"
>  PACKAGECONFIG[zlib] = "--shared-zlib,,zlib"
>  
> +# We don't want to cross-compile during target compile,
> +# and we need to use the right flags during host compile,
> +# too.
> +EXTRA_OEMAKE = "\
> +    CC.host='${CC}' \
> +    CFLAGS.host='${CPPFLAGS} ${CFLAGS}' \
> +    CXX.host='${CXX}' \
> +    CXXFLAGS.host='${CPPFLAGS} ${CXXFLAGS}' \
> +    LDFLAGS.host='${LDFLAGS}' \
> +    AR.host='${AR}' \
> +"
> +
>  # Node is way too cool to use proper autotools, so we install two wrappers to forcefully inject proper arch cflags to
> workaround gypi
>  do_configure () {
>      rm -rf ${S}/deps/openssl



More information about the Openembedded-devel mailing list