From 1eca745b449c02d1763385fefd0294b6edfc841f Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 7 Dec 2015 16:59:34 -0500 Subject: gnu: node: Do not use bundled dependencies. The Node build system was previously building its own copies of OpenSSL (yikes!), libuv, and zlib. * gnu/packages/node.scm (node)[inputs]: Add openssl, libuv, and zlib. [arguments]: Add configure flags for using system libraries. Use 'modify-phases' syntax. --- gnu/packages/node.scm | 80 ++++++++++++++++++++++++++++----------------------- 1 file changed, 44 insertions(+), 36 deletions(-) (limited to 'gnu/packages/node.scm') diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index edb88bcfbc..bde1e1e197 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Cyrill Schenkel ;;; Copyright © 2015 Andreas Enge +;;; Copyright © 2015 David Thompson ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,18 +19,19 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages node) - #:use-module ((guix licenses) - #:select (expat)) - #:use-module (gnu packages) - #:use-module (gnu packages perl) - #:use-module (gnu packages python) - #:use-module (gnu packages gcc) - #:use-module (gnu packages linux) - #:use-module (gnu packages base) + #:use-module ((guix licenses) #:select (expat)) #:use-module (guix packages) #:use-module (guix derivations) #:use-module (guix download) - #:use-module (guix build-system gnu)) + #:use-module (guix build-system gnu) + #:use-module (gnu packages base) + #:use-module (gnu packages compression) + #:use-module (gnu packages gcc) + #:use-module (gnu packages libevent) + #:use-module (gnu packages linux) + #:use-module (gnu packages perl) + #:use-module (gnu packages python) + #:use-module (gnu packages tls)) (define-public node (package @@ -42,38 +44,44 @@ (define-public node (sha256 (base32 "17gk29zbw58l0sjjfw86acp39pkiblnq0gsq1jdrd70w0pgn8gdj")))) - (native-inputs `(("python" ,python-2) - ("perl" ,perl) - ("gcc" ,gcc-4.9) - ("util-linux" ,util-linux) - ("which" ,which))) (build-system gnu-build-system) (arguments - `(#:phases - (alist-replace - 'configure - ;; Node's configure script is actually a python script, so we can't - ;; run it with bash. - (lambda* (#:key outputs (configure-flags '()) inputs - #:allow-other-keys) - (let* ((prefix (assoc-ref outputs "out")) - (flags `(,(string-append "--prefix=" prefix) - ,@configure-flags))) - (format #t "build directory: ~s~%" (getcwd)) - (format #t "configure flags: ~s~%" flags) - ;; Node's configure script expects the CC environment variable to - ;; be set. - (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")) - (zero? (apply system* - (string-append (assoc-ref inputs "python") - "/bin/python") - "./configure" flags)))) - %standard-phases))) + ;; TODO: Package http_parser and add --shared-http-parser. + '(#:configure-flags '("--shared-openssl" "--shared-zlib" "--shared-libuv") + #:phases + (modify-phases %standard-phases + (replace 'configure + ;; Node's configure script is actually a python script, so we can't + ;; run it with bash. + (lambda* (#:key outputs (configure-flags '()) inputs + #:allow-other-keys) + (let* ((prefix (assoc-ref outputs "out")) + (flags (cons (string-append "--prefix=" prefix) + configure-flags))) + (format #t "build directory: ~s~%" (getcwd)) + (format #t "configure flags: ~s~%" flags) + ;; Node's configure script expects the CC environment variable to + ;; be set. + (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")) + (zero? (apply system* + (string-append (assoc-ref inputs "python") + "/bin/python") + "./configure" flags)))))))) + (native-inputs + `(("python" ,python-2) + ("perl" ,perl) + ("gcc" ,gcc-4.9) + ("util-linux" ,util-linux) + ("which" ,which))) + (inputs + `(("libuv" ,libuv) + ("openssl" ,openssl) + ("zlib" ,zlib))) (synopsis "Evented I/O for V8 JavaScript") (description "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.") - (license expat) - (home-page "http://nodejs.org/"))) + (home-page "http://nodejs.org/") + (license expat))) -- cgit v1.2.3