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

Khem Raj raj.khem at gmail.com
Wed Nov 13 16:12:23 UTC 2019


On Wed, Nov 13, 2019 at 4:19 AM André Draszik <git at andred.net> wrote:
>
> Khem,
>
> This is a rev2, as v1 is still in master-next, only.
> I forgot to set the subject line right...
>

thanks for letting me know

> 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