diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-03-03 13:39:30 +0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-03-03 13:57:08 +0100 |
commit | 497997cc388ce791ca0b4dc55f46ab515e8fb5d9 (patch) | |
tree | 867053bb31858180d2b439d1c63c610c58be54ee /pkgs/build-support/release | |
parent | ad7c518e45221533e2094acb20fea6ade477da75 (diff) | |
download | nixpkgs-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.tar nixpkgs-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.tar.gz nixpkgs-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.tar.bz2 nixpkgs-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.tar.lz nixpkgs-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.tar.xz nixpkgs-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.tar.zst nixpkgs-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.zip |
Move generation of coverage reports from nixos/lib/testing to releaseTools
Also, turn some stdenv adapters into setup hooks.
Diffstat (limited to 'pkgs/build-support/release')
-rw-r--r-- | pkgs/build-support/release/default.nix | 6 | ||||
-rw-r--r-- | pkgs/build-support/release/gcov-report.nix | 49 | ||||
-rw-r--r-- | pkgs/build-support/release/nix-build.nix | 2 |
3 files changed, 55 insertions, 2 deletions
diff --git a/pkgs/build-support/release/default.nix b/pkgs/build-support/release/default.nix index acad3487dad..6288935ec2a 100644 --- a/pkgs/build-support/release/default.nix +++ b/pkgs/build-support/release/default.nix @@ -27,10 +27,14 @@ rec { } // args); coverageAnalysis = args: nixBuild ( - { inherit lcov enableCoverageInstrumentation makeCoverageAnalysisReport; + { inherit lcov enableGCOVInstrumentation makeGCOVReport; doCoverageAnalysis = true; } // args); + gcovReport = args: import ./gcov-report.nix ( + { inherit runCommand lcov rsync; + } // args); + rpmBuild = args: import ./rpm-build.nix ( { inherit vmTools; } // args); diff --git a/pkgs/build-support/release/gcov-report.nix b/pkgs/build-support/release/gcov-report.nix new file mode 100644 index 00000000000..8ce5c0488a7 --- /dev/null +++ b/pkgs/build-support/release/gcov-report.nix @@ -0,0 +1,49 @@ +{ runCommand, lcov, rsync, coverageRuns, lcovFilter ? [ "/nix/store/*" ], baseDirHack ? false }: + +runCommand "coverage" + { buildInputs = [ lcov rsync ]; + inherit lcovFilter baseDirHack; + } + '' + mkdir -p $TMPDIR/gcov $out/nix-support $out/coverage + info=$out/coverage/full.info + + for p in ${toString coverageRuns}; do + if [ -f $p/nix-support/hydra-build-products ]; then + cat $p/nix-support/hydra-build-products >> $out/nix-support/hydra-build-products + fi + + [ ! -e $p/nix-support/failed ] || touch $out/nix-support/failed + + opts= + for d in $p/coverage-data/*; do + for i in $(cd $d/nix/store && ls); do + if ! [ -e /nix/store/$i/.build ]; then continue; fi + if [ -e $TMPDIR/gcov/nix/store/$i ]; then continue; fi + echo "copying $i..." + rsync -a /nix/store/$i/.build/* $TMPDIR/gcov/ + if [ -n "$baseDirHack" ]; then + opts="-b $TMPDIR/gcov/$(cd /nix/store/$i/.build && ls)" + fi + done + + for i in $(cd $d/nix/store && ls); do + rsync -a $d/nix/store/$i/.build/* $TMPDIR/gcov/ --include '*/' --include '*.gcda' --exclude '*' + done + done + + chmod -R u+w $TMPDIR/gcov + + echo "producing info..." + geninfo --ignore-errors source,gcov $TMPDIR/gcov --output-file $TMPDIR/app.info $opts + cat $TMPDIR/app.info >> $info + done + + echo "making report..." + set -o noglob + lcov --remove $info ''$lcovFilter > $info.tmp + set +o noglob + mv $info.tmp $info + genhtml --show-details $info -o $out/coverage + echo "report coverage $out/coverage" >> $out/nix-support/hydra-build-products + '' diff --git a/pkgs/build-support/release/nix-build.nix b/pkgs/build-support/release/nix-build.nix index 993f12bc300..8ebae24c673 100644 --- a/pkgs/build-support/release/nix-build.nix +++ b/pkgs/build-support/release/nix-build.nix @@ -79,7 +79,7 @@ stdenv.mkDerivation ( prePhases = ["initPhase"] ++ prePhases; - buildInputs = buildInputs ++ stdenv.lib.optional doCoverageAnalysis args.makeCoverageAnalysisReport; + buildInputs = buildInputs ++ stdenv.lib.optional doCoverageAnalysis args.makeGCOVReport; lcovFilter = ["/nix/store/*"] ++ lcovFilter; |