diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-02-05 14:11:21 +0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-02-05 19:18:33 +0100 |
commit | 80647127a3e7e3eaf84dc6ff0af13ff4aaad2e0b (patch) | |
tree | e23432117b0cdfdec490c68e80da1d8e181f7b61 /pkgs/build-support/setup-hooks | |
parent | bea2b3c5177a9fae5df5598574bd25bca8f6cb09 (diff) | |
download | nixlib-80647127a3e7e3eaf84dc6ff0af13ff4aaad2e0b.tar nixlib-80647127a3e7e3eaf84dc6ff0af13ff4aaad2e0b.tar.gz nixlib-80647127a3e7e3eaf84dc6ff0af13ff4aaad2e0b.tar.bz2 nixlib-80647127a3e7e3eaf84dc6ff0af13ff4aaad2e0b.tar.lz nixlib-80647127a3e7e3eaf84dc6ff0af13ff4aaad2e0b.tar.xz nixlib-80647127a3e7e3eaf84dc6ff0af13ff4aaad2e0b.tar.zst nixlib-80647127a3e7e3eaf84dc6ff0af13ff4aaad2e0b.zip |
Turn the coverage analysis stdenv adapters into setup hooks
Stdenv adapters are kinda weird and un-idiomatic (especially when they don't actually change stdenv). It's more idiomatic to say buildInputs = [ makeCoverageAnalysisReport ];
Diffstat (limited to 'pkgs/build-support/setup-hooks')
-rw-r--r-- | pkgs/build-support/setup-hooks/enable-coverage-instrumentation.sh | 14 | ||||
-rw-r--r-- | pkgs/build-support/setup-hooks/make-coverage-analysis-report.sh | 18 |
2 files changed, 32 insertions, 0 deletions
diff --git a/pkgs/build-support/setup-hooks/enable-coverage-instrumentation.sh b/pkgs/build-support/setup-hooks/enable-coverage-instrumentation.sh new file mode 100644 index 000000000000..08ef490e2447 --- /dev/null +++ b/pkgs/build-support/setup-hooks/enable-coverage-instrumentation.sh @@ -0,0 +1,14 @@ +# Force GCC to build with coverage instrumentation. Also disable +# optimisation, since it may confuse things. +export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -O0 --coverage" + +# FIXME: Handle the case where postUnpack is already set. +postUnpack() { + # This is an uberhack to prevent libtool from remoaving gcno + # files. This has been fixed in libtool, but there are packages + # out there with old ltmain.sh scripts. See + # http://www.mail-archive.com/libtool@gnu.org/msg10725.html + for i in $(find -name ltmain.sh); do + substituteInPlace $i --replace '*.$objext)' '*.$objext | *.gcno)' + done +} diff --git a/pkgs/build-support/setup-hooks/make-coverage-analysis-report.sh b/pkgs/build-support/setup-hooks/make-coverage-analysis-report.sh new file mode 100644 index 000000000000..2951666651c6 --- /dev/null +++ b/pkgs/build-support/setup-hooks/make-coverage-analysis-report.sh @@ -0,0 +1,18 @@ +postPhases+=" coverageReportPhase" + +coverageReportPhase() { + lcov --directory . --capture --output-file app.info + set -o noglob + lcov --remove app.info $lcovFilter > app2.info + set +o noglob + mv app2.info app.info + + mkdir -p $out/coverage + genhtml app.info $lcovExtraTraceFiles -o $out/coverage > log + + # Grab the overall coverage percentage for use in release overviews. + mkdir -p $out/nix-support + grep "Overall coverage rate" log | sed 's/^.*(\(.*\)%).*$/\1/' > $out/nix-support/coverage-rate + + echo "report coverage $out/coverage" >> $out/nix-support/hydra-build-products +} |