forked from mirrors/nixpkgs
* Factor out an adapter to clean up the build tree.
svn path=/nixpkgs/trunk/; revision=16920
This commit is contained in:
parent
3d7152db82
commit
f782f14e58
|
@ -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));
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue