2010-01-19 23:27:07 +01:00
|
|
|
{ stdenv, fetchurl, perl, gdb, autoconf, automake }:
|
2004-01-21 15:50:18 +01:00
|
|
|
|
2011-10-05 12:52:05 +02:00
|
|
|
stdenv.mkDerivation (rec {
|
2011-03-07 13:37:01 +01:00
|
|
|
name = "valgrind-3.6.1";
|
2008-06-03 22:56:12 +02:00
|
|
|
|
2004-01-21 15:50:18 +01:00
|
|
|
src = fetchurl {
|
2009-03-03 10:19:50 +01:00
|
|
|
url = "http://valgrind.org/downloads/${name}.tar.bz2";
|
2011-03-07 13:37:01 +01:00
|
|
|
sha256 = "03kaf8q49r347diryc2p1q5hxsd6hyhxikqdbydh8q7hpi7wrga9";
|
2004-01-21 15:50:18 +01:00
|
|
|
};
|
2006-10-11 18:45:55 +02:00
|
|
|
|
2008-06-03 22:56:12 +02:00
|
|
|
# Perl is needed for `cg_annotate'.
|
|
|
|
# GDB is needed to provide a sane default for `--db-command'.
|
2010-11-25 10:32:12 +01:00
|
|
|
buildNativeInputs = [ perl autoconf automake ];
|
|
|
|
buildInputs = stdenv.lib.optional (!stdenv.isDarwin) gdb;
|
2008-06-03 22:56:12 +02:00
|
|
|
|
2007-02-27 11:40:15 +01:00
|
|
|
configureFlags =
|
2011-10-05 12:52:05 +02:00
|
|
|
if (stdenv.system == "x86_64-linux" || stdenv.system == "x86_64-darwin")
|
|
|
|
then [ "--enable-only64bit" ]
|
|
|
|
else [];
|
2007-02-27 11:40:15 +01:00
|
|
|
|
2008-08-19 15:03:08 +02:00
|
|
|
postInstall = ''
|
|
|
|
for i in $out/lib/valgrind/*.supp; do
|
|
|
|
substituteInPlace $i \
|
|
|
|
--replace 'obj:/lib' 'obj:*/lib' \
|
|
|
|
--replace 'obj:/usr/X11R6/lib' 'obj:*/lib' \
|
|
|
|
--replace 'obj:/usr/lib' 'obj:*/lib'
|
|
|
|
done
|
|
|
|
'';
|
|
|
|
|
2006-10-11 18:45:55 +02:00
|
|
|
meta = {
|
2007-12-12 12:12:26 +01:00
|
|
|
homepage = http://www.valgrind.org/;
|
2008-06-03 22:56:12 +02:00
|
|
|
description = "Valgrind, a debugging and profiling tool suite";
|
|
|
|
|
|
|
|
longDescription = ''
|
|
|
|
Valgrind is an award-winning instrumentation framework for
|
|
|
|
building dynamic analysis tools. There are Valgrind tools that
|
|
|
|
can automatically detect many memory management and threading
|
|
|
|
bugs, and profile your programs in detail. You can also use
|
|
|
|
Valgrind to build new tools.
|
|
|
|
'';
|
|
|
|
|
|
|
|
license = "GPLv2+";
|
2009-09-23 21:45:02 +02:00
|
|
|
|
|
|
|
maintainers = [ stdenv.lib.maintainers.eelco ];
|
2011-10-05 12:52:05 +02:00
|
|
|
|
2009-09-23 21:50:31 +02:00
|
|
|
platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
|
2006-10-11 18:45:55 +02:00
|
|
|
};
|
2004-01-21 15:50:18 +01:00
|
|
|
}
|
2011-10-05 12:52:05 +02:00
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
(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 {}))
|