about summary refs log tree commit diff
path: root/pkgs/development/tools/analysis
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2011-10-05 10:52:05 +0000
committerLudovic Courtès <ludo@gnu.org>2011-10-05 10:52:05 +0000
commitba677f861f3955fd4d64e888889fd4a5e6e54f1e (patch)
treefa902aa74cab0e723cb9f8ca74d6309d0541562c /pkgs/development/tools/analysis
parent1b87ef25db3c2486dfc8eba34a4e61afde220093 (diff)
Valgrind: Fix Darwin builds.
svn path=/nixpkgs/trunk/; revision=29655
Diffstat (limited to 'pkgs/development/tools/analysis')
-rw-r--r--pkgs/development/tools/analysis/valgrind/default.nix40
1 files changed, 37 insertions, 3 deletions
diff --git a/pkgs/development/tools/analysis/valgrind/default.nix b/pkgs/development/tools/analysis/valgrind/default.nix
index 6b35cbc4e68e8..9a63037e28463 100644
--- a/pkgs/development/tools/analysis/valgrind/default.nix
+++ b/pkgs/development/tools/analysis/valgrind/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, perl, gdb, autoconf, automake }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (rec {
   name = "valgrind-3.6.1";
 
   src = fetchurl {
@@ -14,7 +14,9 @@ stdenv.mkDerivation rec {
   buildInputs = stdenv.lib.optional (!stdenv.isDarwin) gdb;
 
   configureFlags =
-    if stdenv.system == "x86_64-linux" then ["--enable-only64bit"] else [];
+    if (stdenv.system == "x86_64-linux" || stdenv.system == "x86_64-darwin")
+    then [ "--enable-only64bit" ]
+    else [];
 
   postInstall = ''
     for i in $out/lib/valgrind/*.supp; do
@@ -40,7 +42,39 @@ stdenv.mkDerivation rec {
     license = "GPLv2+";
 
     maintainers = [ stdenv.lib.maintainers.eelco ];
-    
+
     platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
   };
 }
+
+//
+
+(if stdenv.isDarwin
+ then {
+   patchPhase =
+     # Apple's GCC doesn't recognize `-arch' (as of version 4.2.1, build 5666).
+     '' echo "getting rid of the \`-arch' GCC option..."
+        find -name Makefile\* -exec \
+          sed -i {} -e's/DARWIN\(.*\)-arch [^ ]\+/DARWIN\1/g' \;
+
+        sed -i coregrind/link_tool_exe_darwin.in \
+            -e 's/^my \$archstr = .*/my $archstr = "x86_64";/g'
+     '';
+
+   preConfigure =
+     # Shamelessly drag in MIG.
+     '' mkdir -p "$TMPDIR/impure-deps/bin"
+
+        # MIG assumes the standard Darwin core utilities (e.g., `rm -d'), so
+        # let it see the impure directories.
+        cat > "$TMPDIR/impure-deps/bin/mig" <<EOF
+#!/bin/sh
+export PATH="/usr/bin:/bin:\$PATH"
+exec /usr/bin/mig "\$@"
+EOF
+        chmod +x "$TMPDIR/impure-deps/bin/mig"
+
+        export PATH="$TMPDIR/impure-deps/bin:$PATH"
+     '';
+ }
+ else {}))