From patchwork Mon Aug 13 03:05:50 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Liu X-Patchwork-Id: 176857 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from hemlock.osuosl.org (hemlock.osuosl.org [140.211.166.133]) by ozlabs.org (Postfix) with ESMTP id E49932C008F for ; Mon, 13 Aug 2012 13:05:43 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id E7E22A02D2; Mon, 13 Aug 2012 03:05:42 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CHhSyjyN5c4L; Mon, 13 Aug 2012 03:05:35 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id 8B602A02DF; Mon, 13 Aug 2012 03:05:30 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from hemlock.osuosl.org (hemlock.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id 927258F753 for ; Mon, 13 Aug 2012 03:05:25 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 8E09FA00AC for ; Mon, 13 Aug 2012 03:05:25 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id R4i2VNsQ1NJf for ; Mon, 13 Aug 2012 03:05:24 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-pb0-f46.google.com (mail-pb0-f46.google.com [209.85.160.46]) by hemlock.osuosl.org (Postfix) with ESMTPS id 5F7BFA000B for ; Mon, 13 Aug 2012 03:05:24 +0000 (UTC) Received: by pbbrr13 with SMTP id rr13so6529608pbb.33 for ; Sun, 12 Aug 2012 20:05:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:x-mailer:in-reply-to:references; bh=wRBvMTCmfQztXBLw3syF/pRVIC43RVLWymuvfDFr/Nk=; b=vP2ezkAZuMyYBtReQ4xovxJoCoXeH2UYGyEL5P0m8jviFWm7ANA/nrF+Fx90/5nA4m OKyry2jCDZalKVSsafRahE4xFflUsKqO5wZ4c9yJjKL32OCfaC8a+4uyQiI9qtQs518f 4QDXrzn9UCPaKhf2279qU/J/EX65rkOerJDgSILBfaKfoYvIolFAlih9Nwtl6PM8bzV5 niAxQ1MIeDKBrDHeaIPmpBuUrtg2KtajnhBCJVMKv/XotRztv2duI06GOkkyAVNASZes 9nBBtRfMVwK959Tl2ShRJWr8JPmnWkuoMzwHXxSNYub4WI6zS9C4uqF7NVpkVR0T8uQl A+sA== Received: by 10.66.78.73 with SMTP id z9mr23033340paw.9.1344827123951; Sun, 12 Aug 2012 20:05:23 -0700 (PDT) Received: from 60-242-179-244.static.tpgi.com.au (60-242-179-244.static.tpgi.com.au. [60.242.179.244]) by mx.google.com with ESMTPS id vc5sm4447933pbc.2.2012.08.12.20.05.21 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 12 Aug 2012 20:05:22 -0700 (PDT) From: Jonathan Liu To: buildroot@uclibc.org Date: Mon, 13 Aug 2012 13:05:50 +1000 Message-Id: <1344827150-25067-3-git-send-email-net147@gmail.com> X-Mailer: git-send-email 1.7.11.3 In-Reply-To: <1344827150-25067-1-git-send-email-net147@gmail.com> References: <1344827150-25067-1-git-send-email-net147@gmail.com> Subject: [Buildroot] [PATCH v4 2/2] nodejs: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net Signed-off-by: Jonathan Liu --- package/Config.in | 1 + package/nodejs/Config.in | 20 +++++++++++++++ package/nodejs/nodejs.mk | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 package/nodejs/Config.in create mode 100644 package/nodejs/nodejs.mk diff --git a/package/Config.in b/package/Config.in index f308de7..76c589b 100644 --- a/package/Config.in +++ b/package/Config.in @@ -263,6 +263,7 @@ source "package/xavante/Config.in" endmenu endif source "package/microperl/Config.in" +source "package/nodejs/Config.in" source "package/php/Config.in" source "package/python/Config.in" if BR2_PACKAGE_PYTHON diff --git a/package/nodejs/Config.in b/package/nodejs/Config.in new file mode 100644 index 0000000..52fb03d --- /dev/null +++ b/package/nodejs/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_NODEJS + bool "nodejs" + help + Event-driven I/O server-side JavaScript environment based on V8. + + http://nodejs.org/ + +if BR2_PACKAGE_NODEJS + +config BR2_PACKAGE_NODEJS_NPM + bool "npm" + help + Enable npm (Node Package Manager). + +config BR2_PACKAGE_NODEJS_WAF + bool "waf" + help + Enable node-waf for building native modules. + +endif diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk new file mode 100644 index 0000000..442c5f9 --- /dev/null +++ b/package/nodejs/nodejs.mk @@ -0,0 +1,63 @@ +############################################################# +# +# nodejs +# +############################################################# +NODEJS_VERSION = 0.8.6 +NODEJS_SOURCE = node-v$(NODEJS_VERSION).tar.gz +NODEJS_SITE = http://nodejs.org/dist/v$(NODEJS_VERSION) +NODEJS_DEPENDENCIES = host-python +NODEJS_LICENSE = MIT + +# Headers and node-waf binary are needed in staging to build 3rd-party +# native modules +NODEJS_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_OPENSSL),y) + NODEJS_DEPENDENCIES += openssl +endif + +define NODEJS_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + PATH="$(HOST_PATH):$(PATH)" \ + ./configure \ + --prefix=/usr \ + --without-snapshot \ + $(if $(BR2_PACKAGE_OPENSSL),--shared-openssl,--without-ssl) \ + $(if $(BR2_PACKAGE_NODEJS_NPM),,--without-npm) \ + $(if $(BR2_PACKAGE_NODEJS_WAF),,--without-waf) \ + --without-dtrace \ + --without-etw \ + ) +endef + +define NODEJS_BUILD_CMDS + PATH="$(HOST_PATH):$(PATH)" $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define NODEJS_INSTALL_STAGING_CMDS + PATH="$(HOST_PATH):$(PATH)" $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define NODEJS_UNINSTALL_STAGING_CMDS + rm -f $(STAGING_DIR)/usr/bin/node + rm -f $(STAGING_DIR)/usr/bin/node-waf + rm -f $(STAGING_DIR)/usr/bin/npm + rm -rf $(STAGING_DIR)/usr/include/node + rm -f $(STAGING_DIR)/usr/lib/dtrace/node.d + rm -rf $(STAGING_DIR)/usr/lib/node + rm -rf $(STAGING_DIR)/usr/lib/node_modules + rm -f $(STAGING_DIR)/usr/share/man/man1/node.1 +endef + +define NODEJS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 775 $(@D)/out/Release/node $(TARGET_DIR)/usr/bin/node +endef + +define NODEJS_UNINSTALL_TARGET_CMDS + rm -f $(TARGET_DIR)/usr/bin/node +endef + +# node.js configure is a Python script and does not use autotools +$(eval $(generic-package))