diff options
author | Mx Kookie <kookie@spacekookie.de> | 2020-10-31 19:35:09 +0100 |
---|---|---|
committer | Mx Kookie <kookie@spacekookie.de> | 2020-10-31 19:35:09 +0100 |
commit | c4625b175f8200f643fd6e11010932ea44c78433 (patch) | |
tree | bce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/development/tools/analysis/valgrind/default.nix | |
parent | 49f735974dd103039ddc4cb576bb76555164a9e7 (diff) | |
parent | d661aa56a8843e991261510c1bb28fdc2f6975ae (diff) |
Add 'infra/libkookie/' from commit 'd661aa56a8843e991261510c1bb28fdc2f6975ae'
git-subtree-dir: infra/libkookie
git-subtree-mainline: 49f735974dd103039ddc4cb576bb76555164a9e7
git-subtree-split: d661aa56a8843e991261510c1bb28fdc2f6975ae
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/development/tools/analysis/valgrind/default.nix')
-rw-r--r-- | infra/libkookie/nixpkgs/pkgs/development/tools/analysis/valgrind/default.nix | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/analysis/valgrind/default.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/analysis/valgrind/default.nix new file mode 100644 index 000000000000..2e485b3ed67b --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/development/tools/analysis/valgrind/default.nix @@ -0,0 +1,90 @@ +{ stdenv, fetchurl, perl, gdb, cctools, xnu, bootstrap_cmds }: + +stdenv.mkDerivation rec { + name = "valgrind-3.16.1"; + + src = fetchurl { + url = "https://sourceware.org/pub/valgrind/${name}.tar.bz2"; + sha256 = "1jik19rcd34ip8a5c9nv5wfj8k8maqb8cyclr4xhznq2gcpkl7y9"; + }; + + outputs = [ "out" "dev" "man" "doc" ]; + + hardeningDisable = [ "stackprotector" ]; + + # GDB is needed to provide a sane default for `--db-command'. + # Perl is needed for `callgrind_{annotate,control}'. + buildInputs = [ gdb perl ] ++ stdenv.lib.optionals (stdenv.isDarwin) [ bootstrap_cmds xnu ]; + + # Perl is also a native build input. + nativeBuildInputs = [ perl ]; + + enableParallelBuilding = true; + separateDebugInfo = stdenv.isLinux; + + preConfigure = stdenv.lib.optionalString stdenv.isDarwin ( + 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}" + + # 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' + + substituteInPlace coregrind/m_debuginfo/readmacho.c \ + --replace /usr/bin/dsymutil ${stdenv.cc.bintools.bintools}/bin/dsymutil + + echo "substitute hardcoded /usr/bin/ld with ${cctools}/bin/ld" + substituteInPlace coregrind/link_tool_exe_darwin.in \ + --replace /usr/bin/ld ${cctools}/bin/ld + ''); + + # To prevent rebuild on linux when moving darwin's postPatch fixes to preConfigure + postPatch = ""; + + configureFlags = + stdenv.lib.optional (stdenv.hostPlatform.system == "x86_64-linux" || stdenv.hostPlatform.system == "x86_64-darwin") "--enable-only64bit" + ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin "--with-xcodedir=${xnu}/include"; + + doCheck = false; # fails + + 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 + ''; + + meta = { + homepage = "http://www.valgrind.org/"; + description = "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 = stdenv.lib.licenses.gpl2Plus; + + maintainers = [ stdenv.lib.maintainers.eelco ]; + platforms = stdenv.lib.platforms.unix; + badPlatforms = [ + "armv5tel-linux" "armv6l-linux" "armv6m-linux" + "sparc-linux" "sparc64-linux" + "riscv32-linux" "riscv64-linux" + "alpha-linux" + ]; + }; +} |