diff --git a/pkgs/development/web/nodejs/default.nix b/pkgs/development/web/nodejs/default.nix index f9c3d9d27d3..f3025c97f16 100644 --- a/pkgs/development/web/nodejs/default.nix +++ b/pkgs/development/web/nodejs/default.nix @@ -1,54 +1,45 @@ -{ stdenv, fetchurl, openssl, python, zlib, v8, utillinux }: +{ stdenv, fetchurl, openssl, python, zlib, v8, utillinux, http_parser, c-ares }: -stdenv.mkDerivation rec { - version = "0.8.23"; +let + version = "0.10.8"; + + # !!! Should we also do shared libuv? + deps = { + inherit v8 openssl zlib; + cares = c-ares; + http-parser = http_parser; + }; + + sharedConfigureFlags = name: [ + "--shared-${name}" + "--shared-${name}-includes=${builtins.getAttr name deps}/include" + "--shared-${name}-libpath=${builtins.getAttr name deps}/lib" + ]; + + inherit (stdenv.lib) concatMap optional maintainers licenses platforms; +in stdenv.mkDerivation { name = "nodejs-${version}"; src = fetchurl { url = "http://nodejs.org/dist/v${version}/node-v${version}.tar.gz"; - sha256 = "17gdvv0q95v5dn9mbwrm3pxcchfgmlwa7pamwsam9hpdi9ik491q"; + sha256 = "0m43y7ipd6d89dl97nvrwkx1zss3fdb9835509dyziycr1kggxpd"; }; - configureFlags = [ - "--openssl-includes=${openssl}/include" - "--openssl-libpath=${openssl}/lib" - ] - ++ (if !stdenv.isDarwin then [ # Shared V8 is broken on Mac OS X. Who can fix V8 on Darwin makes me very happy, but I gave up studying python-gyp. - "--shared-v8" - "--shared-v8-includes=${v8}/includes" - "--shared-v8-libpath=${v8}/lib" - ] else []); - - #patches = stdenv.lib.optional stdenv.isDarwin ./no-arch-flag.patch; - - # Expose the host compiler on darwin, which is the only compiler capable of building it - preConfigure = stdenv.lib.optionalString stdenv.isDarwin '' - export OLDPATH=$PATH - export PATH=/usr/bin:$PATH - ''; + configureFlags = concatMap sharedConfigureFlags (builtins.attrNames deps); prePatch = '' - sed -e 's|^#!/usr/bin/env python$|#!${python}/bin/python|g' -i tools/{*.py,waf-light,node-waf} configure + sed -e 's|^#!/usr/bin/env python$|#!${python}/bin/python|g' -i configure ''; - postInstall = stdenv.lib.optionalString stdenv.isDarwin '' - export PATH=$OLDPATH - '' + '' - sed -e 's|^#!/usr/bin/env node$|#!'$out'/bin/node|' -i $out/lib/node_modules/npm/bin/npm-cli.js - '' /*+ stdenv.lib.optionalString stdenv.isDarwin '' - install_name_tool -change libv8.dylib ${v8}/lib/libv8.dylib $out/bin/node - ''*/; - - buildInputs = [ python openssl zlib ] - ++ stdenv.lib.optional stdenv.isLinux utillinux - ++ stdenv.lib.optional (!stdenv.isDarwin) v8; + buildInputs = [ python ] + ++ optional stdenv.isLinux utillinux; setupHook = ./setup-hook.sh; - meta = with stdenv.lib; { + meta = { description = "Event-driven I/O framework for the V8 JavaScript engine"; homepage = http://nodejs.org; license = licenses.mit; - maintainers = [ maintainers.goibhniu ]; + maintainers = [ maintainers.goibhniu maintainers.shlevy ]; platforms = platforms.linux; }; } diff --git a/pkgs/development/web/nodejs/no-arch-flag.patch b/pkgs/development/web/nodejs/no-arch-flag.patch deleted file mode 100644 index bbe96c0c552..00000000000 --- a/pkgs/development/web/nodejs/no-arch-flag.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -Naur node-v0.6.10-orig/wscript node-v0.6.10/wscript ---- node-v0.6.10-orig/wscript 2012-02-02 19:56:42.000000000 -0500 -+++ node-v0.6.10/wscript 2012-02-25 14:18:50.000000000 -0500 -@@ -443,17 +443,6 @@ - if sys.platform.startswith("darwin"): - # used by platform_darwin_*.cc - conf.env.append_value('LINKFLAGS', ['-framework','Carbon']) -- # cross compile for architecture specified by DEST_CPU -- if 'DEST_CPU' in conf.env: -- arch = conf.env['DEST_CPU'] -- # map supported_archs to GCC names: -- arch_mappings = {'ia32': 'i386', 'x64': 'x86_64'} -- if arch in arch_mappings: -- arch = arch_mappings[arch] -- flags = ['-arch', arch] -- conf.env.append_value('CCFLAGS', flags) -- conf.env.append_value('CXXFLAGS', flags) -- conf.env.append_value('LINKFLAGS', flags) - if 'DEST_CPU' in conf.env: - arch = conf.env['DEST_CPU'] - # TODO: -m32 is only available on 64 bit machines, so check host type