On Tue, Feb 04, 2020 at 08:53:57AM +0100, Ulrich Ölmann wrote:
> From: Björn Esser <b.es...@pengutronix.de>
> 
> We also need to build a host-nodejs package first, as there
> are some tools needed to be executable on the host system
> during the intermediate cross-build process.
> 
> This package drops support for NPM, as we will be managing
> Node.js packages with Yarn, which will be implemented in the
> following commits.
> 
> The patches that are shipped along with this version of the
> package have been taken from the SRPM of the Node.js-package
> in Fedora. See:
> 
> https://src.fedoraproject.org/rpms/nodejs/c/f0e2a1ed4615?branch=master
> 
> Signed-off-by: Björn Esser <b.es...@pengutronix.de>
> [uol: adjusted commit message, dropped CREDIT lines, removed shell usage &
> inserted line break in build command]
> Signed-off-by: Ulrich Ölmann <u.oelm...@pengutronix.de>

/usr/bin/node has an rpath that does not exist: /usr/bin/lib.target

Michael

> ---
> v1 --> v2: fix configure flags for host-nodejs
> v2 --> v3: add missing patches, remove obsolete patches
> Range-diff of v5 against v4:
> 1:  e08d21cc0be1 ! 1:  440fed72eaf9 nodejs: version bump 6.9.5 -> 12.14.1 LTS
>     @@ Commit message
>          
> https://src.fedoraproject.org/rpms/nodejs/c/f0e2a1ed4615?branch=master
> 
>          Signed-off-by: Björn Esser <b.es...@pengutronix.de>
>     +    [uol: adjusted commit message, dropped CREDIT lines, removed shell 
> usage &
>     +    inserted line break in build command]
>     +    Signed-off-by: Ulrich Ölmann <u.oelm...@pengutronix.de>
> 
>       ## patches/node-v12.14.1/0001-Disable-running-gyp-on-shared-deps.patch 
> (new) ##
>      @@
>     @@ rules/host-nodejs.make
>       #
>       # Copyright (C) 2015 by Michael Grzeschik <m...@pengutronix.de>
>      +# Copyright (C) 2019 by Björn Esser <b...@pengutronix.de>
>     -+#
>     -+# See CREDITS for details about who has contributed to this project.
>       #
>       # For further information about the PTXdist project and license 
> conditions
>       # see the README file.
>     @@ rules/nodejs.make
>       #
>       # Copyright (C) 2015 by Michael Grzeschik <m...@pengutronix.de>
>      +# Copyright (C) 2019 by Björn Esser <b...@pengutronix.de>
>     -+#
>     -+# See CREDITS for details about who has contributed to this project.
>       #
>       # For further information about the PTXdist project and license 
> conditions
>       # see the README file.
>     @@ rules/nodejs.make: NODEJS_ARM_FLOAT_ABI = $(shell ptxd_cross_cc_v | 
> sed -n "s/CO
>      +#       # to the pre-built host tool binaries, which are different for
>      +#       # each individual checkout of a BSP.  -_-
>      +        $(foreach f,$(NODEJS_HOST_TOOLS), \
>     -+                $(shell sed -i -e 
> "s#<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)$(f)<(EXECUTABLE_SUFFIX)#$(PTXDIST_SYSROOT_HOST)/bin/$(f)#"
>  $(NODEJS_DIR)/node.gyp $(NODEJS_DIR)/tools/v8_gypfiles/v8.gyp) \
>     -+        )
>     ++                sed -i -e 
> "s#<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)$(f)<(EXECUTABLE_SUFFIX)#$(PTXDIST_SYSROOT_HOST)/bin/$(f)#"
>  \
>     ++                        $(NODEJS_DIR)/node.gyp 
> $(NODEJS_DIR)/tools/v8_gypfiles/v8.gyp $(ptx/nl))
>      +
>      +        @$(call world/prepare, NODEJS)
>      +
> 
>  ...1-Disable-running-gyp-on-shared-deps.patch |  25 ++++
>  ...Install-both-binaries-and-use-libdir.patch |  83 ++++++++++++
>  patches/node-v12.14.1/series                  |   5 +
>  ...build-from-source-option-to-npmunbox.patch |  31 -----
>  patches/npmbox-2.6.1/series                   |   4 -
>  rules/host-nodejs.in                          |   2 +
>  rules/host-nodejs.make                        |  39 +++---
>  rules/nodejs.in                               |  54 ++------
>  rules/nodejs.make                             | 119 ++++++------------
>  9 files changed, 185 insertions(+), 177 deletions(-)
>  create mode 100644 
> patches/node-v12.14.1/0001-Disable-running-gyp-on-shared-deps.patch
>  create mode 100644 
> patches/node-v12.14.1/0002-Install-both-binaries-and-use-libdir.patch
>  create mode 100644 patches/node-v12.14.1/series
>  delete mode 100644 
> patches/npmbox-2.6.1/0001-npmbox-add-build-from-source-option-to-npmunbox.patch
>  delete mode 100644 patches/npmbox-2.6.1/series
> 
> diff --git 
> a/patches/node-v12.14.1/0001-Disable-running-gyp-on-shared-deps.patch 
> b/patches/node-v12.14.1/0001-Disable-running-gyp-on-shared-deps.patch
> new file mode 100644
> index 000000000000..58d46a8f4167
> --- /dev/null
> +++ b/patches/node-v12.14.1/0001-Disable-running-gyp-on-shared-deps.patch
> @@ -0,0 +1,25 @@
> +From: Zuzana Svetlikova <zsvet...@redhat.com>
> +Date: Thu, 27 Apr 2017 14:25:42 +0200
> +Subject: [PATCH] Disable running gyp on shared deps
> +
> +---
> + Makefile | 6 +++---
> + 1 file changed, 3 insertions(+), 3 deletions(-)
> +
> +diff --git a/Makefile b/Makefile
> +index 56f53582d1f4..2fb80e742637 100644
> +--- a/Makefile
> ++++ b/Makefile
> +@@ -141,9 +141,9 @@ test-code-cache: with-code-cache
> +     echo "'test-code-cache' target is a noop"
> + 
> + out/Makefile: config.gypi common.gypi node.gyp \
> +-    deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.gyp \
> +-    tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \
> +-    tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp
> ++  deps/http_parser/http_parser.gyp \
> ++  tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \
> ++  tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp
> +     $(PYTHON) tools/gyp_node.py -f make
> + 
> + # node_version.h is listed because the N-API version is taken from there
> diff --git 
> a/patches/node-v12.14.1/0002-Install-both-binaries-and-use-libdir.patch 
> b/patches/node-v12.14.1/0002-Install-both-binaries-and-use-libdir.patch
> new file mode 100644
> index 000000000000..38c3c96503f1
> --- /dev/null
> +++ b/patches/node-v12.14.1/0002-Install-both-binaries-and-use-libdir.patch
> @@ -0,0 +1,83 @@
> +From: Elliott Sales de Andrade <quantum.anal...@gmail.com>
> +Date: Tue, 19 Mar 2019 23:22:40 -0400
> +Subject: [PATCH] Install both binaries and use libdir.
> +
> +This allows us to build with a shared library for other users while
> +still providing the normal executable.
> +
> +Signed-off-by: Elliott Sales de Andrade <quantum.anal...@gmail.com>
> +---
> + configure.py     |  7 +++++++
> + tools/install.py | 31 ++++++++++++++-----------------
> + 2 files changed, 21 insertions(+), 17 deletions(-)
> +
> +diff --git a/configure.py b/configure.py
> +index 20cce214dbb1..e2d78a2a51ef 100755
> +--- a/configure.py
> ++++ b/configure.py
> +@@ -559,6 +559,12 @@ parser.add_option('--shared',
> +     help='compile shared library for embedding node in another project. ' +
> +          '(This mode is not officially supported for regular applications)')
> + 
> ++parser.add_option('--libdir',
> ++    action='store',
> ++    dest='libdir',
> ++    default='lib',
> ++    help='a directory to install the shared library into')
> ++
> + parser.add_option('--without-v8-platform',
> +     action='store_true',
> +     dest='without_v8_platform',
> +@@ -1103,6 +1109,7 @@ def configure_node(o):
> +   if o['variables']['want_separate_host_toolset'] == 0:
> +     o['variables']['node_code_cache'] = 'yes' # For testing
> +   o['variables']['node_shared'] = b(options.shared)
> ++  o['variables']['libdir'] = options.libdir
> +   node_module_version = getmoduleversion.get_version()
> + 
> +   if sys.platform == 'darwin':
> +diff --git a/tools/install.py b/tools/install.py
> +index 655802980a6e..fe4723bf1501 100755
> +--- a/tools/install.py
> ++++ b/tools/install.py
> +@@ -121,26 +121,23 @@ def subdir_files(path, dest, action):
> + 
> + def files(action):
> +   is_windows = sys.platform == 'win32'
> +-  output_file = 'node'
> +   output_prefix = 'out/Release/'
> ++  output_libprefix = output_prefix
> + 
> +-  if 'false' == variables.get('node_shared'):
> +-    if is_windows:
> +-      output_file += '.exe'
> ++  if is_windows:
> ++    output_bin = 'node.exe'
> ++    output_lib = 'node.dll'
> +   else:
> +-    if is_windows:
> +-      output_file += '.dll'
> +-    else:
> +-      output_file = 'lib' + output_file + '.' + 
> variables.get('shlib_suffix')
> +-      # GYP will output to lib.target except on OS X, this is hardcoded
> +-      # in its source - see the _InstallableTargetInstallPath function.
> +-      if sys.platform != 'darwin':
> +-        output_prefix += 'lib.target/'
> +-
> +-  if 'false' == variables.get('node_shared'):
> +-    action([output_prefix + output_file], 'bin/' + output_file)
> +-  else:
> +-    action([output_prefix + output_file], 'lib/' + output_file)
> ++    output_bin = 'node'
> ++    output_lib = 'libnode.' + variables.get('shlib_suffix')
> ++    # GYP will output to lib.target except on OS X, this is hardcoded
> ++    # in its source - see the _InstallableTargetInstallPath function.
> ++    if sys.platform != 'darwin':
> ++      output_libprefix += 'lib.target/'
> ++
> ++  action([output_prefix + output_bin], 'bin/' + output_bin)
> ++  if 'true' == variables.get('node_shared'):
> ++    action([output_libprefix + output_lib], variables.get('libdir') + '/' + 
> output_lib)
> + 
> +   if 'true' == variables.get('node_use_dtrace'):
> +     action(['out/Release/node.d'], 'lib/dtrace/node.d')
> diff --git a/patches/node-v12.14.1/series b/patches/node-v12.14.1/series
> new file mode 100644
> index 000000000000..f04c4243f9ad
> --- /dev/null
> +++ b/patches/node-v12.14.1/series
> @@ -0,0 +1,5 @@
> +# generated by git-ptx-patches
> +#tag:base --start-number 1
> +0001-Disable-running-gyp-on-shared-deps.patch
> +0002-Install-both-binaries-and-use-libdir.patch
> +# b42ea3192f53366dd53d306dcc1bec97  - git-ptx-patches magic
> diff --git 
> a/patches/npmbox-2.6.1/0001-npmbox-add-build-from-source-option-to-npmunbox.patch
>  
> b/patches/npmbox-2.6.1/0001-npmbox-add-build-from-source-option-to-npmunbox.patch
> deleted file mode 100644
> index 1e34b0dd3eba..000000000000
> --- 
> a/patches/npmbox-2.6.1/0001-npmbox-add-build-from-source-option-to-npmunbox.patch
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -From: Michael Grzeschik <m.grzesc...@pengutronix.de>
> -Date: Wed, 22 Jul 2015 18:18:59 +0200
> -Subject: [PATCH] npmbox: add build from source option to npmunbox
> -
> -Signed-off-by: Michael Grzeschik <m.grzesc...@pengutronix.de>
> ----
> - lib/node_modules/npmbox/npmunbox.js | 4 +++-
> - 1 file changed, 3 insertions(+), 1 deletion(-)
> -
> -diff --git a/lib/node_modules/npmbox/npmunbox.js 
> b/lib/node_modules/npmbox/npmunbox.js
> -index 66d6ef3..1cdc375 100644
> ---- a/lib/node_modules/npmbox/npmunbox.js
> -+++ b/lib/node_modules/npmbox/npmunbox.js
> -@@ -43,6 +43,7 @@ if (args.length<1 || argv.help) {
> -     console.log("  -O, -save-optional   npm --save-optional swtich.");
> -     console.log("  -B, -save-bundle     npm --save-bundle swtich.");
> -     console.log("  -E, -save-exact      npm --save-exact swtich.");
> -+    console.log("  -b, -build-from-source      npm --build-from-source 
> swtich.");
> -     console.log("");
> -     process.exit(0);
> - }
> -@@ -55,7 +56,8 @@ var options = {
> -     "save-dev": argv.D || argv["save-dev"] || false,
> -     "save-optional": argv.O || argv["save-optional"] || false,
> -     "save-bundle": argv.B || argv["save-bundle"] || false,
> --    "save-exact": argv.E || argv["save-exact"] || false
> -+    "save-exact": argv.E || argv["save-exact"] || false,
> -+    "build-from-source": argv.b || argv["build-from-source"] || false
> - };
> - if (argv.C || argv.prefix) options.prefix = argv.C || argv.prefix;
> - 
> diff --git a/patches/npmbox-2.6.1/series b/patches/npmbox-2.6.1/series
> deleted file mode 100644
> index 0e8cfa98b0d9..000000000000
> --- a/patches/npmbox-2.6.1/series
> +++ /dev/null
> @@ -1,4 +0,0 @@
> -# generated by git-ptx-patches
> -#tag:base --start-number 1
> -0001-npmbox-add-build-from-source-option-to-npmunbox.patch
> -# 1fc845f15dff1b0b44df5cf3183e8d63  - git-ptx-patches magic
> diff --git a/rules/host-nodejs.in b/rules/host-nodejs.in
> index 6ea0dd519c96..527e7d427bee 100644
> --- a/rules/host-nodejs.in
> +++ b/rules/host-nodejs.in
> @@ -3,4 +3,6 @@
>  config HOST_NODEJS
>       tristate
>       default y if ALLYES
> +     select HOST_C_ARES
>       select HOST_OPENSSL
> +     select HOST_ZLIB
> diff --git a/rules/host-nodejs.make b/rules/host-nodejs.make
> index 432cf930c714..c24ee8572468 100644
> --- a/rules/host-nodejs.make
> +++ b/rules/host-nodejs.make
> @@ -1,6 +1,7 @@
>  # -*-makefile-*-
>  #
>  # Copyright (C) 2015 by Michael Grzeschik <m...@pengutronix.de>
> +# Copyright (C) 2019 by Björn Esser <b...@pengutronix.de>
>  #
>  # For further information about the PTXdist project and license conditions
>  # see the README file.
> @@ -11,32 +12,27 @@
>  #
>  HOST_PACKAGES-$(PTXCONF_HOST_NODEJS) += host-nodejs
>  
> -#
> -# Paths and names
> -#
> -HOST_NODEJS_NPMBOX_VERSION   := 2.6.1
> -HOST_NODEJS_NPMBOX_MD5               := 2779b99e3427cd49bbf28a236d871028
> -HOST_NODEJS_NPMBOX           := npmbox-$(HOST_NODEJS_NPMBOX_VERSION)
> -HOST_NODEJS_NPMBOX_SUFFIX    := tar.bz2
> -HOST_NODEJS_NPMBOX_URL               := 
> http://www.pengutronix.de/software/ptxdist/temporary-src/$(HOST_NODEJS_NPMBOX).$(HOST_NODEJS_NPMBOX_SUFFIX)
> -HOST_NODEJS_NPMBOX_SOURCE    := 
> $(SRCDIR)/$(HOST_NODEJS_NPMBOX).$(HOST_NODEJS_NPMBOX_SUFFIX)
> -$(HOST_NODEJS_NPMBOX_SOURCE) := HOST_NODEJS_NPMBOX
> -HOST_NODEJS_NPMBOX_DIR               = $(HOST_NODEJS_PKGDIR)
> -HOST_NODEJS_NPMBOX_STRIP_LEVEL       := 0
> -
> -HOST_NODEJS_SOURCES          += $(HOST_NODEJS_NPMBOX_SOURCE)
> +# Always run the preprocessor locally.
> +HOST_NODEJS_COMPILE_ENV      := \
> +     ICECC_REMOTE_CPP=0
>  
>  # 
> ----------------------------------------------------------------------------
>  # Prepare
>  # 
> ----------------------------------------------------------------------------
>  
> -HOST_NODEJS_CONF_TOOL := autoconf
> -HOST_NODEJS_CONF_OPT := \
> +HOST_NODEJS_CONF_TOOL        := autoconf
> +HOST_NODEJS_CONF_OPT := \
>       $(HOST_AUTOCONF) \
>       --prefix=/ \
> +     --no-cross-compiling \
>       --dest-os=linux \
> +     --without-dtrace \
> +     --without-etw \
> +     --without-npm \
> +     --shared \
>       --shared-openssl \
>       --shared-zlib \
> +     --shared-cares \
>       --with-intl=none \
>       --without-snapshot
>  
> @@ -47,10 +43,13 @@ HOST_NODEJS_CONF_OPT := \
>  $(STATEDIR)/host-nodejs.install:
>       @$(call targetinfo)
>       @$(call install, HOST_NODEJS)
> -     @sed "1s^.*^#\!/usr/bin/env node^g" \
> -             -i $(HOST_NODEJS_PKGDIR)/lib/node_modules/npm/bin/npm-cli.js
> -     @$(call extract, HOST_NODEJS_NPMBOX)
> -     @$(call world/patchin, HOST_NODEJS_NPMBOX)
> +
> +#    # Needed to cross-compile for target.
> +     @install -pm 0755 
> $(HOST_NODEJS_DIR)/out/Release/bytecode_builtins_list_generator 
> $(HOST_NODEJS_PKGDIR)/bin/
> +     @install -pm 0755 $(HOST_NODEJS_DIR)/out/Release/mkcodecache 
> $(HOST_NODEJS_PKGDIR)/bin/
> +     @install -pm 0755 $(HOST_NODEJS_DIR)/out/Release/node_mksnapshot 
> $(HOST_NODEJS_PKGDIR)/bin/
> +     @install -pm 0755 $(HOST_NODEJS_DIR)/out/Release/torque 
> $(HOST_NODEJS_PKGDIR)/bin/
> +
>       @$(call touch)
>  
>  # vim: syntax=make
> diff --git a/rules/nodejs.in b/rules/nodejs.in
> index e4ac11568bcc..6d23f94ef8b7 100644
> --- a/rules/nodejs.in
> +++ b/rules/nodejs.in
> @@ -1,48 +1,20 @@
> -## SECTION=staging
> -## old section:
> -### SECTION=bytecode_engines
> +## SECTION=bytecode_engines
>  
>  menuconfig NODEJS
>       tristate
> -     prompt "nodejs                        "
> +     prompt "Node.js                       "
>       select HOST_NODEJS
> +     select C_ARES
> +     select LIBUV
>       select OPENSSL
>       select ZLIB
>       help
> -       evented I/O for V8 javascript
> -
> -       Node.js is a platform built on Chrome's JavaScript runtime
> -       for easily building fast, scalable network
> -       applications. Node.js uses an event-driven, non-blocking I/O
> -       model that makes it lightweight and efficient, perfect for
> -       data-intensive real-time applications that run across
> -       distributed devices.
> -
> -       STAGING: remove in ptxdist-2020.06.0
> -       Old version that need to be updated. Fails to build with gcc >= 7.x.
> -
> -
> -if NODEJS
> -
> -config NODEJS_NPM
> -     bool
> -     prompt "install npm on target"
> -
> -config NODEJS_MODULE_LIST
> -     string
> -     prompt "install nodejs packages"
> -     help
> -       A list of Node.js packages including version (e.g. express@4.13.0).
> -       'ptxdist make nodejs-get' will download the packages and create a
> -       npmbox file for each package. Note: The packages are stored in
> -       local_src/ and should be part of the BSP. Downloading a package
> -       again may result in different content.
> -
> -config NODEJS_MODULE_MD5
> -     string
> -     prompt "nodejs packages md5 sums"
> -     help
> -       A md5 sum for each npmbox file of the packages listed in
> -       NODEJS_MODULE_LIST.
> -
> -endif
> +       Node.js is an open-source, cross-platform, JavaScript runtime
> +       environment that executes JavaScript code outside of a browser.
> +       Node.js lets developers use JavaScript to write command line
> +       tools and for server-side scripting—running scripts server-side
> +       to produce dynamic web page content before the page is sent to
> +       the user's web browser. Consequently, Node.js represents a
> +       "JavaScript everywhere" paradigm, unifying web-application
> +       development around a single programming language, rather than
> +       different languages for server- and client-side scripts.
> diff --git a/rules/nodejs.make b/rules/nodejs.make
> index 03098b18080c..a9433bd0687a 100644
> --- a/rules/nodejs.make
> +++ b/rules/nodejs.make
> @@ -1,6 +1,7 @@
>  # -*-makefile-*-
>  #
>  # Copyright (C) 2015 by Michael Grzeschik <m...@pengutronix.de>
> +# Copyright (C) 2019 by Björn Esser <b...@pengutronix.de>
>  #
>  # For further information about the PTXdist project and license conditions
>  # see the README file.
> @@ -16,19 +17,24 @@ endif
>  #
>  # Paths and names
>  #
> -NODEJS_VERSION       := v6.9.5
> -NODEJS_MD5   := a2a820b797fb69ffb259b479c7f5df32
> -NODEJS               := node-$(NODEJS_VERSION)
> -NODEJS_SUFFIX        := tar.gz
> -NODEJS_URL   := 
> http://nodejs.org/dist/$(NODEJS_VERSION)/$(NODEJS).$(NODEJS_SUFFIX)
> -NODEJS_SOURCE        := $(SRCDIR)/$(NODEJS).$(NODEJS_SUFFIX)
> -NODEJS_DIR   := $(BUILDDIR)/$(NODEJS)
> -NODEJS_LICENSE       := unknown
> -
> -NODEJS_SRCDIR                := $(PTXDIST_WORKSPACE)/local_src
> -NODEJS_MODULE_LIST   := $(call remove_quotes, $(PTXCONF_NODEJS_MODULE_LIST))
> -NODEJS_NPMBOXES              := $(foreach module,$(NODEJS_MODULE_LIST), \
> -     $(addprefix $(NODEJS_SRCDIR)/,$(addsuffix .npmbox,$(module))))
> +NODEJS_VERSION               := v12.14.1
> +NODEJS_MD5           := 1c78a75f5c95321f533ecccca695e814
> +NODEJS                       := node-$(NODEJS_VERSION)
> +NODEJS_SUFFIX                := tar.xz
> +NODEJS_URL           := 
> http://nodejs.org/dist/$(NODEJS_VERSION)/$(NODEJS).$(NODEJS_SUFFIX)
> +NODEJS_SOURCE                := $(SRCDIR)/$(NODEJS).$(NODEJS_SUFFIX)
> +NODEJS_DIR           := $(BUILDDIR)/$(NODEJS)
> +NODEJS_LICENSE               := MIT
> +NODEJS_LICENSE_FILES := \
> +        file://LICENSE;md5=be4d5107c64dc3d7c57e3797e1a0674b
> +
> +NODEJS_HOST_TOOLS    := \
> +     bytecode_builtins_list_generator \
> +     gen-regexp-special-case \
> +     mkcodecache \
> +     mksnapshot \
> +     node_mksnapshot \
> +     torque
>  
>  node/env = \
>       $(CROSS_ENV) \
> @@ -39,47 +45,6 @@ node/env = \
>       npm_config_nodedir=$(NODEJS_DIR) \
>       $(1)
>  
> -# remove version number from package string
> -define rmversion
> -$(shell echo $(1) | sed 's-\<\([^ @]*\)@[^ @]*\>-\1-g')
> -endef
> -
> -# 
> ----------------------------------------------------------------------------
> -# Get
> -# 
> ----------------------------------------------------------------------------
> -
> -nodejs-get: $(NODEJS_NPMBOXES)
> -PHONY += nodejs-get
> -
> -$(NODEJS_SRCDIR)/%.npmbox:| $(STATEDIR)/host-nodejs.install.post
> -     @$(call targetinfo)
> -     mkdir -p $(NODEJS_SRCDIR)
> -     cd $(NODEJS_SRCDIR) && \
> -             $(call node/env, npmbox $(*) --verbose)
> -
> -# Map package sources and md5sums for world/check_src
> -NODEJS_MODULE_MD5    := $(call remove_quotes, $(PTXCONF_NODEJS_MODULE_MD5))
> -define def_mod
> -$(call rmversion,$(1))_SOURCE        := $(addprefix 
> $(NODEJS_SRCDIR)/,$(addsuffix .npmbox,$(1)))
> -$(call rmversion,$(1))_MD5   := $(firstword $(NODEJS_MODULE_MD5))
> -NODEJS_MODULE_MD5 := $(filter-out $(firstword 
> $(NODEJS_MODULE_MD5)),$(NODEJS_MODULE_MD5))
> -endef
> -$(foreach module,$(NODEJS_MODULE_LIST),$(eval $(call def_mod,$(module))))
> -
> -$(STATEDIR)/nodejs.get:
> -     @$(call targetinfo)
> -     @$(call world/get, NODEJS)
> -     @$(call world/check_src, NODEJS)
> -     @$(foreach npmbox,$(NODEJS_NPMBOXES), \
> -             if [ ! -e $(npmbox) ]; then \
> -                     echo "NodeJS modules must be downloaded with 'ptxdist 
> make nodejs-get'"; \
> -                     echo ; \
> -                     exit 1; \
> -             fi;)
> -     @$(foreach module,$(NODEJS_MODULE_LIST), \
> -             $(call world/check_src, $(call rmversion,$(module)))$(ptx/nl))
> -     @$(call touch)
> -
>  # 
> ----------------------------------------------------------------------------
>  # Prepare
>  # 
> ----------------------------------------------------------------------------
> @@ -99,33 +64,37 @@ NODEJS_ARM_FLOAT_ABI = $(shell ptxd_cross_cc_v | sed -n 
> "s/COLLECT_GCC_OPTIONS=.
>  NODEJS_ARM_FPU = $(shell ptxd_cross_cc_v | sed -n 
> "s/COLLECT_GCC_OPTIONS=.*'-mfpu=\([^']*\)'.*/\1/p" | tail -n1)
>  endif
>  
> -NODEJS_CONF_TOOL := autoconf
> -# Use '=' to delay $(shell ...) calls until this is needed
> -NODEJS_CONF_OPT = \
> +NODEJS_CONF_OPT := \
>       --prefix=/usr \
>       --dest-cpu=$(NODEJS_ARCH) \
> +     --no-cross-compiling \
>       --dest-os=linux \
>       $(call 
> ptx/ifdef,PTXCONF_ARCH_ARM,--with-arm-float-abi=$(NODEJS_ARM_FLOAT_ABI)) \
>       $(call ptx/ifdef,PTXCONF_ARCH_ARM,--with-arm-fpu=$(NODEJS_ARM_FPU)) \
>       --without-dtrace \
> -     $(call ptx/ifdef,PTXCONF_NODEJS_NPM,,--without-npm) \
> +     --without-etw \
> +     --without-npm \
> +     --shared \
> +     --shared-libuv \
>       --shared-openssl \
>       --shared-zlib \
> +     --shared-cares \
>       --with-intl=none \
>       --without-snapshot
>  
> -# 
> ----------------------------------------------------------------------------
> -# Install
> -# 
> ----------------------------------------------------------------------------
> -
> -$(STATEDIR)/nodejs.install:
> +$(STATEDIR)/nodejs.prepare:
>       @$(call targetinfo)
> -     @$(call install, NODEJS)
> -     @$(foreach npmbox, $(NODEJS_NPMBOXES), \
> -             cd $(NODEJS_PKGDIR)/usr/lib/ && \
> -             $(call node/env, npmunbox -build-from-source 
> $(npmbox))$(ptx/nl))
> -     @$(call touch)
>  
> +#    # Using a patch here isn't enough, as we need absolute paths
> +#    # to the pre-built host tool binaries, which are different for
> +#    # each individual checkout of a BSP.  -_-
> +     $(foreach f,$(NODEJS_HOST_TOOLS), \
> +             sed -i -e 
> "s#<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)$(f)<(EXECUTABLE_SUFFIX)#$(PTXDIST_SYSROOT_HOST)/bin/$(f)#"
>  \
> +                     $(NODEJS_DIR)/node.gyp 
> $(NODEJS_DIR)/tools/v8_gypfiles/v8.gyp $(ptx/nl))
> +
> +     @$(call world/prepare, NODEJS)
> +
> +     @$(call touch)
>  
>  # 
> ----------------------------------------------------------------------------
>  # Target-Install
> @@ -141,23 +110,11 @@ $(STATEDIR)/nodejs.targetinstall:
>       @$(call install_fixup, nodejs,DESCRIPTION,missing)
>  
>       @$(call install_copy, nodejs, 0, 0, 0755, -, /usr/bin/node)
> +     @$(call install_lib, nodejs, 0, 0, 0644, libnode)
>  
>  #    # the place node searches for packages
>       @$(call install_link, nodejs, node_modules, /usr/lib/node)
>  
> -ifdef PTXCONF_NODEJS_NPM
> -     @$(call install_link, nodejs, ../lib/node_modules/npm/bin/npm-cli.js, 
> /usr/bin/npm)
> -     @$(call install_tree, nodejs, 0, 0, -, /usr/lib/node_modules/npm/lib/)
> -     @$(call install_tree, nodejs, 0, 0, -, /usr/lib/node_modules/npm/bin)
> -     @$(call install_tree, nodejs, 0, 0, -, 
> /usr/lib/node_modules/npm/scripts)
> -     @$(call install_tree, nodejs, 0, 0, -, 
> /usr/lib/node_modules/npm/node_modules)
> -     @$(call install_copy, nodejs, 0, 0, 0644, -, 
> /usr/lib/node_modules/npm/package.json)
> -endif
> -
> -ifneq ($(NODEJS_MODULE_LIST),)
> -     @$(foreach module, $(call rmversion, $(NODEJS_MODULE_LIST)), \
> -             $(call install_tree, nodejs, 0, 0, -, 
> /usr/lib/node_modules/$(module))$(ptx/nl))
> -endif
>       @$(call install_finish, nodejs)
>  
>       @$(call touch)
> -- 
> 2.25.0
> 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de

Reply via email to