Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/1] packages/nodejs: install npm packages on host
@ 2022-01-19 14:07 Tom Marcuzzi
  2022-01-22 13:20 ` Thomas Petazzoni
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Tom Marcuzzi @ 2022-01-19 14:07 UTC (permalink / raw)
  To: buildroot; +Cc: Tom Marcuzzi, Daniel Price, Martin Bark

Signed-off-by: Tom Marcuzzi <tom.marcuzzi@orolia.com>
---
 package/nodejs/Config.in.host | 32 ++++++++++++++++++++++++++++++++
 package/nodejs/nodejs.mk      | 31 +++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+)

diff --git a/package/nodejs/Config.in.host b/package/nodejs/Config.in.host
index 4ceaf0c73e..601eb6e052 100644
--- a/package/nodejs/Config.in.host
+++ b/package/nodejs/Config.in.host
@@ -16,3 +16,35 @@ config BR2_PACKAGE_HOST_NODEJS
 comment "host nodejs needs a host gcc >= 8"
 	depends on BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS
 	depends on !BR2_HOST_GCC_AT_LEAST_8
+
+if BR2_PACKAGE_HOST_NODEJS
+
+	config BR2_PACKAGE_HOST_NODEJS_MODULES_ADDITIONAL
+		string "Additional modules"
+		help
+		  List of space-separated nodejs modules to install via npm.
+		  See https://npmjs.org/ to find modules and 'npm help install'
+		  for available installation methods. For repeatable builds,
+		  download and save tgz files or clone git repos for the
+		  components you care about.
+
+		  Example:
+		  serialport uglify-js@1.3.4 /my/module/mymodule.tgz \
+		  	git://github.com/someuser/somemodule.git#v1.2
+
+		  This would install the serialport module (at the newest
+		  version), the uglify-js module at 1.3.4, a module from a
+		  filesystem path, and a module from a git repository.
+
+	config BR2_PACKAGE_HOST_NODEJS_MODULES_ADDITIONAL_DEPS
+		string "Additional module dependencies"
+		help
+		  List of space-separated buildroot recipes which must be
+		  built before your npms can be installed. For example, if in
+		  'Additional modules' you specified 'node-curl' (see:
+		  https://github.com/jiangmiao/node-curl), you could then
+		  specify 'libcurl' here, to ensure that buildroot builds the
+		  libcurl package, and does so before building your node
+		  modules.
+
+endif
diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
index 727af6dc50..a342d1c90f 100644
--- a/package/nodejs/nodejs.mk
+++ b/package/nodejs/nodejs.mk
@@ -96,6 +96,35 @@ NODEJS_HOST_TOOLS = $(NODEJS_HOST_TOOLS_V8) $(NODEJS_HOST_TOOLS_NODE)
 
 HOST_NODEJS_CXXFLAGS = $(HOST_CXXFLAGS) -DU_DISABLE_RENAMING=1
 
+#
+# Build the list of modules to install on host.
+#
+HOST_NODEJS_MODULES_LIST= $(call qstrip,\
+	$(BR2_PACKAGE_HOST_NODEJS_MODULES_ADDITIONAL))
+
+# Define NPM for other packages to use
+HOST_NPM = $(HOST_CONFIGURE_OPTS) \
+	LDFLAGS="$(HOST_LDFLAGS)" \
+	LD="$(HOST_CXX)" \
+	npm_config_arch=$(NODEJS_CPU) \
+	npm_config_target_arch=$(NODEJS_CPU) \
+	npm_config_build_from_source=true \
+	npm_config_nodedir=$(HOST_DIR)/nodejs-$(NODEJS_VERSION) \
+	npm_config_prefix=$(HOST_DIR)/usr \
+	npm_config_cache=$(HOST_DIR)/.npm-cache \
+	$(HOST_DIR)/bin/npm
+#
+# We can only call NPM if there's something to install.
+#
+ifneq ($(HOST_NODEJS_MODULES_LIST),)
+define HOST_NODEJS_INSTALL_MODULES
+	# If you're having trouble with module installation, adding -d to the
+	# npm install call below and setting npm_config_rollback=false can both
+	# help in diagnosing the problem.
+	$(HOST_NPM) install -g $(HOST_NODEJS_MODULES_LIST)
+endef
+endif
+
 define HOST_NODEJS_BUILD_CMDS
 	$(HOST_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \
 		$(MAKE) -C $(@D) \
@@ -110,6 +139,8 @@ define HOST_NODEJS_INSTALL_CMDS
 	$(foreach f,$(NODEJS_HOST_TOOLS), \
 		$(INSTALL) -m755 -D $(@D)/out/Release/$(f) $(HOST_DIR)/bin/$(f)
 	)
+
+	$(HOST_NODEJS_INSTALL_MODULES)
 endef
 
 ifeq ($(BR2_i386),y)
-- 
2.25.1

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

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

end of thread, other threads:[~2022-07-28  7:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-19 14:07 [Buildroot] [PATCH 1/1] packages/nodejs: install npm packages on host Tom Marcuzzi
2022-01-22 13:20 ` Thomas Petazzoni
2022-01-25 13:05 ` [Buildroot] [PATCH v2] " Tom Marcuzzi
2022-05-14 21:01   ` Yann E. MORIN
2022-07-28  7:44 ` [Buildroot] [PATCH 1/1] " Arnout Vandecappelle

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox