Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
124 lines
3.4 KiB
Nix
124 lines
3.4 KiB
Nix
{
|
||
lib,
|
||
stdenv,
|
||
fetchurl,
|
||
fetchpatch,
|
||
autoreconfHook,
|
||
perl,
|
||
gdb,
|
||
writeScript,
|
||
}:
|
||
|
||
stdenv.mkDerivation rec {
|
||
pname = "valgrind";
|
||
version = "3.25.1";
|
||
|
||
src = fetchurl {
|
||
url = "https://sourceware.org/pub/${pname}/${pname}-${version}.tar.bz2";
|
||
hash = "sha256-Yd640HJ7RcJo79wbO2yeZ5zZfL9e5LKNHerXyLeica8=";
|
||
};
|
||
|
||
patches = [
|
||
# Fix checks on Musl.
|
||
# https://bugs.kde.org/show_bug.cgi?id=453929
|
||
(fetchpatch {
|
||
url = "https://bugsfiles.kde.org/attachment.cgi?id=148912";
|
||
sha256 = "Za+7K93pgnuEUQ+jDItEzWlN0izhbynX2crSOXBBY/I=";
|
||
})
|
||
# Fix build on armv7l.
|
||
# see also https://bugs.kde.org/show_bug.cgi?id=454346
|
||
(fetchpatch {
|
||
url = "https://git.yoctoproject.org/poky/plain/meta/recipes-devtools/valgrind/valgrind/use-appropriate-march-mcpu-mfpu-for-ARM-test-apps.patch?id=b7a9250590a16f1bdc8c7b563da428df814d4292";
|
||
sha256 = "sha256-sBZzn98Sf/ETFv8ubivgA6Y6fBNcyR8beB3ICDAyAH0=";
|
||
})
|
||
];
|
||
|
||
outputs = [
|
||
"out"
|
||
"dev"
|
||
"man"
|
||
"doc"
|
||
];
|
||
|
||
hardeningDisable = [
|
||
"pie"
|
||
"stackprotector"
|
||
];
|
||
|
||
# GDB is needed to provide a sane default for `--db-command'.
|
||
# Perl is needed for `callgrind_{annotate,control}'.
|
||
buildInputs = [
|
||
gdb
|
||
perl
|
||
];
|
||
|
||
# Perl is also a native build input.
|
||
nativeBuildInputs = [
|
||
autoreconfHook
|
||
perl
|
||
];
|
||
|
||
enableParallelBuilding = true;
|
||
separateDebugInfo = stdenv.hostPlatform.isLinux;
|
||
|
||
preConfigure = lib.optionalString stdenv.hostPlatform.isFreeBSD ''
|
||
substituteInPlace configure --replace-fail '`uname -r`' ${stdenv.cc.libc.version}-
|
||
'';
|
||
|
||
configureFlags = lib.optional stdenv.hostPlatform.isx86_64 "--enable-only64bit";
|
||
|
||
doCheck = true;
|
||
|
||
postInstall = ''
|
||
for i in $out/libexec/valgrind/*.supp; do
|
||
substituteInPlace $i \
|
||
--replace 'obj:/lib' 'obj:*/lib' \
|
||
--replace 'obj:/usr/X11R6/lib' 'obj:*/lib' \
|
||
--replace 'obj:/usr/lib' 'obj:*/lib'
|
||
done
|
||
'';
|
||
|
||
passthru = {
|
||
updateScript = writeScript "update-valgrind" ''
|
||
#!/usr/bin/env nix-shell
|
||
#!nix-shell -i bash -p curl pcre common-updater-scripts
|
||
|
||
set -eu -o pipefail
|
||
|
||
# Expect the text in format of:
|
||
# 'Current release: <a href="/downloads/current.html#current">valgrind-3.19.0</a>'
|
||
new_version="$(curl -s https://valgrind.org/ |
|
||
pcregrep -o1 'Current release: .*>valgrind-([0-9.]+)</a>')"
|
||
update-source-version ${pname} "$new_version"
|
||
'';
|
||
};
|
||
|
||
meta = {
|
||
homepage = "https://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 = lib.licenses.gpl2Plus;
|
||
|
||
maintainers = [ lib.maintainers.eelco ];
|
||
platforms =
|
||
with lib.platforms;
|
||
lib.intersectLists (x86 ++ power ++ s390x ++ armv7 ++ aarch64 ++ mips ++ riscv64) (
|
||
darwin ++ freebsd ++ illumos ++ linux
|
||
);
|
||
badPlatforms = [ lib.systems.inspect.platformPatterns.isStatic ];
|
||
# See: <https://hydra.nixos.org/build/128521440/nixlog/2>
|
||
#
|
||
# Darwin‐specific derivation logic has been removed, check the
|
||
# history if you want to fix this.
|
||
broken = stdenv.hostPlatform.isDarwin;
|
||
};
|
||
}
|