about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/analysis/kcov/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/tools/analysis/kcov/default.nix')
-rw-r--r--nixpkgs/pkgs/development/tools/analysis/kcov/default.nix104
1 files changed, 75 insertions, 29 deletions
diff --git a/nixpkgs/pkgs/development/tools/analysis/kcov/default.nix b/nixpkgs/pkgs/development/tools/analysis/kcov/default.nix
index 4b294bf8adaf..a708c88ee9ee 100644
--- a/nixpkgs/pkgs/development/tools/analysis/kcov/default.nix
+++ b/nixpkgs/pkgs/development/tools/analysis/kcov/default.nix
@@ -1,38 +1,84 @@
-{lib, stdenv, fetchFromGitHub, cmake, pkg-config, zlib, curl, elfutils, python3, libiberty, libopcodes}:
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, zlib
+, curl
+, elfutils
+, python3
+, libiberty
+, libopcodes
+, runCommand
+, gcc
+, rustc
+}:
 
-stdenv.mkDerivation rec {
-  pname = "kcov";
-  version = "36";
+let
+  self =
+    stdenv.mkDerivation rec {
+      pname = "kcov";
+      version = "38";
 
-  src = fetchFromGitHub {
-    owner = "SimonKagstrom";
-    repo = "kcov";
-    rev = "v${version}";
-    sha256 = "1q1mw5mxz041lr6qc2v4280rmx13pg1bx5r3bxz9bzs941r405r3";
-  };
+      src = fetchFromGitHub {
+        owner = "SimonKagstrom";
+        repo = "kcov";
+        rev = "v${version}";
+        sha256 = "sha256-6LoIo2/yMUz8qIpwJVcA3qZjjF+8KEM1MyHuyHsQD38=";
+      };
 
-  preConfigure = "patchShebangs src/bin-to-c-source.py";
-  nativeBuildInputs = [ cmake pkg-config python3 ];
+      preConfigure = "patchShebangs src/bin-to-c-source.py";
+      nativeBuildInputs = [ cmake pkg-config python3 ];
 
-  buildInputs = [ curl zlib elfutils libiberty libopcodes ];
+      buildInputs = [ curl zlib elfutils libiberty libopcodes ];
 
-  strictDeps = true;
+      strictDeps = true;
 
-  meta = with lib; {
-    description = "Code coverage tester for compiled programs, Python scripts and shell scripts";
+      passthru.tests = {
+        works-on-c = runCommand "works-on-c" {} ''
+          set -ex
+          cat - > a.c <<EOF
+          int main() {}
+          EOF
+          ${gcc}/bin/gcc a.c -o a.out
+          ${self}/bin/kcov /tmp/kcov ./a.out
+          test -e /tmp/kcov/index.html
+          touch $out
+          set +x
+        '';
 
-    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.
-    '';
+        works-on-rust = runCommand "works-on-rust" {} ''
+          set -ex
+          cat - > a.rs <<EOF
+          fn main() {}
+          EOF
+          # Put gcc in the path so that `cc` is found
+          PATH=${gcc}/bin:$PATH ${rustc}/bin/rustc a.rs -o a.out
+          ${self}/bin/kcov /tmp/kcov ./a.out
+          test -e /tmp/kcov/index.html
+          touch $out
+          set +x
+        '';
+      };
 
-    homepage = "http://simonkagstrom.github.io/kcov/index.html";
-    license = licenses.gpl2;
+      meta = with lib; {
+        description = "Code coverage tester for compiled programs, Python scripts and shell scripts";
 
-    maintainers = with maintainers; [ gal_bolle ekleog ];
-    platforms = platforms.linux;
-  };
-}
+        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