depot/third_party/nixpkgs/pkgs/development/libraries/glibc/mtrace.nix
Default email bcb2f287e1 Project import generated by Copybara.
GitOrigin-RevId: d603719ec6e294f034936c0d0dc06f689d91b6c3
2024-06-20 20:27:18 +05:30

41 lines
1.3 KiB
Nix

{ glibc, perl }:
# Small wrapper which only exposes `mtrace(3)` from `glibc`. This can't be placed
# into `glibc` itself because it depends on Perl which would mean that the final
# `glibc` inside a stdenv bootstrap has a dependency `glibc -> perl -> bootstrap tools`,
# so this is now in its own package that isn't used for bootstrapping.
#
# `glibc` needs to be overridden here because it's still needed to `./configure` the source in order
# to have a build environment where we can call the needed make target.
glibc.overrideAttrs (oldAttrs: {
pname = "glibc-mtrace";
buildPhase = ''
runHook preBuild
mkdir malloc
make -C ../glibc-${glibc.minorRelease}/malloc objdir=`pwd` `pwd`/malloc/mtrace;
runHook postBuild
'';
installPhase = ''
mkdir -p $out/bin
mv malloc/mtrace $out/bin/
'';
# Perl checked during configure
nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ perl ];
# Perl shebang used for `mtrace`.
buildInputs = oldAttrs.buildInputs ++ [ perl ];
# Reset a few things declared by `pkgs.glibc`.
outputs = [ "out" ];
separateDebugInfo = false;
meta = oldAttrs.meta // {
description = "Perl script used to interpret and provide human readable output of the trace log contained in the file mtracedata, whose contents were produced by mtrace(3)";
mainProgram = "mtrace";
};
})