summary refs log tree commit diff
path: root/pkgs/development/tools/misc/coccinelle/default.nix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2009-12-12 00:47:14 +0000
committerLudovic Courtès <ludo@gnu.org>2009-12-12 00:47:14 +0000
commitf63059dd0517bd144f9f8c4a84c6181540d8c459 (patch)
treeb26d4f00d7d5a6022293189aaa4f2ba77268030e /pkgs/development/tools/misc/coccinelle/default.nix
parentf62924477e0505d2ef5a47c76ee32b408027b66a (diff)
downloadnixpkgs-f63059dd0517bd144f9f8c4a84c6181540d8c459.tar
nixpkgs-f63059dd0517bd144f9f8c4a84c6181540d8c459.tar.gz
nixpkgs-f63059dd0517bd144f9f8c4a84c6181540d8c459.tar.bz2
nixpkgs-f63059dd0517bd144f9f8c4a84c6181540d8c459.tar.lz
nixpkgs-f63059dd0517bd144f9f8c4a84c6181540d8c459.tar.xz
nixpkgs-f63059dd0517bd144f9f8c4a84c6181540d8c459.tar.zst
nixpkgs-f63059dd0517bd144f9f8c4a84c6181540d8c459.zip
Add Coccinelle, a semantic patch interpreter for C.
svn path=/nixpkgs/trunk/; revision=18909
Diffstat (limited to 'pkgs/development/tools/misc/coccinelle/default.nix')
-rw-r--r--pkgs/development/tools/misc/coccinelle/default.nix54
1 files changed, 54 insertions, 0 deletions
diff --git a/pkgs/development/tools/misc/coccinelle/default.nix b/pkgs/development/tools/misc/coccinelle/default.nix
new file mode 100644
index 00000000000..811a289baed
--- /dev/null
+++ b/pkgs/development/tools/misc/coccinelle/default.nix
@@ -0,0 +1,54 @@
+{ fetchurl, stdenv, ocaml, perl, python, ncurses, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "coccinelle-0.1.11rc1";
+
+  src = fetchurl {
+    url = "http://coccinelle.lip6.fr/distrib/${name}.tgz";
+    sha256 = "1rdsv3qcl6zcx3d3zd4cl9d79hdgaw19llxbflkfxipvkg3vk59x";
+  };
+
+  buildInputs = [ ocaml perl python ncurses makeWrapper ];
+
+  preConfigure =
+    '' sed -i "configure" -e's|/usr/bin/perl|${perl}/bin/perl|g'
+       sed -i "globals/config.ml.in" \
+           -e"s|/usr/local/share|$out/share|g"
+    '';
+
+  buildPhase = "make depend && make all";
+
+  # Most of the test suite seems to fail (?!).
+  doCheck = false;
+  checkPhase = "make test";
+
+  postInstall =
+    '' wrapProgram "$out/bin/spatch"                                    \
+         --prefix "LD_LIBRARY_PATH" ":" "$out/lib"                      \
+         --prefix "PYTHONPATH" ":" "$out/share/coccinelle/python"
+    '';
+
+  meta = {
+    description = "Coccinelle, a program to apply C code semantic patches";
+
+    longDescription =
+      '' Coccinelle is a program matching and transformation engine which
+         provides the language SmPL (Semantic Patch Language) for specifying
+         desired matches and transformations in C code.  Coccinelle was
+         initially targeted towards performing collateral evolutions in
+         Linux.  Such evolutions comprise the changes that are needed in
+         client code in response to evolutions in library APIs, and may
+         include modifications such as renaming a function, adding a function
+         argument whose value is somehow context-dependent, and reorganizing
+         a data structure.  Beyond collateral evolutions, Coccinelle is
+         successfully used (by us and others) for finding and fixing bugs in
+         systems code.
+      '';
+
+    homepage = http://coccinelle.lip6.fr/;
+    license = "GPLv2";
+
+    maintainers = [ stdenv.lib.maintainers.ludo ];
+    platforms = stdenv.lib.platforms.gnu;  # arbitrary choice
+  };
+}