about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/misc/sloccount/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/tools/misc/sloccount/default.nix')
-rw-r--r--nixpkgs/pkgs/development/tools/misc/sloccount/default.nix72
1 files changed, 72 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/misc/sloccount/default.nix b/nixpkgs/pkgs/development/tools/misc/sloccount/default.nix
new file mode 100644
index 000000000000..965f0ed096cd
--- /dev/null
+++ b/nixpkgs/pkgs/development/tools/misc/sloccount/default.nix
@@ -0,0 +1,72 @@
+{ fetchurl, stdenv, perl, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "sloccount-2.26";
+
+  src = fetchurl {
+    url = "https://www.dwheeler.com/sloccount/${name}.tar.gz";
+    sha256 = "0ayiwfjdh1946asah861ah9269s5xkc8p5fv1wnxs9znyaxs4zzs";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ perl ];
+
+  # Make sure the Flex-generated files are newer than the `.l' files, so that
+  # Flex isn't needed to recompile them.
+  patchPhase = ''
+    for file in *
+    do
+      if grep -q /usr/bin/perl "$file"
+      then
+          echo "patching \`$file'..."
+          substituteInPlace "$file" --replace \
+            "/usr/bin/perl" "${perl}/bin/perl"
+      fi
+    done
+
+    for file in *.l
+    do
+      touch "$(echo $file | sed -es'/\.l$/.c/g')"
+    done
+  '';
+
+  makeFlags = "PREFIX=$(out) CC=cc";
+
+  doCheck = true;
+  checkPhase = ''HOME="$TMPDIR" PATH="$PWD:$PATH" make test'';
+
+  preInstall = ''
+    mkdir -p "$out/bin"
+    mkdir -p "$out/share/man/man1"
+    mkdir -p "$out/share/doc"
+  '';
+
+  postInstall = ''
+    for w in "$out/bin"/*; do
+      isScript "$w" || continue
+      wrapProgram "$w" --prefix PATH : "$out/bin"
+    done
+    '';
+
+  meta = {
+    description = "Set of tools for counting physical Source Lines of Code (SLOC)";
+
+    longDescription = ''
+      This is the home page of "SLOCCount", a set of tools for
+      counting physical Source Lines of Code (SLOC) in a large number
+      of languages of a potentially large set of programs.  This suite
+      of tools was used in my papers More than a Gigabuck: Estimating
+      GNU/Linux's Size and Estimating Linux's Size to measure the SLOC
+      of entire GNU/Linux distributions, and my essay Linux Kernel
+      2.6: It's Worth More!  Others have measured Debian GNU/Linux and
+      the Perl CPAN library using this tool suite.
+    '';
+
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    homepage = https://www.dwheeler.com/sloccount/;
+
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}