summary refs log tree commit diff
path: root/pkgs/development/tools
diff options
context:
space:
mode:
authorWill Dietz <w@wdtz.org>2017-02-10 15:22:49 -0600
committerWill Dietz <w@wdtz.org>2017-02-12 14:31:16 -0600
commita82b3dd8e22e1d4555bd4f5487192e9d7cd58be6 (patch)
tree300c65627b03a4aaba0bc20a6ca9a0f8cc4d8413 /pkgs/development/tools
parent06bacb10e5c0ae4af621648891da0aa979c8c8de (diff)
downloadnixlib-a82b3dd8e22e1d4555bd4f5487192e9d7cd58be6.tar
nixlib-a82b3dd8e22e1d4555bd4f5487192e9d7cd58be6.tar.gz
nixlib-a82b3dd8e22e1d4555bd4f5487192e9d7cd58be6.tar.bz2
nixlib-a82b3dd8e22e1d4555bd4f5487192e9d7cd58be6.tar.lz
nixlib-a82b3dd8e22e1d4555bd4f5487192e9d7cd58be6.tar.xz
nixlib-a82b3dd8e22e1d4555bd4f5487192e9d7cd58be6.tar.zst
nixlib-a82b3dd8e22e1d4555bd4f5487192e9d7cd58be6.zip
creduce: init at 2.6.0
Also includes perl dependency 'GetOpt::Tabular'.
Diffstat (limited to 'pkgs/development/tools')
-rw-r--r--pkgs/development/tools/misc/creduce/default.nix61
1 files changed, 61 insertions, 0 deletions
diff --git a/pkgs/development/tools/misc/creduce/default.nix b/pkgs/development/tools/misc/creduce/default.nix
new file mode 100644
index 000000000000..a9296adf3343
--- /dev/null
+++ b/pkgs/development/tools/misc/creduce/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchurl, cmake
+, llvm, clang-unwrapped
+, flex
+, zlib
+, perl, ExporterLite, FileWhich, GetoptTabular, RegexpCommon, TermReadKey
+, utillinux
+}:
+
+assert stdenv.isLinux -> (utillinux != null);
+
+stdenv.mkDerivation rec {
+  name = "creduce-${version}";
+  version = "2.6.0";
+
+  src = fetchurl {
+    url = "http://embed.cs.utah.edu/creduce/${name}.tar.gz";
+    sha256 = "0pf5q0n8vkdcr1wrkxn2jzxv0xkrir13bwmqfw3jpbm3dh2c3b6d";
+  };
+
+  buildInputs = [
+    # Ensure stdenv's CC is on PATH before clang-unwrapped
+    stdenv.cc
+    # Actual deps:
+    cmake
+    llvm clang-unwrapped
+    flex zlib
+  ];
+
+  # On Linux, c-reduce's preferred way to reason about
+  # the cpu architecture/topology is to use 'lscpu',
+  # so let's make sure it knows where to find it:
+  patchPhase = stdenv.lib.optionalString stdenv.isLinux ''
+    substituteInPlace creduce/creduce_utils.pm --replace \
+      lscpu ${utillinux}/bin/lscpu
+  '';
+
+  perlDeps = [
+    perl ExporterLite FileWhich GetoptTabular RegexpCommon TermReadKey
+  ];
+
+  propagatedNativeBuildInputs = perlDeps;
+  propagatedUserEnvPkgs = perlDeps;
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A C program reducer";
+    homepage = "https://embed.cs.utah.edu/creduce";
+    # Officially, the license is: https://github.com/csmith-project/creduce/blob/master/COPYING
+    license = licenses.ncsa;
+    longDescription = ''
+      C-Reduce is a tool that takes a large C or C++ program that has a
+      property of interest (such as triggering a compiler bug) and
+      automatically produces a much smaller C/C++ program that has the same
+      property.  It is intended for use by people who discover and report
+      bugs in compilers and other tools that process C/C++ code.
+    '';
+    maintainers = [ maintainers.dtzWill ];
+    platforms = platforms.all;
+  };
+}