about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/misc/coccinelle/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/tools/misc/coccinelle/default.nix')
-rw-r--r--nixpkgs/pkgs/development/tools/misc/coccinelle/default.nix41
1 files changed, 41 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/misc/coccinelle/default.nix b/nixpkgs/pkgs/development/tools/misc/coccinelle/default.nix
new file mode 100644
index 000000000000..2d9aa55ed050
--- /dev/null
+++ b/nixpkgs/pkgs/development/tools/misc/coccinelle/default.nix
@@ -0,0 +1,41 @@
+{ fetchurl, lib, stdenv, python3, ncurses, ocamlPackages, pkg-config }:
+
+stdenv.mkDerivation rec {
+  pname = "coccinelle";
+  version = "1.1.0";
+
+  src = fetchurl {
+    url = "https://coccinelle.gitlabpages.inria.fr/website/distrib/${pname}-${version}.tar.gz";
+    sha256 = "0k0x4qnxzj8fymkp6y9irggcah070hj7hxq8l6ddj8ccpmjbhnsb";
+  };
+
+  buildInputs = with ocamlPackages; [
+    ocaml findlib menhir
+    ocaml_pcre parmap stdcompat
+    python3 ncurses pkg-config
+  ];
+
+  doCheck = false;
+
+  meta = {
+    description = "Program to apply semantic patches to C code";
+    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 = lib.licenses.gpl2;
+    platforms = lib.platforms.unix;
+    maintainers = [ lib.maintainers.thoughtpolice ];
+  };
+}