All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH RFC 1/4] DEVELOPERS: add Thomas Petazzoni for nodejs
@ 2022-09-25 20:40 Thomas Petazzoni via buildroot
  2022-09-25 20:40 ` [Buildroot] [PATCH RFC 2/4] package/nodejs-bin: new package Thomas Petazzoni
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Thomas Petazzoni via buildroot @ 2022-09-25 20:40 UTC (permalink / raw)
  To: Buildroot List, Yann E. MORIN, Daniel Price, Martin Bark,
	Alexandru Ardelean
  Cc: Thomas Petazzoni

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 DEVELOPERS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/DEVELOPERS b/DEVELOPERS
index 564149de0f..f82472bbb5 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2902,6 +2902,7 @@ F:	package/msmtp/
 F:	package/musl/
 F:	package/musl-fts/
 F:	package/ne10/
+F:	package/nodejs/
 F:	package/pkg-python.mk
 F:	package/pkg-autotools.mk
 F:	package/pkg-generic.mk
-- 
2.37.3

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH RFC 2/4] package/nodejs-bin: new package
  2022-09-25 20:40 [Buildroot] [PATCH RFC 1/4] DEVELOPERS: add Thomas Petazzoni for nodejs Thomas Petazzoni via buildroot
@ 2022-09-25 20:40 ` Thomas Petazzoni
  2022-09-26  7:56   ` Alexandru Ardelean
  2022-09-25 20:40 ` [Buildroot] [PATCH RFC 3/4] package/nodejs: make host package a virtual package Thomas Petazzoni
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Thomas Petazzoni @ 2022-09-25 20:40 UTC (permalink / raw)
  To: Buildroot List, Yann E. MORIN, Daniel Price, Martin Bark,
	Alexandru Ardelean
  Cc: Thomas Petazzoni

For now, it is not exposed in any way, but in the next commit, it will
be offered as an alternative to build host-nodejs from source.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 DEVELOPERS                         |  1 +
 package/nodejs-bin/nodejs-bin.hash |  7 ++++++
 package/nodejs-bin/nodejs-bin.mk   | 34 ++++++++++++++++++++++++++++++
 3 files changed, 42 insertions(+)
 create mode 100644 package/nodejs-bin/nodejs-bin.hash
 create mode 100644 package/nodejs-bin/nodejs-bin.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index f82472bbb5..564ab2ae72 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2903,6 +2903,7 @@ F:	package/musl/
 F:	package/musl-fts/
 F:	package/ne10/
 F:	package/nodejs/
+F:	package/nodejs-bin/
 F:	package/pkg-python.mk
 F:	package/pkg-autotools.mk
 F:	package/pkg-generic.mk
