mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: "Ulrich Ölmann" <u.oelmann@pengutronix.de>
To: PTXdist Development Mailing List <ptxdist@pengutronix.de>
Subject: [ptxdist] [PATCH v6 1/3] nodejs: version bump 6.9.5 -> 12.14.1 LTS
Date: Wed, 18 Mar 2020 16:54:04 +0100	[thread overview]
Message-ID: <20200318155406.27584-1-u.oelmann@pengutronix.de> (raw)

From: Björn Esser <b.esser@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.esser@pengutronix.de>
[uol: fixed whitespace issues in first patch, added patch to get rid of the
non-existing rpath, dropped CREDITS lines, switched from menuconfig entry for
NODEJS back to config entry because of the removal of all sub-menu entries,
removed shell usage & inserted line break in build command]
Signed-off-by: Ulrich Ölmann <u.oelmann@pengutronix.de>
---
v1 --> v2: fix configure flags for host-nodejs
v2 --> v3: add missing patches, remove obsolete patches
v4 --> v5: adjusted commit message, dropped CREDIT lines, removed shell usage &
           inserted line break in build command
v5 --> v6: adjusted commit message, fixed whitespace issues in '0001-Disable-
           running-gyp-on-shared-deps.patch', added patch to get rid of the
           non-existing rpath & switched from menuconfig entry for NODEJS back
           to config entry because of the removal of all sub-menu entries

Detailed range-diff of v6 against v5:
1:  440fed72eaf9 ! 1:  cbe9e2c1c31e 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.esser@pengutronix.de>
    -    [uol: adjusted commit message, dropped CREDIT lines, removed shell usage &
    -    inserted line break in build command]
    +    [uol: fixed whitespace issues in first patch, added patch to get rid of the
    +    non-existing rpath, dropped CREDITS lines, switched from menuconfig entry for
    +    NODEJS back to config entry because of the removal of all sub-menu entries,
    +    removed shell usage & inserted line break in build command]
         Signed-off-by: Ulrich Ölmann <u.oelmann@pengutronix.de>

      ## patches/node-v12.14.1/0001-Disable-running-gyp-on-shared-deps.patch (new) ##
    @@ patches/node-v12.14.1/0001-Disable-running-gyp-on-shared-deps.patch (new)
     +Subject: [PATCH] Disable running gyp on shared deps
     +
     +---
    -+ Makefile | 6 +++---
    -+ 1 file changed, 3 insertions(+), 3 deletions(-)
    ++ Makefile | 2 +-
    ++ 1 file changed, 1 insertion(+), 1 deletion(-)
     +
     +diff --git a/Makefile b/Makefile
    -+index 56f53582d1f4..2fb80e742637 100644
    ++index 56f53582d1f4..f289f258df6f 100644
     +--- a/Makefile
     ++++ b/Makefile
    -+@@ -141,9 +141,9 @@ test-code-cache: with-code-cache
    ++@@ -141,7 +141,7 @@ 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
    +++	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

      ## patches/node-v12.14.1/0002-Install-both-binaries-and-use-libdir.patch (new) ##
     @@
    @@ -121,26 +121,23 @@ def subdir_files(path, dest, action):
     +   if 'true' == variables.get('node_use_dtrace'):
     +     action(['out/Release/node.d'], 'lib/dtrace/node.d')

    + ## patches/node-v12.14.1/0003-tools-do-not-explicitely-set-an-rpath-in-make-genera.patch (new) ##
    +@@
    ++From: =?UTF-8?q?Ulrich=20=C3=96lmann?= <u.oelmann@pengutronix.de>
    ++Date: Fri, 13 Mar 2020 12:36:49 +0100
    ++Subject: [PATCH] tools: do not explicitely set an rpath in make generator
    ++MIME-Version: 1.0
    ++Content-Type: text/plain; charset=UTF-8
    ++Content-Transfer-Encoding: 8bit
    ++
    ++This is not necessary as the library is installed into the standard path.
    ++
    ++Signed-off-by: Ulrich Ölmann <u.oelmann@pengutronix.de>
    ++---
    ++ tools/gyp/pylib/gyp/generator/make.py | 4 ----
    ++ 1 file changed, 4 deletions(-)
    ++
    ++diff --git a/tools/gyp/pylib/gyp/generator/make.py b/tools/gyp/pylib/gyp/generator/make.py
    ++index 91a119c5a576..c109b2b488ec 100644
    ++--- a/tools/gyp/pylib/gyp/generator/make.py
    +++++ b/tools/gyp/pylib/gyp/generator/make.py
    ++@@ -1474,11 +1474,7 @@ $(obj).$(TOOLSET)/$(TARGET)/%%.o: $(obj)/%%%s FORCE_DO_CMD
    ++             target_postbuilds[configname] = target_postbuild
    ++         else:
    ++           ldflags = config.get('ldflags', [])
    ++-          # Compute an rpath for this output if needed.
    ++           if any(dep.endswith('.so') or '.so.' in dep for dep in deps):
    ++-            # We want to get the literal string "$ORIGIN" into the link command,
    ++-            # so we need lots of escaping.
    ++-            ldflags.append(r'-Wl,-rpath=\$$ORIGIN/lib.%s/' % self.toolset)
    ++             ldflags.append(r'-Wl,-rpath-link=\$(builddir)/lib.%s/' %
    ++                            self.toolset)
    ++         library_dirs = config.get('library_dirs', [])
    +
      ## patches/node-v12.14.1/series (new) ##
     @@
     +# 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
    ++0003-tools-do-not-explicitely-set-an-rpath-in-make-genera.patch
    ++# b4f94a5ae9905853dec0da236e8ee053  - git-ptx-patches magic

      ## patches/npmbox-2.6.1/0001-npmbox-add-build-from-source-option-to-npmunbox.patch (deleted) ##
     @@
    @@ rules/nodejs.in
     -### SECTION=bytecode_engines
     +## SECTION=bytecode_engines

    - menuconfig NODEJS
    +-menuconfig NODEJS
    ++config NODEJS
      	tristate
     -	prompt "nodejs                        "
     +	prompt "Node.js                       "

 ...1-Disable-running-gyp-on-shared-deps.patch |  21 ++++
 ...Install-both-binaries-and-use-libdir.patch |  83 ++++++++++++
 ...licitely-set-an-rpath-in-make-genera.patch |  30 +++++
 patches/node-v12.14.1/series                  |   6 +
 ...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                               |  56 +++------
 rules/nodejs.make                             | 119 ++++++------------
 10 files changed, 213 insertions(+), 178 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/0003-tools-do-not-explicitely-set-an-rpath-in-make-genera.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..b41095a20e97
