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. For the time being, this has just one provider: host-nodejs-src, which builds host-nodejs from source. This is the original host-nodejs package, renamed to host-nodejs-src. The target nodejs package is also renamed to nodejs-src in order to have a single package nodejs-src that has a host and target version, as usual. We do keep the nodejs target package itself, but it's an empty package - not even a virtual package. This means the following. - Its VERSION, SOURCE and SITE variables are left empty. The existing variables are renamed to NODEJS_COMMON_VERSION etc. to allow them to be reused by nodejs-src and the future nodejs-bin. - It's a generic package with a single dependency, nodejs-src. - The Config.in remains unchanged, except that it selects BR2_PACKAGE_NODEJS_SRC. - BR2_PACKAGE_NODEJS_SRC is a blind option. Co-authored-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
40 lines
1.4 KiB
Makefile
40 lines
1.4 KiB
Makefile
################################################################################
|
|
#
|
|
# nodejs
|
|
#
|
|
################################################################################
|
|
|
|
# _VERSION, _SOURCE and _SITE must be kept empty to avoid downloading anything
|
|
NODEJS_COMMON_VERSION = 16.20.0
|
|
NODEJS_COMMON_SOURCE = node-v$(NODEJS_COMMON_VERSION).tar.xz
|
|
NODEJS_COMMON_SITE = http://nodejs.org/dist/v$(NODEJS_COMMON_VERSION)
|
|
|
|
NODEJS_LICENSE = MIT (core code); MIT, Apache and BSD family licenses (Bundled components)
|
|
NODEJS_LICENSE_FILES = LICENSE
|
|
NODEJS_CPE_ID_VENDOR = nodejs
|
|
NODEJS_CPE_ID_PRODUCT = node.js
|
|
|
|
NODEJS_BIN_ENV = $(TARGET_CONFIGURE_OPTS) \
|
|
LDFLAGS="$(NODEJS_LDFLAGS)" \
|
|
LD="$(TARGET_CXX)" \
|
|
npm_config_arch=$(NODEJS_CPU) \
|
|
npm_config_target_arch=$(NODEJS_CPU) \
|
|
npm_config_build_from_source=true \
|
|
npm_config_nodedir=$(BUILD_DIR)/nodejs-$(NODEJS_VERSION) \
|
|
npm_config_prefix=$(TARGET_DIR)/usr \
|
|
npm_config_cache=$(BUILD_DIR)/.npm-cache
|
|
|
|
# Define various packaging tools for other packages to use
|
|
NPM = $(NODEJS_BIN_ENV) $(HOST_DIR)/bin/npm
|
|
ifeq ($(BR2_PACKAGE_HOST_NODEJS_COREPACK),y)
|
|
COREPACK = $(NODEJS_BIN_ENV) $(HOST_DIR)/bin/corepack
|
|
PNPM = $(NODEJS_BIN_ENV) $(HOST_DIR)/bin/pnpm
|
|
YARN = $(NODEJS_BIN_ENV) $(HOST_DIR)/bin/yarn
|
|
endif
|
|
|
|
NODEJS_DEPENDENCIES = nodejs-src
|
|
$(eval $(generic-package))
|
|
$(eval $(host-virtual-package))
|
|
|
|
include $(sort $(wildcard package/nodejs/*/*.mk))
|