nixpkgs/pkgs/by-name/kc/kcov/package.nix
Winter a19cd4ffb1 Revert "treewide: replace rev with tag"
This reverts commit 65a333600d5c88a98d674f637d092807cfc12253.

This wasn't tested for correctness with something like fodwatch [0],
and should not have been (self-)merged so quickly, especially without
further review.

It also resulted in the breakage of at least one package [1] (and that's
the one we know of and was caught).

A few packages that were updated in between this commit and this revert
were not reverted back to using `rev`, but other than that, this is a
1:1 revert.

[0]: https://codeberg.org/raphaelr/fodwatch
[1]: https://github.com/NixOS/nixpkgs/pull/396904 / 758551e4587d75882aebc21a04bee960418f8ce9
2025-04-08 02:57:25 -04:00

97 lines
2.1 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
zlib,
curl,
elfutils,
python3,
libiberty,
libopcodes,
runCommandCC,
rustc,
}:
let
self = stdenv.mkDerivation rec {
pname = "kcov";
version = "43";
src = fetchFromGitHub {
owner = "SimonKagstrom";
repo = "kcov";
rev = "v${version}";
sha256 = "sha256-hRJYuHNSXyRoUDBF/yIPXPcBBxZoTO5cgoB2tBhKPwY=";
};
preConfigure = "patchShebangs src/bin-to-c-source.py";
nativeBuildInputs = [
cmake
pkg-config
python3
];
buildInputs = [
curl
zlib
elfutils
libiberty
libopcodes
];
strictDeps = true;
passthru.tests = {
works-on-c = runCommandCC "works-on-c" { } ''
set -ex
cat - > a.c <<EOF
int main() {}
EOF
$CC a.c -o a.out
${self}/bin/kcov /tmp/kcov ./a.out
test -e /tmp/kcov/index.html
touch $out
set +x
'';
works-on-rust = runCommandCC "works-on-rust" { nativeBuildInputs = [ rustc ]; } ''
set -ex
cat - > a.rs <<EOF
fn main() {}
EOF
# Put gcc in the path so that `cc` is found
rustc a.rs -o a.out
${self}/bin/kcov /tmp/kcov ./a.out
test -e /tmp/kcov/index.html
touch $out
set +x
'';
};
meta = with lib; {
description = "Code coverage tester for compiled programs, Python scripts and shell scripts";
longDescription = ''
Kcov is a code coverage tester for compiled programs, Python
scripts and shell scripts. It allows collecting code coverage
information from executables without special command-line
arguments, and continuosly produces output from long-running
applications.
'';
homepage = "http://simonkagstrom.github.io/kcov/index.html";
license = licenses.gpl2;
changelog = "https://github.com/SimonKagstrom/kcov/blob/master/ChangeLog";
maintainers = with maintainers; [
gal_bolle
ekleog
];
platforms = platforms.linux;
};
};
in
self