package/nodejs: bump version to 14.17.6
v3 cover package/nodejs: bump version to 14.17.6
Changes include:
- Remove the dependency on Python2, as nodejs 14 supports Python 3.
- Remove --without-snapshot as it's no longer a supported config option.
- Remove /openssl to the shared-openssl-includes config option, as the build system automatically appends /openssl to the includes path.
- Add a qemu wrapper. V8's JIT infrastructure requires binaries such as mksnapshot and mkpeephole to be run in the host during the build. However, these binaries must have the same bit-width as the target (e.g. a x86_64 host targeting ARMv6 needs to produce a 32-bit binary). To work around this issue, cross-compile the binaries for the target and run them on the host with QEMU, much like gobject-introspection.
Adam Duskett (2):
Changes v2 -> v3:
- Drop the default y options from python3/Config.in.host (Yann)
package/python3: Add bzip2 option to host
package/nodejs: bump version to 14.17.6
.../0001-add-qemu-wrapper-support.patch | 76 ++++++++++++++++++ package/nodejs/Config.in | 15 +++- package/nodejs/nodejs.hash | 6 +- package/nodejs/nodejs.mk | 78 +++++++++++-------- package/nodejs/v8-qemu-wrapper.in | 12 +++ package/python3/Config.in.host | 6 ++ package/python3/python3.mk | 6 ++ 7 files changed, 158 insertions(+), 41 deletions(-) create mode 100644 package/nodejs/0001-add-qemu-wrapper-support.patch create mode 100644 package/nodejs/v8-qemu-wrapper.in
Signature · 6 lines
2.30.2 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v3 1/2 package/python3: Add bzip2 option to host
The bzip2 module is needed to build the host variant of NodeJS 14.
--- package/python3/Config.in.host | 6 ++++++ package/python3/python3.mk | 6 ++++++ 2 files changed, 12 insertions(+)
package/python3/Config.in.host +6 -0
@@ -7,6 +7,12 @@ config BR2_PACKAGE_HOST_PYTHON3 if BR2_PACKAGE_HOST_PYTHON3 +config BR2_PACKAGE_HOST_PYTHON3_BZIP2 + bool "bzip2" + select BR2_PACKAGE_HOST_BZIP2 + help + bz2 module for host Python3. + config BR2_PACKAGE_HOST_PYTHON3_SSL bool "ssl" select BR2_PACKAGE_HOST_OPENSSL
package/python3/python3.mk +6 -0
@@ -43,6 +43,12 @@ PYTHON3_DEPENDENCIES = host-python3 libffi HOST_PYTHON3_DEPENDENCIES = host-autoconf-archive host-expat host-zlib host-libffi +ifeq ($(BR2_PACKAGE_HOST_PYTHON3_BZIP2),y) +HOST_PYTHON3_DEPENDENCIES += host-bzip2 +else +HOST_PYTHON3_CONF_OPTS += --disable-bzip2 +endif + ifeq ($(BR2_PACKAGE_HOST_PYTHON3_SSL),y) HOST_PYTHON3_DEPENDENCIES += host-openssl else
Signature · 6 lines
2.30.2 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v3 2/2 package/nodejs: bump version to 14.17.6
In reply to Adam DuskettChanges include:
- Remove the dependency on Python2, as nodejs 14 supports Python 3.
- Remove --without-snapshot as it's no longer a supported config option.
- Remove /openssl to the shared-openssl-includes config option, as the build system automatically appends /openssl to the includes path.
- Add a qemu wrapper. V8's JIT infrastructure requires binaries such as mksnapshot and mkpeephole to be run in the host during the build. However, these binaries must have the same bit-width as the target (e.g. a x86_64 host targeting ARMv6 needs to produce a 32-bit binary). To work around this issue, cross-compile the binaries for the target and run them on the host with QEMU, much like gobject-introspection.
--- .../0001-add-qemu-wrapper-support.patch | 76 ++++++++++++++++++ package/nodejs/Config.in | 15 +++- package/nodejs/nodejs.hash | 6 +- package/nodejs/nodejs.mk | 78 +++++++++++-------- package/nodejs/v8-qemu-wrapper.in | 12 +++ 5 files changed, 146 insertions(+), 41 deletions(-) create mode 100644 package/nodejs/0001-add-qemu-wrapper-support.patch create mode 100644 package/nodejs/v8-qemu-wrapper.in
package/nodejs/0001-add-qemu-wrapper-support.patch new file +76 -0
@@ -0,0 +1,76 @@ +From fa09fa3ad6a21ae0b35fb860f76d1762e5f29972 Mon Sep 17 00:00:00 2001 +From: Adam Duskett <[email protected]> +Date: Mon, 27 Sep 2021 12:55:09 -0700 +Subject: [PATCH] 1 + +Signed-off-by: Adam Duskett <[email protected]> +--- + node.gyp | 4 ++-- + tools/v8_gypfiles/v8.gyp | 8 ++++---- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/node.gyp b/node.gyp +index 8ba0dfeb..c77f6f7d 100644 +--- a/node.gyp ++++ b/node.gyp +@@ -491,7 +491,7 @@ + 'action_name': 'run_mkcodecache', + 'process_outputs_as_sources': 1, + 'inputs': [ +- '<(mkcodecache_exec)', ++ @MAYBE_WRAPPER@ '<(mkcodecache_exec)', + ], + 'outputs': [ + '<(SHARED_INTERMEDIATE_DIR)/node_code_cache.cc', +@@ -516,7 +516,7 @@ + 'action_name': 'node_mksnapshot', + 'process_outputs_as_sources': 1, + 'inputs': [ +- '<(node_mksnapshot_exec)', ++ @MAYBE_WRAPPER@ '<(node_mksnapshot_exec)', + ], + 'outputs': [ + '<(SHARED_INTERMEDIATE_DIR)/node_snapshot.cc', +diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp +index 48ec392b..f9bb0fbe 100644 +--- a/tools/v8_gypfiles/v8.gyp ++++ b/tools/v8_gypfiles/v8.gyp +@@ -220,7 +220,7 @@ + { + 'action_name': 'run_torque_action', + 'inputs': [ # Order matters. +- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)', ++ @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)', + '<@(torque_files)', + ], + 'outputs': [ +@@ -351,7 +351,7 @@ + { + 'action_name': 'generate_bytecode_builtins_list_action', + 'inputs': [ +- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)bytecode_builtins_list_generator<(EXECUTABLE_SUFFIX)', ++ @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)bytecode_builtins_list_generator<(EXECUTABLE_SUFFIX)', + ], + 'outputs': [ + '<(generate_bytecode_builtins_list_output)', +@@ -533,7 +533,7 @@ + ], + }, + 'inputs': [ +- '<(mksnapshot_exec)', ++ @MAYBE_WRAPPER@ '<(mksnapshot_exec)', + ], + 'outputs': [ + '<(INTERMEDIATE_DIR)/snapshot.cc', +@@ -1448,7 +1448,7 @@ + { + 'action_name': 'run_gen-regexp-special-case_action', + 'inputs': [ +- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)gen-regexp-special-case<(EXECUTABLE_SUFFIX)', ++ @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)gen-regexp-special-case<(EXECUTABLE_SUFFIX)', + ], + 'outputs': [ + '<(SHARED_INTERMEDIATE_DIR)/src/regexp/special-case.cc', +-- +2.31.1 +
package/nodejs/Config.in +11 -4
@@ -4,28 +4,35 @@ config BR2_PACKAGE_NODEJS_ARCH_SUPPORTS default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 && BR2_ARM_CPU_HAS_VFPV2 default y if BR2_mipsel && !BR2_MIPS_SOFT_FLOAT default y if BR2_aarch64 || BR2_i386 || BR2_x86_64 + default y if BR2_s390x # libuv depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET -comment "nodejs needs a toolchain w/ C++, dynamic library, NPTL, gcc >= 4.9, wchar" +comment "nodejs needs a toolchain w/ C++, dynamic library, NPTL, gcc >= 7, wchar" depends on BR2_USE_MMU depends on BR2_PACKAGE_NODEJS_ARCH_SUPPORTS depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ - !BR2_HOST_GCC_AT_LEAST_4_9 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR + !BR2_HOST_GCC_AT_LEAST_7 || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_USE_WCHAR config BR2_PACKAGE_NODEJS bool "nodejs" depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv depends on BR2_INSTALL_LIBSTDCPP depends on BR2_PACKAGE_NODEJS_ARCH_SUPPORTS - depends on BR2_HOST_GCC_AT_LEAST_4_9 - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_HOST_GCC_AT_LEAST_7 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 depends on BR2_USE_WCHAR # uses fork() depends on BR2_USE_MMU # uses dlopen(). On ARMv5, we could technically support static # linking, but that's too much of a corner case to support it. depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_HOST_PYTHON3 + select BR2_PACKAGE_HOST_PYTHON3_BZIP2 + select BR2_PACKAGE_HOST_PYTHON3_SSL + select BR2_PACKAGE_HOST_QEMU + select BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE select BR2_PACKAGE_C_ARES select BR2_PACKAGE_LIBUV select BR2_PACKAGE_ZLIB
package/nodejs/nodejs.hash +3 -3
@@ -1,5 +1,5 @@ -# From https://nodejs.org/dist/v12.22.6/SHASUMS256.txt -sha256 c2022f16b8f689620c3472c2b5261fdabbd0ab976bf9ac3b7db6747a2e9b0f7a node-v12.22.6.tar.xz +# From https://nodejs.org/dist/v14.17.6/SHASUMS256.txt +sha256 f458cd0b1cb1540611cb08709d833c0c59c74da79310ae1984cc8bad1404ad5e node-v14.17.6.tar.xz # Hash for license file -sha256 221417a7ca275112a5ac54639b36ee3c5184e74631ea1e1b01b701293b655190 LICENSE +sha256 4c3016fb267bc473af18b305068f7f2d206ccd5ab98297ec593e1c32d73ad4fc LICENSE
package/nodejs/nodejs.mk +44 -34
153 lines not on this page · raw message
package/nodejs/v8-qemu-wrapper.in new file +12 -0
@@ -0,0 +1,12 @@ +#!/usr/bin/env sh + +# Pass -r to qemu-user as to trick glibc into not errorings out if the host kernel +# is older than the target kernel. +@QEMU_USER@ -r @TOOLCHAIN_HEADERS_VERSION@ \ + @QEMU_USERMODE_ARGS@ \ + -L "${STAGING_DIR}/" \ + "$@" + +if [ $? -ne 0 ]; then + exit 1 +fi
Signature · 6 lines
2.30.2 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Hello,
Quoted 30 lines · On Fri, 8 Oct 2021 13:43:42 -0700 Adam Duskett <[email protected]> wrote:
Changes include:
- Remove the dependency on Python2, as nodejs 14 supports Python 3.
- Remove --without-snapshot as it's no longer a supported config option.
- Remove /openssl to the shared-openssl-includes config option, as the build system automatically appends /openssl to the includes path.- Add a qemu wrapper. V8's JIT infrastructure requires binaries such as mksnapshot and mkpeephole to be run in the host during the build. However, these binaries must have the same bit-width as the target (e.g. a
x86_64host targeting ARMv6 needs to produce a 32-bit binary). To work around this issue, cross-compile the binaries for the target and run them on the host with QEMU, much like gobject-introspection.Signed-off-by Adam Duskett <[email protected]>--- .../0001-add-qemu-wrapper-support.patch | 76 ++++++++++++++++++ package/nodejs/Config.in | 15 +++- package/nodejs/nodejs.hash | 6 +- package/nodejs/nodejs.mk | 78 +++++++++++-------- package/nodejs/v8-qemu-wrapper.in | 12 +++ 5 files changed, 146 insertions(+), 41 deletions(-) create mode 100644 package/nodejs/0001-add-qemu-wrapper-support.patch create mode 100644 package/nodejs/v8-qemu-wrapper.inpackage/nodejs/0001-add-qemu-wrapper-support.patch new file +0
-0
package/nodejs/0001-add-qemu-wrapper-support.patch line 4
Quoted 4 lines
package/nodejs/0001-add-qemu-wrapper-support.patch new file +4
-0@@ -0,0 +1,76 @@ +From fa09fa3ad6a21ae0b35fb860f76d1762e5f29972 Mon Sep 17 00:00:00 2001 +From: Adam Duskett <[email protected]> +Date: Mon, 27 Sep 2021 12:55:09 -0700 +Subject: [PATCH] 1
This is perhaps a bit weak as a commit title and commit description :-)
Quoted 20 lines
package/nodejs/0001-add-qemu-wrapper-support.patch new file +19
-0+# V8's JIT infrastructure requires binaries such as mksnapshot and +# mkpeephole to be run in the host during the build. However, these +# binaries must have the same bit-width as the target (e.g. a x86_64 +# host targeting ARMv6 needs to produce a 32-bit binary). To work around this +# issue, cross-compile the binaries for the target and run them on the +# host with QEMU, much like gobject-introspection. +define NODEJS_INSTALL_V8_QEMU_WRAPPER + $(INSTALL) -D -m 755 $(NODEJS_PKGDIR)/v8-qemu-wrapper.in \ + $(@D)/out/Release/v8-qemu-wrapper + $(SED) "s%@QEMU_USER@%$(QEMU_USER)%g" \ + $(@D)/out/Release/v8-qemu-wrapper + $(SED) "s%@TOOLCHAIN_HEADERS_VERSION@%$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)%g" \ + $(@D)/out/Release/v8-qemu-wrapper + $(SED) "s%@QEMU_USERMODE_ARGS@%$(call qstrip,$(BR2_PACKAGE_HOST_QEMU_USER_MODE_ARGS))%g" \ + $(@D)/out/Release/v8-qemu-wrapper +endef +NODEJS_PRE_CONFIGURE_HOOKS += NODEJS_INSTALL_V8_QEMU_WRAPPER +define NODEJS_WRAPPER_FIXUP + $(SED) "s%@MAYBE_WRAPPER@%'<(PRODUCT_DIR)/v8-qemu-wrapper',%g" $(@D)/node.gyp
package/nodejs/0001-add-qemu-wrapper-support.patch
Quoted 10 lines
package/nodejs/0001-add-qemu-wrapper-support.patch new file +9
-0+ $(SED) "s%@MAYBE_WRAPPER@%'<(PRODUCT_DIR)/v8-qemu-wrapper',%g" $(@D)/tools/v8_gypfiles/v8.gyp +endef +NODEJS_PRE_CONFIGURE_HOOKS += NODEJS_WRAPPER_FIXUP +# Do not run the qemu-wrapper for the host build. +define HOST_NODEJS_WRAPPER_FIXUP + $(SED) "s%@MAYBE_WRAPPER@%%g" $(@D)/node.gyp + $(SED) "s%@MAYBE_WRAPPER@%%g" $(@D)/tools/v8_gypfiles/v8.gyp +endef +HOST_NODEJS_PRE_CONFIGURE_HOOKS += HOST_NODEJS_WRAPPER_FIXUP
Would have been great for MAYBE_WRAPPER to be a ./configure option :-) But fair enough.
Overall, except the commit title/log of the patch, I don't see much problem with this patch.
Thomas
Signature · 7 lines
Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Oh for Pete's sake! I will fix it asap!
Adam
Quoted 78 lines · Thomas Petazzoni
Hello,
Quoted 30 lines · On Fri, 8 Oct 2021 13:43:42 -0700 Adam Duskett <[email protected]> wrote:
Changes include:
- Remove the dependency on Python2, as nodejs 14 supports Python 3.
- Remove --without-snapshot as it's no longer a supported config option.
- Remove /openssl to the shared-openssl-includes config option, as the build system automatically appends /openssl to the includes path.- Add a qemu wrapper. V8's JIT infrastructure requires binaries such as mksnapshot and mkpeephole to be run in the host during the build. However, these binaries must have the same bit-width as the target (e.g. a
x86_64host targeting ARMv6 needs to produce a 32-bit binary). To work around this issue, cross-compile the binaries for the target and run them on the host with QEMU, much like gobject-introspection.Signed-off-by Adam Duskett <[email protected]>--- .../0001-add-qemu-wrapper-support.patch | 76 ++++++++++++++++++ package/nodejs/Config.in | 15 +++- package/nodejs/nodejs.hash | 6 +- package/nodejs/nodejs.mk | 78 +++++++++++-------- package/nodejs/v8-qemu-wrapper.in | 12 +++ 5 files changed, 146 insertions(+), 41 deletions(-) create mode 100644 package/nodejs/0001-add-qemu-wrapper-support.patch create mode 100644 package/nodejs/v8-qemu-wrapper.inpackage/nodejs/0001-add-qemu-wrapper-support.patch new file +0
-0package/nodejs/0001-add-qemu-wrapper-support.patch line 4
Quoted 4 lines
package/nodejs/0001-add-qemu-wrapper-support.patch new file +4
-0@@ -0,0 +1,76 @@ +From fa09fa3ad6a21ae0b35fb860f76d1762e5f29972 Mon Sep 17 00:00:00 2001 +From: Adam Duskett <[email protected]> +Date: Mon, 27 Sep 2021 12:55:09 -0700 +Subject: [PATCH] 1This is perhaps a bit weak as a commit title and commit description :-)
Quoted 20 lines
package/nodejs/0001-add-qemu-wrapper-support.patch new file +19
-0+# V8's JIT infrastructure requires binaries such as mksnapshot and +# mkpeephole to be run in the host during the build. However, these +# binaries must have the same bit-width as the target (e.g. a x86_64 +# host targeting ARMv6 needs to produce a 32-bit binary). To work around this +# issue, cross-compile the binaries for the target and run them on the +# host with QEMU, much like gobject-introspection. +define NODEJS_INSTALL_V8_QEMU_WRAPPER + $(INSTALL) -D -m 755 $(NODEJS_PKGDIR)/v8-qemu-wrapper.in \ + $(@D)/out/Release/v8-qemu-wrapper + $(SED) "s%@QEMU_USER@%$(QEMU_USER)%g" \ + $(@D)/out/Release/v8-qemu-wrapper + $(SED) "s%@TOOLCHAIN_HEADERS_VERSION@%$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)%g" \ + $(@D)/out/Release/v8-qemu-wrapper + $(SED) "s%@QEMU_USERMODE_ARGS@%$(call qstrip,$(BR2_PACKAGE_HOST_QEMU_USER_MODE_ARGS))%g" \ + $(@D)/out/Release/v8-qemu-wrapper +endef +NODEJS_PRE_CONFIGURE_HOOKS += NODEJS_INSTALL_V8_QEMU_WRAPPER +define NODEJS_WRAPPER_FIXUP + $(SED) "s%@MAYBE_WRAPPER@%'<(PRODUCT_DIR)/v8-qemu-wrapper',%g" $(@D)/node.gyppackage/nodejs/0001-add-qemu-wrapper-support.patch
Quoted 10 lines
package/nodejs/0001-add-qemu-wrapper-support.patch new file +9
-0+ $(SED) "s%@MAYBE_WRAPPER@%'<(PRODUCT_DIR)/v8-qemu-wrapper',%g" $(@D)/tools/v8_gypfiles/v8.gyp +endef +NODEJS_PRE_CONFIGURE_HOOKS += NODEJS_WRAPPER_FIXUP +# Do not run the qemu-wrapper for the host build. +define HOST_NODEJS_WRAPPER_FIXUP + $(SED) "s%@MAYBE_WRAPPER@%%g" $(@D)/node.gyp + $(SED) "s%@MAYBE_WRAPPER@%%g" $(@D)/tools/v8_gypfiles/v8.gyp +endef +HOST_NODEJS_PRE_CONFIGURE_HOOKS += HOST_NODEJS_WRAPPER_FIXUPWould have been great for
MAYBE_WRAPPERto be a ./configure option :-) But fair enough.
Quoted 8 lines
Overall, except the commit title/log of the patch, I don't see much problem with this patch.
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot