From 0576a0054bad5f6dd8b21e2481dab7e725c5e103 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Thu, 14 Mar 2013 13:52:45 +0100 Subject: [PATCH] Implemented an unelegant workaround that allows nodejs to be used on darwin using xcode --- pkgs/development/web/nodejs/default.nix | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/pkgs/development/web/nodejs/default.nix b/pkgs/development/web/nodejs/default.nix index 7f1aafa64f77..138b4180b899 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; {