* Factor out an adapter to clean up the build tree.

svn path=/nixpkgs/trunk/; revision=16920
This commit is contained in:
Eelco Dolstra 2009-09-02 06:31:13 +00:00
parent 3d7152db82
commit f782f14e58
2 changed files with 19 additions and 15 deletions

View file

@ -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));
}

View file

@ -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