about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2008-07-11 09:13:34 +0000
committerLudovic Courtès <ludo@gnu.org>2008-07-11 09:13:34 +0000
commit57030a28aa48dcd8ee76ad5f772d6f2802155b60 (patch)
tree83da0fe2d369cd4fcc8f8f543a479f5aa33cab05
parentbb72d9080500f418630f96ee7ed5c437a5704f8f (diff)
downloadnixlib-57030a28aa48dcd8ee76ad5f772d6f2802155b60.tar
nixlib-57030a28aa48dcd8ee76ad5f772d6f2802155b60.tar.gz
nixlib-57030a28aa48dcd8ee76ad5f772d6f2802155b60.tar.bz2
nixlib-57030a28aa48dcd8ee76ad5f772d6f2802155b60.tar.lz
nixlib-57030a28aa48dcd8ee76ad5f772d6f2802155b60.tar.xz
nixlib-57030a28aa48dcd8ee76ad5f772d6f2802155b60.tar.zst
nixlib-57030a28aa48dcd8ee76ad5f772d6f2802155b60.zip
Add Splint, a static code analyzer for C.
svn path=/nixpkgs/trunk/; revision=12343
-rw-r--r--pkgs/development/tools/analysis/splint/default.nix31
-rw-r--r--pkgs/development/tools/analysis/splint/tmpdir.patch16
-rw-r--r--pkgs/top-level/all-packages.nix4
3 files changed, 51 insertions, 0 deletions
diff --git a/pkgs/development/tools/analysis/splint/default.nix b/pkgs/development/tools/analysis/splint/default.nix
new file mode 100644
index 000000000000..cb804b9e6b0d
--- /dev/null
+++ b/pkgs/development/tools/analysis/splint/default.nix
@@ -0,0 +1,31 @@
+{ fetchurl, stdenv, flex }:
+
+stdenv.mkDerivation rec {
+  name = "splint-3.1.2";
+
+  src = fetchurl {
+    url = "http://www.splint.org/downloads/${name}.src.tgz";
+    sha256 = "02pv8kscsrkrzip9r08pfs9xs98q74c52mlxzbii6cv6vx1vd3f7";
+  };
+
+  patches = [ ./tmpdir.patch ];
+
+  buildInputs = [ flex ];
+
+  doCheck = true;
+
+  meta = {
+    homepage = http://splint.org/;
+    description = "Splint, an annotation-assisted lightweight static analyzer for C";
+
+    longDescription = ''
+      Splint is a tool for statically checking C programs for security
+      vulnerabilities and coding mistakes.  With minimal effort, Splint
+      can be used as a better lint.  If additional effort is invested
+      adding annotations to programs, Splint can perform stronger
+      checking than can be done by any standard lint.
+    '';
+
+    license = "GPLv2+";
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/tools/analysis/splint/tmpdir.patch b/pkgs/development/tools/analysis/splint/tmpdir.patch
new file mode 100644
index 000000000000..01402ce943bc
--- /dev/null
+++ b/pkgs/development/tools/analysis/splint/tmpdir.patch
@@ -0,0 +1,16 @@
+Have Splint honor $TMPDIR.
+
+--- splint-3.1.2/src/context.c	2004-07-31 21:04:26.000000000 +0200
++++ splint-3.1.2/src/context.c	2008-07-11 10:55:16.000000000 +0200
+@@ -801,7 +801,10 @@ context_resetAllFlags (void) 
+                 val = cstring_makeLiteral (env != NULL ? env : DEFAULT_TMPDIR);
+ 	      }
+ # else
+-	      val = cstring_makeLiteral (DEFAULT_TMPDIR);
++	      {
++		char *env = getenv ("TMPDIR");
++		val = cstring_makeLiteral (env != NULL ? env : DEFAULT_TMPDIR);
++	      }
+ # endif /* !defined(OS2) && !defined(MSDOS) */
+ 
+ 	      break;
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index a5a2158ffd09..057fc4a7e57d 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2252,6 +2252,10 @@ let pkgs = rec {
     stdenv = overrideInStdenv stdenv [gnumake380];
   };
 
+  splint = import ../development/tools/analysis/splint {
+    inherit fetchurl stdenv flex;
+  };
+
   strace = import ../development/tools/misc/strace {
     inherit fetchurl stdenv;
   };