summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Grzeschik <m.grzeschik@pengutronix.de>2015-07-09 15:33:15 +0200
committerMichael Olbrich <m.olbrich@pengutronix.de>2015-07-17 14:07:54 +0200
commitc2cdc71b616568bc22a79da7a92f3f17e1a2eee7 (patch)
tree668e635bc689ef8fe91656f2817c1a609c24e1bd
parentc1658855b0d2b808360235934f0e3eedca124ec1 (diff)
downloadptxdist-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.in5
-rw-r--r--rules/host-nodejs.make58
-rw-r--r--rules/nodejs.in30
-rw-r--r--rules/nodejs.make112
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