diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 92970b1c51f..db380366153 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -137,6 +137,23 @@ rec { } stdenv; + cleanupBuildTree = stdenv: + addAttrsToDerivation + { postPhases = "cleanupBuildDir"; + + # Get rid of everything that isn't a gcno file or a C source + # file. This also includes the gcda files; we're not + # interested in coverage resulting from the package's own test + # suite. + cleanupBuildDir = + '' + find $out/.build/ -type f -a ! \ + \( -name "*.c" -o -name "*.h" -o -name "*.gcno" \) \ + | xargs rm -f -- + ''; + } stdenv; + + /* Return a modified stdenv that builds packages with GCC's coverage instrumentation. The coverage note files (*.gcno) are stored in $out/.build, along with the source code of the package, to enable @@ -146,8 +163,6 @@ rec { addAttrsToDerivation { NIX_CFLAGS_COMPILE = "-O0 --coverage"; - postPhases = "cleanupBuildDir"; - # This is an uberhack to prevent libtool from removing gcno # files. This has been fixed in libtool, but there are # packages out there with old ltmain.sh scripts. @@ -158,17 +173,6 @@ rec { substituteInPlace $i --replace '*.$objext)' '*.$objext | *.gcno)' done ''; - - # Get rid of everything that isn't a gcno file or a C source - # file. This also includes the gcda files; we're not - # interested in coverage resulting from the package's own test - # suite. - cleanupBuildDir = - '' - find $out/.build/ -type f -a ! \ - \( -name "*.c" -o -name "*.gcno" -o -name "*.h" \) \ - | xargs rm -f -- - ''; } # Object files instrumented with coverage analysis write @@ -180,6 +184,6 @@ rec { # written there. And to make nice coverage reports with lcov, # we need the source code. So we have to use the # `keepBuildTree' adapter as well. - (keepBuildTree stdenv); + (cleanupBuildTree (keepBuildTree stdenv)); } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 45e8b616430..6aac097a0e4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -228,7 +228,7 @@ let inherit (import ../stdenv/adapters.nix {inherit (pkgs) dietlibc fetchurl runCommand;}) overrideGCC overrideInStdenv overrideSetup useDietLibC useKlibc makeStaticBinaries addAttrsToDerivation - keepBuildTree addCoverageInstrumentation; + keepBuildTree cleanupBuildTree addCoverageInstrumentation; ### BUILD SUPPORT