42 lines
1.3 KiB
Nix
42 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";
|
|
};
|
|
})
|