2021-01-23 12:26:19 +00:00
|
|
|
{ lib, stdenv, fetchurl, perl, gdb, cctools, xnu, bootstrap_cmds }:
|
2004-01-21 14:50:18 +00:00
|
|
|
|
2013-12-03 14:17:01 +00:00
|
|
|
stdenv.mkDerivation rec {
|
2021-06-20 10:34:30 +00:00
|
|
|
pname = "valgrind";
|
|
|
|
version = "3.16.1";
|
2008-06-03 20:56:12 +00:00
|
|
|
|
2004-01-21 14:50:18 +00:00
|
|
|
src = fetchurl {
|
2021-06-20 10:34:30 +00:00
|
|
|
url = "https://sourceware.org/pub/${pname}/${pname}-${version}.tar.bz2";
|
2020-07-07 22:32:44 +00:00
|
|
|
sha256 = "1jik19rcd34ip8a5c9nv5wfj8k8maqb8cyclr4xhznq2gcpkl7y9";
|
2004-01-21 14:50:18 +00:00
|
|
|
};
|
2006-10-11 16:45:55 +00:00
|
|
|
|
2016-10-25 14:22:00 +00:00
|
|
|
outputs = [ "out" "dev" "man" "doc" ];
|
2015-08-27 14:46:30 +00:00
|
|
|
|
2016-02-26 17:38:15 +00:00
|
|
|
hardeningDisable = [ "stackprotector" ];
|
2016-02-09 01:20:59 +00:00
|
|
|
|
2008-06-03 20:56:12 +00:00
|
|
|
# GDB is needed to provide a sane default for `--db-command'.
|
2019-08-27 06:56:54 +00:00
|
|
|
# Perl is needed for `callgrind_{annotate,control}'.
|
2021-01-23 12:26:19 +00:00
|
|
|
buildInputs = [ gdb perl ] ++ lib.optionals (stdenv.isDarwin) [ bootstrap_cmds xnu ];
|
2008-06-03 20:56:12 +00:00
|
|
|
|
2019-11-18 03:29:44 +00:00
|
|
|
# Perl is also a native build input.
|
|
|
|
nativeBuildInputs = [ perl ];
|
|
|
|
|
2013-12-03 14:17:01 +00:00
|
|
|
enableParallelBuilding = true;
|
2018-09-24 20:57:38 +00:00
|
|
|
separateDebugInfo = stdenv.isLinux;
|
2013-12-03 14:17:01 +00:00
|
|
|
|
2021-01-23 12:26:19 +00:00
|
|
|
preConfigure = lib.optionalString stdenv.isDarwin (
|
2017-09-11 22:53:30 +00:00
|
|
|
let OSRELEASE = ''
|
|
|
|
$(awk -F '"' '/#define OSRELEASE/{ print $2 }' \
|
|
|
|
<${xnu}/Library/Frameworks/Kernel.framework/Headers/libkern/version.h)'';
|
|
|
|
in ''
|
|
|
|
echo "Don't derive our xnu version using uname -r."
|
|
|
|
substituteInPlace configure --replace "uname -r" "echo ${OSRELEASE}"
|
2017-03-02 14:19:45 +00:00
|
|
|
|
2018-12-14 08:54:41 +00:00
|
|
|
# Apple's GCC doesn't recognize `-arch' (as of version 4.2.1, build 5666).
|
2013-12-03 14:17:01 +00:00
|
|
|
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'
|
2017-03-02 14:19:45 +00:00
|
|
|
|
|
|
|
substituteInPlace coregrind/m_debuginfo/readmacho.c \
|
2019-03-04 00:55:51 +00:00
|
|
|
--replace /usr/bin/dsymutil ${stdenv.cc.bintools.bintools}/bin/dsymutil
|
2017-03-02 14:19:45 +00:00
|
|
|
|
|
|
|
echo "substitute hardcoded /usr/bin/ld with ${cctools}/bin/ld"
|
|
|
|
substituteInPlace coregrind/link_tool_exe_darwin.in \
|
|
|
|
--replace /usr/bin/ld ${cctools}/bin/ld
|
2018-12-14 08:54:41 +00:00
|
|
|
'');
|
|
|
|
|
|
|
|
# To prevent rebuild on linux when moving darwin's postPatch fixes to preConfigure
|
|
|
|
postPatch = "";
|
2013-12-03 14:17:01 +00:00
|
|
|
|
2007-02-27 10:40:15 +00:00
|
|
|
configureFlags =
|
2021-01-23 12:26:19 +00:00
|
|
|
lib.optional (stdenv.hostPlatform.system == "x86_64-linux" || stdenv.hostPlatform.system == "x86_64-darwin") "--enable-only64bit"
|
|
|
|
++ lib.optional stdenv.hostPlatform.isDarwin "--with-xcodedir=${xnu}/include";
|
2007-02-27 10:40:15 +00:00
|
|
|
|
2018-04-25 03:20:18 +00:00
|
|
|
doCheck = false; # fails
|
|
|
|
|
2008-08-19 13:03:08 +00: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 16:45:55 +00:00
|
|
|
meta = {
|
2020-04-01 01:11:51 +00:00
|
|
|
homepage = "http://www.valgrind.org/";
|
2014-08-24 14:21:08 +00:00
|
|
|
description = "Debugging and profiling tool suite";
|
2008-06-03 20:56:12 +00:00
|
|
|
|
|
|
|
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.
|
|
|
|
'';
|
|
|
|
|
2021-01-23 12:26:19 +00:00
|
|
|
license = lib.licenses.gpl2Plus;
|
2009-09-23 19:45:02 +00:00
|
|
|
|
2021-01-23 12:26:19 +00:00
|
|
|
maintainers = [ lib.maintainers.eelco ];
|
|
|
|
platforms = lib.platforms.unix;
|
2019-05-03 01:28:10 +00:00
|
|
|
badPlatforms = [
|
|
|
|
"armv5tel-linux" "armv6l-linux" "armv6m-linux"
|
|
|
|
"sparc-linux" "sparc64-linux"
|
|
|
|
"riscv32-linux" "riscv64-linux"
|
|
|
|
"alpha-linux"
|
|
|
|
];
|
2020-10-23 04:10:02 +00:00
|
|
|
broken = stdenv.isDarwin; # https://hydra.nixos.org/build/128521440/nixlog/2
|
2006-10-11 16:45:55 +00:00
|
|
|
};
|
2004-01-21 14:50:18 +00:00
|
|
|
}
|