aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/development/tools/analysis/valgrind/default.nix
diff options
context:
space:
mode:
authorMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
committerMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
commitc4625b175f8200f643fd6e11010932ea44c78433 (patch)
treebce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/development/tools/analysis/valgrind/default.nix
parent49f735974dd103039ddc4cb576bb76555164a9e7 (diff)
parentd661aa56a8843e991261510c1bb28fdc2f6975ae (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.nix90
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"
+ ];
+ };
+}