2012-09-12 12:08:21 +02:00
|
|
|
{ fetchurl, stdenv, python, ncurses, ocamlPackages, pkgconfig, makeWrapper }:
|
2009-12-12 01:47:14 +01:00
|
|
|
|
2015-01-08 11:16:02 +01:00
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
name = "coccinelle-${version}";
|
|
|
|
version = "1.0.0-rc23";
|
2009-12-12 01:47:14 +01:00
|
|
|
|
|
|
|
src = fetchurl {
|
|
|
|
url = "http://coccinelle.lip6.fr/distrib/${name}.tgz";
|
2015-01-08 11:16:02 +01:00
|
|
|
sha256 = "1qrd4kr3wc0hm4l60fwn19iwzwqcjsx85mm3k4gm3cdhljjma82p";
|
2009-12-12 01:47:14 +01:00
|
|
|
};
|
|
|
|
|
2012-04-09 11:42:20 +02:00
|
|
|
buildInputs = with ocamlPackages; [
|
2014-09-23 22:06:18 +02:00
|
|
|
ocaml findlib menhir ocamlPackages.camlp4
|
2012-09-11 15:02:37 +02:00
|
|
|
ocaml_pcre pycaml
|
|
|
|
python ncurses pkgconfig
|
2012-09-12 12:08:21 +02:00
|
|
|
makeWrapper
|
2012-04-09 11:42:20 +02:00
|
|
|
];
|
2012-02-17 00:55:46 +01:00
|
|
|
|
2012-09-11 15:02:37 +02:00
|
|
|
# TODO: is the generation of this wrapper truly/still needed?
|
|
|
|
# I don't have a non-NixOS system, so I cannot verify this, but shouldn't
|
|
|
|
# libpython know where to find its modules? (the path is for example in
|
|
|
|
# its Sys-module).
|
2012-04-12 17:30:02 +02:00
|
|
|
postInstall =
|
|
|
|
# On non-NixOS systems, Coccinelle would end up looking up Python modules
|
|
|
|
# in the wrong directory.
|
|
|
|
'' for p in "$out/bin/"*
|
|
|
|
do
|
|
|
|
wrapProgram "$p" \
|
|
|
|
--prefix "PYTHONPATH" ":" "${python}/lib/python${python.majorVersion}"
|
|
|
|
done
|
|
|
|
'';
|
|
|
|
|
2012-09-11 15:02:37 +02:00
|
|
|
configureFlags = "--enable-release";
|
|
|
|
|
2009-12-12 01:47:14 +01:00
|
|
|
meta = {
|
2014-08-24 16:21:08 +02:00
|
|
|
description = "Program to apply semantic patches to C code";
|
2015-01-08 11:16:02 +01:00
|
|
|
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.
|
|
|
|
'';
|
2009-12-12 01:47:14 +01:00
|
|
|
|
|
|
|
homepage = http://coccinelle.lip6.fr/;
|
2014-06-19 06:19:00 +02:00
|
|
|
license = stdenv.lib.licenses.gpl2;
|
2015-01-08 11:16:02 +01:00
|
|
|
platforms = stdenv.lib.platforms.unix;
|
|
|
|
maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
|
2009-12-12 01:47:14 +01:00
|
|
|
};
|
|
|
|
}
|