diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/misc/ltrace/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/tools/misc/ltrace/default.nix | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/misc/ltrace/default.nix b/nixpkgs/pkgs/development/tools/misc/ltrace/default.nix new file mode 100644 index 000000000000..9114e7cf4cef --- /dev/null +++ b/nixpkgs/pkgs/development/tools/misc/ltrace/default.nix @@ -0,0 +1,63 @@ +{ lib, stdenv, fetchurl, fetchgit, autoreconfHook, dejagnu, elfutils }: + +stdenv.mkDerivation rec { + pname = "ltrace"; + version = "0.7.91"; + + src = fetchurl { + url = "https://src.fedoraproject.org/repo/pkgs/ltrace/ltrace-0.7.91.tar.bz2/9db3bdee7cf3e11c87d8cc7673d4d25b/ltrace-0.7.91.tar.bz2"; + sha256 = "sha256-HqellbKh2ZDHxslXl7SSIXtpjV1sodtgVwh8hgTC3Dc="; + }; + + nativeBuildInputs = [ autoreconfHook ]; # Some patches impact ./configure. + buildInputs = [ elfutils ]; + nativeCheckInputs = [ dejagnu ]; + + # Import Fedora's (very) large patch series: bug fixes, architecture support, + # etc. RH/Fedora are currently working with upstream to merge all these + # patches for the next major branch. + prePatch = let + fedora = fetchgit { + url = "https://src.fedoraproject.org/rpms/ltrace.git"; + rev = "00f430ccbebdbd13bdd4d7ee6303b091cf005542"; + sha256 = "sha256-FBGEgmaslu7xrJtZ2WsYwu9Cw1ZQrWRV1+Eu9qLXO4s="; + }; + in '' + # Order matters, read the patch list from the RPM spec. Our own patches + # are applied on top of the Fedora baseline. + fedorapatches="" + for p in $(grep '^Patch[0-9]\+:' ${fedora}/ltrace.spec | awk '{ print $2 }'); do + fedorapatches="$fedorapatches ${fedora}/$p" + done + patches="$fedorapatches $patches" + ''; + + # Cherry-pick extra patches for recent glibc support in the test suite. + patches = [ + # https://gitlab.com/cespedes/ltrace/-/merge_requests/14 + ./testsuite-newfstatat.patch + # https://gitlab.com/cespedes/ltrace/-/merge_requests/15 + ./sysdeps-x86.patch + ]; + + doCheck = true; + checkPhase = '' + # Hardening options interfere with some of the low-level expectations in + # the test suite (e.g. printf ends up redirected to __printf_chk). + NIX_HARDENING_ENABLE="" \ + # Disable test that requires ptrace-ing a non-child process, this might be + # forbidden by YAMA ptrace policy on the build host. + RUNTESTFLAGS="--host=${stdenv.hostPlatform.config} \ + --target=${stdenv.targetPlatform.config} \ + --ignore attach-process.exp" \ + make check + ''; + + meta = with lib; { + description = "Library call tracer"; + homepage = "https://www.ltrace.org/"; + platforms = platforms.linux; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ delroth ]; + }; +} |