diff --git a/pkgs/development/web/nodejs/default.nix b/pkgs/development/web/nodejs/default.nix index 7f1aafa64f7..138b4180b89 100644 --- a/pkgs/development/web/nodejs/default.nix +++ b/pkgs/development/web/nodejs/default.nix @@ -12,26 +12,36 @@ stdenv.mkDerivation rec { 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 + ''; + prePatch = '' sed -e 's|^#!/usr/bin/env python$|#!${python}/bin/python|g' -i tools/{*.py,waf-light,node-waf} configure ''; - postInstall = '' - + 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 '' + '' /*+ stdenv.lib.optionalString stdenv.isDarwin '' install_name_tool -change libv8.dylib ${v8}/lib/libv8.dylib $out/bin/node - ''; + ''*/; - buildInputs = [ python openssl v8 zlib ] ++ stdenv.lib.optional stdenv.isLinux utillinux; - + buildInputs = [ python openssl zlib ] + ++ stdenv.lib.optional stdenv.isLinux utillinux + ++ stdenv.lib.optional (!stdenv.isDarwin) v8; setupHook = ./setup-hook.sh; meta = with stdenv.lib; {