diff options
author | Michael Grzeschik <m.grzeschik@pengutronix.de> | 2015-07-09 15:33:15 +0200 |
---|---|---|
committer | Michael Olbrich <m.olbrich@pengutronix.de> | 2015-07-17 14:07:54 +0200 |
commit | c2cdc71b616568bc22a79da7a92f3f17e1a2eee7 (patch) | |
tree | 668e635bc689ef8fe91656f2817c1a609c24e1bd | |
parent | c1658855b0d2b808360235934f0e3eedca124ec1 (diff) | |
download | ptxdist-c2cdc71b616568bc22a79da7a92f3f17e1a2eee7.tar.gz ptxdist-c2cdc71b616568bc22a79da7a92f3f17e1a2eee7.tar.xz |
nodejs: add new package
A host-nodejs is necessary because the target's extra packages are
installed on the build host into the target hierarchy via npmbox.
Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
-rw-r--r-- | rules/host-nodejs.in | 5 | ||||
-rw-r--r-- | rules/host-nodejs.make | 58 | ||||
-rw-r--r-- | rules/nodejs.in | 30 | ||||
-rw-r--r-- | rules/nodejs.make | 112 |
4 files changed, 205 insertions, 0 deletions
diff --git a/rules/host-nodejs.in b/rules/host-nodejs.in new file mode 100644 index 000000000..d83fb4813 --- /dev/null +++ b/rules/host-nodejs.in @@ -0,0 +1,5 @@ +## SECTION=hosttools_noprompt + +config HOST_NODEJS + tristate + select HOST_OPENSSL diff --git a/rules/host-nodejs.make b/rules/host-nodejs.make new file mode 100644 index 000000000..130786d1c --- /dev/null +++ b/rules/host-nodejs.make @@ -0,0 +1,58 @@ +# -*-makefile-*- +# +# Copyright (C) 2015 by Michael Grzeschik <mgr@pengutronix.de> +# +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +# +# We provide this package +# +HOST_PACKAGES-$(PTXCONF_HOST_NODEJS) += host-nodejs + +# +# Paths and names +# +HOST_NODEJS = $(NODEJS) +HOST_NODEJS_DIR = $(HOST_BUILDDIR)/$(HOST_NODEJS) + +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_SOURCE := $(SRCDIR)/$(HOST_NODEJS_NPMBOX).$(HOST_NODEJS_NPMBOX_SUFFIX) +$(HOST_NODEJS_NPMBOX_SOURCE) := HOST_NODEJS_NPMBOX +HOST_NODEJS_NPMBOX_DIR := $(HOST_NODEJS_DIR) +HOST_NODEJS_NPMBOX_URL := http://www.pengutronix.de/software/ptxdist/temporary-src/$(HOST_NODEJS_NPMBOX).$(HOST_NODEJS_NPMBOX_SUFFIX) + +HOST_NODEJS_SOURCES := $(HOST_NODEJS_SOURCE) $(HOST_NODEJS_NPMBOX_SOURCE) + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +HOST_NODEJS_CONF_TOOL := autoconf +HOST_NODEJS_CONF_OPT := \ + $(HOST_AUTOCONF) \ + --prefix=/ \ + --without-snapshot \ + --shared-openssl \ + --shared-zlib \ + --dest-os=linux + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +$(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 + @tar xpf $(HOST_NODEJS_NPMBOX_SOURCE) -C $(HOST_NODEJS_PKGDIR) + @$(call touch) + +# vim: syntax=make diff --git a/rules/nodejs.in b/rules/nodejs.in new file mode 100644 index 000000000..233b1c832 --- /dev/null +++ b/rules/nodejs.in @@ -0,0 +1,30 @@ +## SECTION=bytecode_engines + +menuconfig NODEJS + tristate + prompt "nodejs " + select HOST_NODEJS + 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. + + +if NODEJS + +config NODEJS_NPM + tristate + prompt "install npm on target" + +config NODEJS_MODULE_LIST + string + prompt "install nodejs packages" + default "express@4.13.0" +endif diff --git a/rules/nodejs.make b/rules/nodejs.make new file mode 100644 index 000000000..a5e44b2e0 --- /dev/null +++ b/rules/nodejs.make @@ -0,0 +1,112 @@ +# -*-makefile-*- +# +# Copyright (C) 2015 by Michael Grzeschik <mgr@pengutronix.de> +# +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +# +# We provide this package +# +ifndef PTXCONF_ARCH_PPC +PACKAGES-$(PTXCONF_NODEJS) += nodejs +endif + +# +# Paths and names +# +NODEJS_VERSION := v0.12.7 +NODEJS_MD5 := 5523ec4347d7fe6b0f6dda1d1c7799d5 +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_SOURCES += $(foreach module,$(call remove_quotes, $(PTXCONF_NODEJS_MODULE_LIST)),$(addprefix $(SRCDIR)/,$(addsuffix .npmbox,$(module)))) + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +NODEJS_CONF_TOOL := autoconf +NODEJS_CONF_OPT := \ + --prefix=/usr \ + --dest-cpu=$(PTXCONF_ARCH_STRING) \ + --without-snapshot \ + --shared-openssl \ + --shared-zlib \ + --dest-os=linux + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +# remove version number from package string +define rmversion +$(shell echo $(call remove_quotes, $(1)) | sed 's-\<\([^ @]*\)@[^ @]*\>-\1-g') +endef + +node/env = \ + $(CROSS_ENV) \ + npm_config_arch=$(PTXCONF_ARCH_STRING) \ + npm_prefix=$(NODEJS_PKGDIR)/usr/lib \ + npm_config_cache=$(HOST_NODEJS_PKGDIR)/npm \ + npm_config_tmp=$(PTXDIST_TEMPDIR)/nodejs \ + npm_config_nodedir=$(NODEJS_DIR) \ + $(1) + +$(SRCDIR)/%.npmbox:| $(STATEDIR)/host-nodejs.install.post + @$(call targetinfo) + @cd $(SRCDIR) && \ + $(call node/env, npmbox $(*) --verbose) + +$(STATEDIR)/nodejs.install: + @$(call targetinfo) + @$(call install, NODEJS) + @$(foreach module, $(call remove_quotes, $(PTXCONF_NODEJS_MODULE_LIST)), \ + cd $(NODEJS_PKGDIR)/usr/lib/ && \ + $(call node/env, npmunbox $(SRCDIR)/$(module).npmbox);) + @$(call touch) + + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +$(STATEDIR)/nodejs.targetinstall: + @$(call targetinfo) + + @$(call install_init, nodejs) + @$(call install_fixup, nodejs,PRIORITY,optional) + @$(call install_fixup, nodejs,SECTION,base) + @$(call install_fixup, nodejs,AUTHOR,"Michael Grzeschik <mgr@pengutronix.de>") + @$(call install_fixup, nodejs,DESCRIPTION,missing) + + @$(call install_copy, nodejs, 0, 0, 0755, -, /usr/bin/node) + +# # 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 ($(call remove_quotes, $(PTXCONF_NODEJS_MODULE_LIST)),) + @$(foreach module, $(call rmversion, $(PTXCONF_NODEJS_MODULE_LIST)), \ + $(call install_tree, nodejs, 0, 0, -, /usr/lib/node_modules/$(module));) +endif + @$(call install_finish, nodejs) + + @$(call touch) + +# vim: syntax=make |