diff --git a/package/nodejs-bin/nodejs-bin.hash b/package/nodejs-bin/nodejs-bin.hash
new file mode 100644
index 0000000000..51dd082710
--- /dev/null
+++ b/package/nodejs-bin/nodejs-bin.hash
@@ -0,0 +1,7 @@
+# From https://nodejs.org/dist/v16.17.1/SHASUMS256.txt.asc
+sha256  3dfb8fd8f6b97df69cdc56524abc906c50ef1d0bf091188616802e6c7c731389  node-v16.17.1-linux-arm64.tar.xz
+sha256  a035ceefb5e16f5fce98c8ddfdf721b96eec20542c72fb8781bcbb6ef20c5550  node-v16.17.1-linux-armv7l.tar.xz
+sha256  70305934661f89fca64053b85317a75f233d5e3fdb2caa6546a19262a519cf20  node-v16.17.1-linux-ppc64le.tar.xz
+sha256  06ba2eb34aa385967f5f58c87a44753f83212f6cccea892b33f80a2e7fda8384  node-v16.17.1-linux-x64.tar.xz
+# Locally calculated
+sha256  69090e865afa7c62715b97f0712632d2923bd7a5faba91f94e4e75a2f9219d5e  LICENSE
diff --git a/package/nodejs-bin/nodejs-bin.mk b/package/nodejs-bin/nodejs-bin.mk
new file mode 100644
index 0000000000..5ebd8760c0
--- /dev/null
+++ b/package/nodejs-bin/nodejs-bin.mk
@@ -0,0 +1,34 @@
+################################################################################
+#
+# nodejs-bin
+#
+################################################################################
+
+# keep in sync with package/nodejs/nodejs.mk
+NODEJS_BIN_VERSION = 16.17.1
+NODEJS_BIN_SITE = https://nodejs.org/dist/v$(NODEJS_BIN_VERSION)
+
+ifeq ($(HOSTARCH),aarch64)
+NODEJS_BIN_ARCH = arm64
+else ifeq ($(HOSTARCH),arm)
+# We assume that if someone does a build on ARM, it will be on an
+# ARMv7 machine
+NODEJS_BIN_ARCH = armv7l
+else ifeq ($(HOSTARCH),ppc64le)
+NODEJS_BIN_ARCH = ppc64le
+else ifeq ($(HOSTARCH),x86_64)
+NODEJS_BIN_ARCH = x64
+endif
+
+NODEJS_BIN_SOURCE = node-v$(NODEJS_BIN_VERSION)-linux-$(NODEJS_BIN_ARCH).tar.xz
+NODEJS_BIN_LICENSE = MIT (core code); MIT, Apache and BSD family licenses (Bundled components)
+NODEJS_BIN_LICENSE_FILES = LICENSE
+NODEJS_BIN_CPE_ID_VENDOR = nodejs
+NODEJS_BIN_CPE_ID_PRODUCT = node.js
+
+define HOST_NODEJS_BIN_INSTALL_CMDS
+	rsync -a --exclude=CHANGELOG.md --exclude=LICENSE --exclude=README.md \
+		$(@D)/* $(HOST_DIR)/
+endef
+
+$(eval $(host-generic-package))
-- 
2.37.3

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH RFC 3/4] package/nodejs: make host package a virtual package
  2022-09-25 20:40 [Buildroot] [PATCH RFC 1/4] DEVELOPERS: add Thomas Petazzoni for nodejs Thomas Petazzoni via buildroot
  2022-09-25 20:40 ` [Buildroot] [PATCH RFC 2/4] package/nodejs-bin: new package Thomas Petazzoni
@ 2022-09-25 20:40 ` Thomas Petazzoni
  2022-09-25 20:43   ` Thomas Petazzoni
  2022-09-25 20:40 ` [Buildroot] [PATCH RFC 4/4] support/testing/tests/package/test_nodejs: test both host-nodejs-bin and host-nodejs-src Thomas Petazzoni
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Thomas Petazzoni @ 2022-09-25 20:40 UTC (permalink / raw)
  To: Buildroot List, Yann E. MORIN, Daniel Price, Martin Bark,
	Alexandru Ardelean
  Cc: Thomas Petazzoni

host-nodejs is quite long to build (5 minutes on a very fast build
machine), and will become a download dependency when we implement
vendoring for NodeJS-based packages.

In order to mitigate this build time, an idea is to use a pre-compiled
host NodeJS. One option would be to use a pre-installed NodeJS, but
we're concerned by version compatibility issues of the host NodeJS/NPM
does not have the same version as the target NodeJS/NPM. So another
option is to use a pre-compiled NodeJS provided by the NodeJS project
itself.

To achieve this, this commit turns the host-nodejs package into a
virtual package, which has two providers:

 - host-nodejs-src, which builds host-nodejs from source. Therefore
   the logic that used to be in package/nodejs/nodejs.mk to build
   host-nodejs from source is moved to
   package/nodejs-src/nodejs-src.mk. It should be noted that the
   patches in package/nodejs are not applied to package/nodejs-src as
   all patches are related to solving target-only issues. However, we
   could certainly think of applying the same patches if need be.

 - host-nodejs-bin, which was introduced in the previous commit, and
   which simply installs a pre-compiled NodeJS.

One possible alternate organization is to have package/nodejs/ contain
all three packages: package/nodejs/nodejs/, package/nodejs/nodejs-src,
package/nodejs/nodejs-bin, which would allow to more easily share a
few common variables (version, license, license files, CPE ID, etc.).

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 DEVELOPERS                                    |  1 +
 package/nodejs-bin/nodejs-bin.mk              |  4 +-
 package/{nodejs => nodejs-src}/Config.in.host |  4 +-
 package/nodejs-src/nodejs-src.hash            |  1 +
 package/nodejs-src/nodejs-src.mk              | 72 +++++++++++++++++++
 package/nodejs/Config.in.host                 | 39 ++++++++--
 package/nodejs/nodejs.mk                      | 57 +--------------
 7 files changed, 115 insertions(+), 63 deletions(-)
 copy package/{nodejs => nodejs-src}/Config.in.host (78%)
 create mode 120000 package/nodejs-src/nodejs-src.hash
 create mode 100644 package/nodejs-src/nodejs-src.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index 564ab2ae72..d6955ccbb4 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2904,6 +2904,7 @@ F:	package/musl-fts/
 F:	package/ne10/
 F:	package/nodejs/
 F:	package/nodejs-bin/
+F:	package/nodejs-src/
 F:	package/pkg-python.mk
 F:	package/pkg-autotools.mk
 F:	package/pkg-generic.mk
diff --git a/package/nodejs-bin/nodejs-bin.mk b/package/nodejs-bin/nodejs-bin.mk
index 5ebd8760c0..5077458eab 100644
--- a/package/nodejs-bin/nodejs-bin.mk
+++ b/package/nodejs-bin/nodejs-bin.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-# keep in sync with package/nodejs/nodejs.mk
+# keep in sync with package/nodejs and package/nodejs-src
 NODEJS_BIN_VERSION = 16.17.1
 NODEJS_BIN_SITE = https://nodejs.org/dist/v$(NODEJS_BIN_VERSION)
 
@@ -26,6 +26,8 @@ NODEJS_BIN_LICENSE_FILES = LICENSE
 NODEJS_BIN_CPE_ID_VENDOR = nodejs
 NODEJS_BIN_CPE_ID_PRODUCT = node.js
 
+HOST_NODEJS_BIN_PROVIDES = host-nodejs
+
 define HOST_NODEJS_BIN_INSTALL_CMDS
 	rsync -a --exclude=CHANGELOG.md --exclude=LICENSE --exclude=README.md \
 		$(@D)/* $(HOST_DIR)/
diff --git a/package/nodejs/Config.in.host b/package/nodejs-src/Config.in.host
similarity index 78%
copy from package/nodejs/Config.in.host
copy to package/nodejs-src/Config.in.host
index f7f2b80a9b..e8f50959de 100644
--- a/package/nodejs/Config.in.host
+++ b/package/nodejs-src/Config.in.host
@@ -1,4 +1,4 @@
-config BR2_PACKAGE_HOST_NODEJS
+config BR2_PACKAGE_HOST_NODEJS_SRC
 	bool "host nodejs"
 	depends on BR2_HOST_GCC_AT_LEAST_8
 	select BR2_PACKAGE_HOST_PYTHON3
@@ -10,5 +10,5 @@ config BR2_PACKAGE_HOST_NODEJS
 
 	  http://nodejs.org/
 
-comment "host nodejs needs a host gcc >= 8"
+comment "host nodejs-src needs a host gcc >= 8"
 	depends on !BR2_HOST_GCC_AT_LEAST_8
diff --git a/package/nodejs-src/nodejs-src.hash b/package/nodejs-src/nodejs-src.hash
new file mode 120000
index 0000000000..d719b6629e
--- /dev/null
+++ b/package/nodejs-src/nodejs-src.hash
@@ -0,0 +1 @@
+../nodejs/nodejs.hash
\ No newline at end of file
diff --git a/package/nodejs-src/nodejs-src.mk b/package/nodejs-src/nodejs-src.mk
new file mode 100644
index 0000000000..f62e975c61
--- /dev/null
+++ b/package/nodejs-src/nodejs-src.mk
@@ -0,0 +1,72 @@
+################################################################################
+#
+# nodejs-src
+#
+################################################################################
+
+# Keep in sync with package/nodejs and package/nodejs-bin
+NODEJS_SRC_VERSION = 16.17.1
+NODEJS_SRC_SOURCE = node-v$(NODEJS_VERSION).tar.xz
+NODEJS_SRC_SITE = http://nodejs.org/dist/v$(NODEJS_VERSION)
+
+NODEJS_SRC_LICENSE = MIT (core code); MIT, Apache and BSD family licenses (Bundled components)
+NODEJS_SRC_LICENSE_FILES = LICENSE
+NODEJS_SRC_CPE_ID_VENDOR = nodejs
+NODEJS_SRC_CPE_ID_PRODUCT = node.js
+
+HOST_NODEJS_SRC_PROVIDES = host-nodejs
+
+HOST_NODEJS_SRC_DEPENDENCIES = \
+	host-icu \
+	host-libopenssl \
+	host-ninja \
+	host-pkgconf \
+	host-python3 \
+	host-zlib
+
+HOST_NODEJS_SRC_MAKE_OPTS = \
+	$(HOST_CONFIGURE_OPTS) \
+	CXXFLAGS="$(HOST_NODEJS_CXXFLAGS)" \
+	LDFLAGS.host="$(HOST_LDFLAGS)" \
+	NO_LOAD=cctest.target.mk \
+	PATH=$(@D)/bin:$(BR_PATH)
+
+define HOST_NODEJS_SRC_PYTHON3_SYMLINK
+	mkdir -p $(@D)/bin
+	ln -sf $(HOST_DIR)/bin/python3 $(@D)/bin/python
+endef
+HOST_NODEJS_SRC_PRE_CONFIGURE_HOOKS += NODEJS_PYTHON3_SYMLINK
+
+define HOST_NODEJS_SRC_CONFIGURE_CMDS
+	cd $(@D); \
+		$(HOST_CONFIGURE_OPTS) \
+		PATH=$(@D)/bin:$(BR_PATH) \
+		PYTHON=$(HOST_DIR)/bin/python3 \
+		$(HOST_DIR)/bin/python3 ./configure \
+		--prefix=$(HOST_DIR) \
+		--without-dtrace \
+		--without-etw \
+		--shared-openssl \
+		--shared-openssl-includes=$(HOST_DIR)/include \
+		--shared-openssl-libpath=$(HOST_DIR)/lib \
+		--shared-zlib \
+		--no-cross-compiling \
+		--with-intl=system-icu \
+		--ninja
+endef
+
+HOST_NODEJS_SRC_CXXFLAGS = $(HOST_CXXFLAGS)
+
+define HOST_NODEJS_SRC_BUILD_CMDS
+	$(HOST_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \
+		$(MAKE) -C $(@D) \
+		$(HOST_NODEJS_MAKE_OPTS)
+endef
+
+define HOST_NODEJS_SRC_INSTALL_CMDS
+	$(HOST_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \
+		$(MAKE) -C $(@D) install \
+		$(HOST_NODEJS_MAKE_OPTS)
+endef
+
+$(eval $(host-generic-package))
diff --git a/package/nodejs/Config.in.host b/package/nodejs/Config.in.host
index f7f2b80a9b..8e797cc6f4 100644
--- a/package/nodejs/Config.in.host
+++ b/package/nodejs/Config.in.host
@@ -1,14 +1,43 @@
+config BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS
+	bool
+	default y if BR2_HOSTARCH = "aarch64"
+	default y if BR2_HOSTARCH = "arm"
+	default y if BR2_HOSTARCH = "ppc64le"
+	default y if BR2_HOSTARCH = "x86_64"
+
 config BR2_PACKAGE_HOST_NODEJS
 	bool "host nodejs"
-	depends on BR2_HOST_GCC_AT_LEAST_8
-	select BR2_PACKAGE_HOST_PYTHON3
-	select BR2_PACKAGE_HOST_PYTHON3_BZIP2
-	select BR2_PACKAGE_HOST_PYTHON3_SSL
+	depends on BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS || \
+		BR2_HOST_GCC_AT_LEAST_8
 	help
 	  Event-driven I/O server-side JavaScript environment based on
 	  V8.
 
 	  http://nodejs.org/
 
-comment "host nodejs needs a host gcc >= 8"
+if BR2_PACKAGE_HOST_NODEJS
+
+choice
+
+config BR2_PACKAGE_HOST_NODEJS_BIN
+	bool "pre-built version"
+	depends on BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS
+
+config BR2_PACKAGE_HOST_NODEJS_SRC
+	bool "compile from source"
+	depends on BR2_HOST_GCC_AT_LEAST_8
+	select BR2_PACKAGE_HOST_PYTHON3
+	select BR2_PACKAGE_HOST_PYTHON3_BZIP2
+	select BR2_PACKAGE_HOST_PYTHON3_SSL
+
+comment "host nodejs from source needs a host gcc >= 8"
 	depends on !BR2_HOST_GCC_AT_LEAST_8
+
+endchoice
+
+endif
+
+config BR2_PACKAGE_PROVIDES_HOST_NODEJS
+	string
+	default "host-nodejs-bin" if BR2_PACKAGE_HOST_NODEJS_BIN
+	default "host-nodejs-src" if BR2_PACKAGE_HOST_NODEJS_SRC
diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
index 05456e3443..1dbe99cec5 100644
--- a/package/nodejs/nodejs.mk
+++ b/package/nodejs/nodejs.mk
@@ -4,6 +4,7 @@
 #
 ################################################################################
 
+# Keep in sync with package/nodejs-src and package/nodejs-bin
 NODEJS_VERSION = 16.17.1
 NODEJS_SOURCE = node-v$(NODEJS_VERSION).tar.xz
 NODEJS_SITE = http://nodejs.org/dist/v$(NODEJS_VERSION)
@@ -17,13 +18,6 @@ NODEJS_DEPENDENCIES = \
 	nghttp2 \
 	zlib \
 	$(call qstrip,$(BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL_DEPS))
-HOST_NODEJS_DEPENDENCIES = \
-	host-icu \
-	host-libopenssl \
-	host-ninja \
-	host-pkgconf \
-	host-python3 \
-	host-zlib
 NODEJS_INSTALL_STAGING = YES
 NODEJS_LICENSE = MIT (core code); MIT, Apache and BSD family licenses (Bundled components)
 NODEJS_LICENSE_FILES = LICENSE
@@ -41,13 +35,6 @@ NODEJS_CONF_OPTS = \
 	--dest-os=linux \
 	--ninja
 
-HOST_NODEJS_MAKE_OPTS = \
-	$(HOST_CONFIGURE_OPTS) \
-	CXXFLAGS="$(HOST_NODEJS_CXXFLAGS)" \
-	LDFLAGS.host="$(HOST_LDFLAGS)" \
-	NO_LOAD=cctest.target.mk \
-	PATH=$(@D)/bin:$(BR_PATH)
-
 NODEJS_MAKE_OPTS = \
 	$(TARGET_CONFIGURE_OPTS) \
 	NO_LOAD=cctest.target.mk \
@@ -62,7 +49,6 @@ define NODEJS_PYTHON3_SYMLINK
 	mkdir -p $(@D)/bin
 	ln -sf $(HOST_DIR)/bin/python3 $(@D)/bin/python
 endef
-HOST_NODEJS_PRE_CONFIGURE_HOOKS += NODEJS_PYTHON3_SYMLINK
 NODEJS_PRE_CONFIGURE_HOOKS += NODEJS_PYTHON3_SYMLINK
 
 ifeq ($(BR2_PACKAGE_OPENSSL),y)
@@ -83,38 +69,6 @@ ifneq ($(BR2_PACKAGE_NODEJS_NPM),y)
 NODEJS_CONF_OPTS += --without-npm
 endif
 
-define HOST_NODEJS_CONFIGURE_CMDS
-	cd $(@D); \
-		$(HOST_CONFIGURE_OPTS) \
-		PATH=$(@D)/bin:$(BR_PATH) \
-		PYTHON=$(HOST_DIR)/bin/python3 \
-		$(HOST_DIR)/bin/python3 ./configure \
-		--prefix=$(HOST_DIR) \
-		--without-dtrace \
-		--without-etw \
-		--shared-openssl \
-		--shared-openssl-includes=$(HOST_DIR)/include \
-		--shared-openssl-libpath=$(HOST_DIR)/lib \
-		--shared-zlib \
-		--no-cross-compiling \
-		--with-intl=system-icu \
-		--ninja
-endef
-
-HOST_NODEJS_CXXFLAGS = $(HOST_CXXFLAGS)
-
-define HOST_NODEJS_BUILD_CMDS
-	$(HOST_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \
-		$(MAKE) -C $(@D) \
-		$(HOST_NODEJS_MAKE_OPTS)
-endef
-
-define HOST_NODEJS_INSTALL_CMDS
-	$(HOST_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \
-		$(MAKE) -C $(@D) install \
-		$(HOST_NODEJS_MAKE_OPTS)
-endef
-
 ifeq ($(BR2_i386),y)
 NODEJS_CPU = ia32
 else ifeq ($(BR2_x86_64),y)
@@ -186,13 +140,6 @@ define NODEJS_WRAPPER_FIXUP
 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
-
 define NODEJS_CONFIGURE_CMDS
 	(cd $(@D); \
 		$(TARGET_CONFIGURE_OPTS) \
@@ -265,4 +212,4 @@ endef
 
 # node.js configure is a Python script and does not use autotools
 $(eval $(generic-package))
-$(eval $(host-generic-package))
+$(eval $(host-virtual-package))
-- 
2.37.3

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH RFC 4/4] support/testing/tests/package/test_nodejs: test both host-nodejs-bin and host-nodejs-src
  2022-09-25 20:40 [Buildroot] [PATCH RFC 1/4] DEVELOPERS: add Thomas Petazzoni for nodejs Thomas Petazzoni via buildroot
  2022-09-25 20:40 ` [Buildroot] [PATCH RFC 2/4] package/nodejs-bin: new package Thomas Petazzoni
  2022-09-25 20:40 ` [Buildroot] [PATCH RFC 3/4] package/nodejs: make host package a virtual package Thomas Petazzoni
@ 2022-09-25 20:40 ` Thomas Petazzoni
  2022-09-26  8:00 ` [Buildroot] [PATCH RFC 1/4] DEVELOPERS: add Thomas Petazzoni for nodejs Alexandru Ardelean
  2023-10-02 15:42 ` Arnout Vandecappelle via buildroot
  4 siblings, 0 replies; 10+ messages in thread
From: Thomas Petazzoni @ 2022-09-25 20:40 UTC (permalink / raw)
  To: Buildroot List, Yann E. MORIN, Daniel Price, Martin Bark,
	Alexandru Ardelean
  Cc: Thomas Petazzoni

The TestNodeJSModule test triggers the build of host-nodejs to be able
to install third party modules. Now that host-nodejs has two
providers, it makes sense to test both cases, so we duplicate
TestNodeJSModule into TestNodeJsModuleHostBin (which tests the
host-nodejs-bin) and TestNodeJSModuleHostSrc (which tests the
host-nodejs-src).

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 support/testing/tests/package/test_nodejs.py | 29 +++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/support/testing/tests/package/test_nodejs.py b/support/testing/tests/package/test_nodejs.py
index 9463c76b72..b63d44c97e 100644
--- a/support/testing/tests/package/test_nodejs.py
+++ b/support/testing/tests/package/test_nodejs.py
@@ -27,7 +27,7 @@ class TestNodeJSBasic(infra.basetest.BRTest):
         self.assertRunOk("node sample_nodejs_basic.js")
 
 
-class TestNodeJSModule(infra.basetest.BRTest):
+class TestNodeJSModuleHostBin(infra.basetest.BRTest):
     config = \
         """
         BR2_arm=y
@@ -36,6 +36,33 @@ class TestNodeJSModule(infra.basetest.BRTest):
         BR2_TOOLCHAIN_EXTERNAL=y
         BR2_PACKAGE_NODEJS=y
         BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="lodash"
+        BR2_PACKAGE_HOST_NODEJS_BIN=y
+        BR2_TARGET_ROOTFS_CPIO=y
+        # BR2_TARGET_ROOTFS_TAR is not set
+        BR2_ROOTFS_POST_BUILD_SCRIPT="{}"
+        BR2_ROOTFS_POST_SCRIPT_ARGS="{}"
+        """.format(infra.filepath("tests/package/copy-sample-script-to-target.sh"),
+                   infra.filepath("tests/package/sample_nodejs_module.js"))
+
+    def test_run(self):
+        cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
+        self.emulator.boot(arch="armv7",
+                           kernel="builtin",
+                           options=["-initrd", cpio_file])
+        self.emulator.login()
+        self.assertRunOk("node sample_nodejs_module.js")
+
+
+class TestNodeJSModuleHostSrc(infra.basetest.BRTest):
+    config = \
+        """
+        BR2_arm=y
+        BR2_cortex_a9=y
+        BR2_ARM_ENABLE_VFP=y
+        BR2_TOOLCHAIN_EXTERNAL=y
+        BR2_PACKAGE_NODEJS=y
+        BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="lodash"
+        BR2_PACKAGE_HOST_NODEJS_SRC=y
         BR2_TARGET_ROOTFS_CPIO=y
         # BR2_TARGET_ROOTFS_TAR is not set
         BR2_ROOTFS_POST_BUILD_SCRIPT="{}"
-- 
2.37.3

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [Buildroot] [PATCH RFC 3/4] package/nodejs: make host package a virtual package
  2022-09-25 20:40 ` [Buildroot] [PATCH RFC 3/4] package/nodejs: make host package a virtual package Thomas Petazzoni
@ 2022-09-25 20:43   ` Thomas Petazzoni
  0 siblings, 0 replies; 10+ messages in thread
From: Thomas Petazzoni @ 2022-09-25 20:43 UTC (permalink / raw)
  To: Buildroot List, Yann E. MORIN, Daniel Price, Martin Bark,
	Alexandru Ardelean

On Sun, 25 Sep 2022 22:40:28 +0200
Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:

> diff --git a/package/nodejs/Config.in.host b/package/nodejs-src/Config.in.host
> similarity index 78%
> copy from package/nodejs/Config.in.host
> copy to package/nodejs-src/Config.in.host
> index f7f2b80a9b..e8f50959de 100644
> --- a/package/nodejs/Config.in.host
> +++ b/package/nodejs-src/Config.in.host

Dammit, I was supposed to remove this file. I will fix this in v2.
package/nodejs-src/Config.in.host should not exist.

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Buildroot] [PATCH RFC 2/4] package/nodejs-bin: new package
  2022-09-25 20:40 ` [Buildroot] [PATCH RFC 2/4] package/nodejs-bin: new package Thomas Petazzoni
@ 2022-09-26  7:56   ` Alexandru Ardelean
  2022-09-26  8:05     ` Thomas Petazzoni via buildroot
  0 siblings, 1 reply; 10+ messages in thread
From: Alexandru Ardelean @ 2022-09-26  7:56 UTC (permalink / raw)
  To: Thomas Petazzoni; +Cc: Daniel Price, Martin Bark, Yann E. MORIN, Buildroot List

On Sun, Sep 25, 2022 at 11:40 PM Thomas Petazzoni
<thomas.petazzoni@bootlin.com> wrote:
>
> For now, it is not exposed in any way, but in the next commit, it will
> be offered as an alternative to build host-nodejs from source.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ---
>  DEVELOPERS                         |  1 +
>  package/nodejs-bin/nodejs-bin.hash |  7 ++++++
>  package/nodejs-bin/nodejs-bin.mk   | 34 ++++++++++++++++++++++++++++++
>  3 files changed, 42 insertions(+)
>  create mode 100644 package/nodejs-bin/nodejs-bin.hash
>  create mode 100644 package/nodejs-bin/nodejs-bin.mk
>
> diff --git a/DEVELOPERS b/DEVELOPERS
> index f82472bbb5..564ab2ae72 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -2903,6 +2903,7 @@ F:        package/musl/
>  F:     package/musl-fts/
>  F:     package/ne10/
>  F:     package/nodejs/
> +F:     package/nodejs-bin/
>  F:     package/pkg-python.mk
>  F:     package/pkg-autotools.mk
>  F:     package/pkg-generic.mk
> diff --git a/package/nodejs-bin/nodejs-bin.hash b/package/nodejs-bin/nodejs-bin.hash
> new file mode 100644
> index 0000000000..51dd082710
> --- /dev/null
> +++ b/package/nodejs-bin/nodejs-bin.hash
> @@ -0,0 +1,7 @@
> +# From https://nodejs.org/dist/v16.17.1/SHASUMS256.txt.asc
> +sha256  3dfb8fd8f6b97df69cdc56524abc906c50ef1d0bf091188616802e6c7c731389  node-v16.17.1-linux-arm64.tar.xz
> +sha256  a035ceefb5e16f5fce98c8ddfdf721b96eec20542c72fb8781bcbb6ef20c5550  node-v16.17.1-linux-armv7l.tar.xz
> +sha256  70305934661f89fca64053b85317a75f233d5e3fdb2caa6546a19262a519cf20  node-v16.17.1-linux-ppc64le.tar.xz
> +sha256  06ba2eb34aa385967f5f58c87a44753f83212f6cccea892b33f80a2e7fda8384  node-v16.17.1-linux-x64.tar.xz
> +# Locally calculated
> +sha256  69090e865afa7c62715b97f0712632d2923bd7a5faba91f94e4e75a2f9219d5e  LICENSE
> diff --git a/package/nodejs-bin/nodejs-bin.mk b/package/nodejs-bin/nodejs-bin.mk
> new file mode 100644
> index 0000000000..5ebd8760c0
> --- /dev/null
> +++ b/package/nodejs-bin/nodejs-bin.mk
> @@ -0,0 +1,34 @@
> +################################################################################
> +#
> +# nodejs-bin
> +#
> +################################################################################
> +
> +# keep in sync with package/nodejs/nodejs.mk
> +NODEJS_BIN_VERSION = 16.17.1

Silly question(s) from me.
This may go against some BR guidelines.

But, what if you were to add a 'package/nodejs/version' file and
include it here like `include ../package/nodejs/version` ?

Another idea would be to maybe add a new folder sub-level like
'package/nodejs/nodejs/<the current one>' &
'package/nodejs/nodejs-bin/<this new one>' and have a
'package/nodejs/nodejs.mk' which includes the mk files from the
sub-dirs.
But ¯\_(ツ)_/¯
Still don't know if it goes against BR guidelines.

> +NODEJS_BIN_SITE = https://nodejs.org/dist/v$(NODEJS_BIN_VERSION)
> +
> +ifeq ($(HOSTARCH),aarch64)
> +NODEJS_BIN_ARCH = arm64
> +else ifeq ($(HOSTARCH),arm)
> +# We assume that if someone does a build on ARM, it will be on an
> +# ARMv7 machine
> +NODEJS_BIN_ARCH = armv7l
> +else ifeq ($(HOSTARCH),ppc64le)
> +NODEJS_BIN_ARCH = ppc64le
> +else ifeq ($(HOSTARCH),x86_64)
> +NODEJS_BIN_ARCH = x64
> +endif
> +
> +NODEJS_BIN_SOURCE = node-v$(NODEJS_BIN_VERSION)-linux-$(NODEJS_BIN_ARCH).tar.xz
> +NODEJS_BIN_LICENSE = MIT (core code); MIT, Apache and BSD family licenses (Bundled components)
> +NODEJS_BIN_LICENSE_FILES = LICENSE
> +NODEJS_BIN_CPE_ID_VENDOR = nodejs
> +NODEJS_BIN_CPE_ID_PRODUCT = node.js
> +
> +define HOST_NODEJS_BIN_INSTALL_CMDS
> +       rsync -a --exclude=CHANGELOG.md --exclude=LICENSE --exclude=README.md \
> +               $(@D)/* $(HOST_DIR)/
> +endef
> +
> +$(eval $(host-generic-package))
> --
> 2.37.3
>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Buildroot] [PATCH RFC 1/4] DEVELOPERS: add Thomas Petazzoni for nodejs
  2022-09-25 20:40 [Buildroot] [PATCH RFC 1/4] DEVELOPERS: add Thomas Petazzoni for nodejs Thomas Petazzoni via buildroot
                   ` (2 preceding siblings ...)
  2022-09-25 20:40 ` [Buildroot] [PATCH RFC 4/4] support/testing/tests/package/test_nodejs: test both host-nodejs-bin and host-nodejs-src Thomas Petazzoni
@ 2022-09-26  8:00 ` Alexandru Ardelean
  2023-10-02 15:42 ` Arnout Vandecappelle via buildroot
  4 siblings, 0 replies; 10+ messages in thread
From: Alexandru Ardelean @ 2022-09-26  8:00 UTC (permalink / raw)
  To: Thomas Petazzoni; +Cc: Daniel Price, Martin Bark, Yann E. MORIN, Buildroot List

On Sun, Sep 25, 2022 at 11:40 PM Thomas Petazzoni
<thomas.petazzoni@bootlin.com> wrote:
>

Better nodejs support will make it interesting to bridge upper-level
JS devs with embedded for projects like smart-TVs.

So, thank you for the support on this :)

I'm still curious how a smart-TV would end-up looking like (with BR at
the base + nodejs + webkit + cog).
It satisfies the embedded needs relatively well.

Thanks
Alexandru

> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ---
>  DEVELOPERS | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/DEVELOPERS b/DEVELOPERS
> index 564149de0f..f82472bbb5 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -2902,6 +2902,7 @@ F:        package/msmtp/
>  F:     package/musl/
>  F:     package/musl-fts/
>  F:     package/ne10/
> +F:     package/nodejs/
>  F:     package/pkg-python.mk
>  F:     package/pkg-autotools.mk
>  F:     package/pkg-generic.mk
> --
> 2.37.3
>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Buildroot] [PATCH RFC 2/4] package/nodejs-bin: new package
  2022-09-26  7:56   ` Alexandru Ardelean
@ 2022-09-26  8:05     ` Thomas Petazzoni via buildroot
  2022-09-26  8:08       ` Alexandru Ardelean
  0 siblings, 1 reply; 10+ messages in thread
From: Thomas Petazzoni via buildroot @ 2022-09-26  8:05 UTC (permalink / raw)
  To: Alexandru Ardelean
  Cc: Daniel Price, Martin Bark, Yann E. MORIN, Buildroot List

On Mon, 26 Sep 2022 10:56:10 +0300
Alexandru Ardelean <ardeleanalex@gmail.com> wrote:

> Silly question(s) from me.
> This may go against some BR guidelines.
> 
> But, what if you were to add a 'package/nodejs/version' file and
> include it here like `include ../package/nodejs/version` ?

We've not been doing this like this for now.

> Another idea would be to maybe add a new folder sub-level like
> 'package/nodejs/nodejs/<the current one>' &
> 'package/nodejs/nodejs-bin/<this new one>' and have a
> 'package/nodejs/nodejs.mk' which includes the mk files from the
> sub-dirs.

See the commit log for PATCH 3/4, which says:

"""
One possible alternate organization is to have package/nodejs/ contain
all three packages: package/nodejs/nodejs/, package/nodejs/nodejs-src,
package/nodejs/nodejs-bin, which would allow to more easily share a
few common variables (version, license, license files, CPE ID, etc.).
"""

 :-)

BTW, did you confirm that with the latest master you can now build
NodeJS correctly for your scenario?

Best regards,

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Buildroot] [PATCH RFC 2/4] package/nodejs-bin: new package
  2022-09-26  8:05     ` Thomas Petazzoni via buildroot
@ 2022-09-26  8:08       ` Alexandru Ardelean
  0 siblings, 0 replies; 10+ messages in thread
From: Alexandru Ardelean @ 2022-09-26  8:08 UTC (permalink / raw)
  To: Thomas Petazzoni; +Cc: Daniel Price, Martin Bark, Yann E. MORIN, Buildroot List

On Mon, Sep 26, 2022 at 11:05 AM Thomas Petazzoni
<thomas.petazzoni@bootlin.com> wrote:
>
> On Mon, 26 Sep 2022 10:56:10 +0300
> Alexandru Ardelean <ardeleanalex@gmail.com> wrote:
>
> > Silly question(s) from me.
> > This may go against some BR guidelines.
> >
> > But, what if you were to add a 'package/nodejs/version' file and
> > include it here like `include ../package/nodejs/version` ?
>
> We've not been doing this like this for now.
>
> > Another idea would be to maybe add a new folder sub-level like
> > 'package/nodejs/nodejs/<the current one>' &
> > 'package/nodejs/nodejs-bin/<this new one>' and have a
> > 'package/nodejs/nodejs.mk' which includes the mk files from the
> > sub-dirs.
>
> See the commit log for PATCH 3/4, which says:

Ah, apologies.
I missed that.

>
> """
> One possible alternate organization is to have package/nodejs/ contain
> all three packages: package/nodejs/nodejs/, package/nodejs/nodejs-src,
> package/nodejs/nodejs-bin, which would allow to more easily share a
> few common variables (version, license, license files, CPE ID, etc.).
> """
>
>  :-)
>
> BTW, did you confirm that with the latest master you can now build
> NodeJS correctly for your scenario?

The message is in my draft folder to be sent.

I confirm nodejs for ARM64 with external toolchain.

Running nodejs ARM with external toolchain now.
I wanted to send that message after ARM finishes.
Will send it when ARM finishes.

Thanks
Alexandru

>
> Best regards,
>
> Thomas
> --
> Thomas Petazzoni, co-owner and CEO, Bootlin
> Embedded Linux and Kernel engineering and training
> https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Buildroot] [PATCH RFC 1/4] DEVELOPERS: add Thomas Petazzoni for nodejs
  2022-09-25 20:40 [Buildroot] [PATCH RFC 1/4] DEVELOPERS: add Thomas Petazzoni for nodejs Thomas Petazzoni via buildroot
                   ` (3 preceding siblings ...)
  2022-09-26  8:00 ` [Buildroot] [PATCH RFC 1/4] DEVELOPERS: add Thomas Petazzoni for nodejs Alexandru Ardelean
@ 2023-10-02 15:42 ` Arnout Vandecappelle via buildroot
  4 siblings, 0 replies; 10+ messages in thread
From: Arnout Vandecappelle via buildroot @ 2023-10-02 15:42 UTC (permalink / raw)
  To: Thomas Petazzoni, Buildroot List, Yann E. MORIN, Daniel Price,
	Martin Bark, Alexandru Ardelean



On 25/09/2022 22:40, Thomas Petazzoni via buildroot wrote:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

  Series applied to master, after reworking similar to the just-posted go-bin 
series [1].

  Regards,
  Arnout

[1] https://patchwork.ozlabs.org/project/buildroot/list/?series=375729


> ---
>   DEVELOPERS | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/DEVELOPERS b/DEVELOPERS
> index 564149de0f..f82472bbb5 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -2902,6 +2902,7 @@ F:	package/msmtp/
>   F:	package/musl/
>   F:	package/musl-fts/
>   F:	package/ne10/
> +F:	package/nodejs/
>   F:	package/pkg-python.mk
>   F:	package/pkg-autotools.mk
>   F:	package/pkg-generic.mk
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-10-02 15:43 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-25 20:40 [Buildroot] [PATCH RFC 1/4] DEVELOPERS: add Thomas Petazzoni for nodejs Thomas Petazzoni via buildroot
2022-09-25 20:40 ` [Buildroot] [PATCH RFC 2/4] package/nodejs-bin: new package Thomas Petazzoni
2022-09-26  7:56   ` Alexandru Ardelean
2022-09-26  8:05     ` Thomas Petazzoni via buildroot
2022-09-26  8:08       ` Alexandru Ardelean
2022-09-25 20:40 ` [Buildroot] [PATCH RFC 3/4] package/nodejs: make host package a virtual package Thomas Petazzoni
2022-09-25 20:43   ` Thomas Petazzoni
2022-09-25 20:40 ` [Buildroot] [PATCH RFC 4/4] support/testing/tests/package/test_nodejs: test both host-nodejs-bin and host-nodejs-src Thomas Petazzoni
2022-09-26  8:00 ` [Buildroot] [PATCH RFC 1/4] DEVELOPERS: add Thomas Petazzoni for nodejs Alexandru Ardelean
2023-10-02 15:42 ` Arnout Vandecappelle via buildroot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.