--- /dev/null
+++ b/patches/node-v12.14.1/0001-Disable-running-gyp-on-shared-deps.patch
@@ -0,0 +1,21 @@
+From: Zuzana Svetlikova <zsvetlik@redhat.com>
+Date: Thu, 27 Apr 2017 14:25:42 +0200
+Subject: [PATCH] Disable running gyp on shared deps
+
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 56f53582d1f4..f289f258df6f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -141,7 +141,7 @@ 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 \
++	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
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.analyst@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.analyst@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/0003-tools-do-not-explicitely-set-an-rpath-in-make-genera.patch b/patches/node-v12.14.1/0003-tools-do-not-explicitely-set-an-rpath-in-make-genera.patch
new file mode 100644
index 000000000000..f05bcafd572a
--- /dev/null
+++ b/patches/node-v12.14.1/0003-tools-do-not-explicitely-set-an-rpath-in-make-genera.patch
@@ -0,0 +1,30 @@
+From: =?UTF-8?q?Ulrich=20=C3=96lmann?= <u.oelmann@pengutronix.de>
+Date: Fri, 13 Mar 2020 12:36:49 +0100
+Subject: [PATCH] tools: do not explicitely set an rpath in make generator
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This is not necessary as the library is installed into the standard path.
+
+Signed-off-by: Ulrich Ölmann <u.oelmann@pengutronix.de>
+---
+ tools/gyp/pylib/gyp/generator/make.py | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/tools/gyp/pylib/gyp/generator/make.py b/tools/gyp/pylib/gyp/generator/make.py
+index 91a119c5a576..c109b2b488ec 100644
+--- a/tools/gyp/pylib/gyp/generator/make.py
++++ b/tools/gyp/pylib/gyp/generator/make.py
+@@ -1474,11 +1474,7 @@ $(obj).$(TOOLSET)/$(TARGET)/%%.o: $(obj)/%%%s FORCE_DO_CMD
+             target_postbuilds[configname] = target_postbuild
+         else:
+           ldflags = config.get('ldflags', [])
+-          # Compute an rpath for this output if needed.
+           if any(dep.endswith('.so') or '.so.' in dep for dep in deps):
+-            # We want to get the literal string "$ORIGIN" into the link command,
+-            # so we need lots of escaping.
+-            ldflags.append(r'-Wl,-rpath=\$$ORIGIN/lib.%s/' % self.toolset)
+             ldflags.append(r'-Wl,-rpath-link=\$(builddir)/lib.%s/' %
+                            self.toolset)
+         library_dirs = config.get('library_dirs', [])
diff --git a/patches/node-v12.14.1/series b/patches/node-v12.14.1/series
new file mode 100644
index 000000000000..f86c12166096
--- /dev/null
+++ b/patches/node-v12.14.1/series
@@ -0,0 +1,6 @@
+# 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
+0003-tools-do-not-explicitely-set-an-rpath-in-make-genera.patch
+# b4f94a5ae9905853dec0da236e8ee053  - 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.grzeschik@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.grzeschik@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 <mgr@pengutronix.de>
+# Copyright (C) 2019 by Björn Esser <bes@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..8230813b2626 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
+config 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 <mgr@pengutronix.de>
+# Copyright (C) 2019 by Björn Esser <bes@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.1


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de

             reply	other threads:[~2020-03-18 15:54 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-18 15:54 Ulrich Ölmann [this message]
2020-03-18 15:54 ` [ptxdist] [PATCH v6 2/3] host-yarn: new package Ulrich Ölmann
2020-03-27  9:52   ` [ptxdist] [v6,2/3] " Michael Olbrich
2020-03-18 15:54 ` [ptxdist] [PATCH v6 3/3] nodejs_packages: " Ulrich Ölmann
2020-03-27  9:52   ` [ptxdist] [v6,3/3] " Michael Olbrich
2020-03-27  9:52 ` [ptxdist] [v6,1/3] nodejs: version bump 6.9.5 -> 12.14.1 LTS Michael Olbrich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200318155406.27584-1-u.oelmann@pengutronix.de \
    --to=u.oelmann@pengutronix.de \
    --cc=ptxdist@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox