2012-01-16 11:20:13 +01:00
|
|
|
{ fetchurl, stdenv, perl, python, ncurses, makeWrapper
|
|
|
|
, ocaml, ocamlPackages }:
|
2009-12-12 01:47:14 +01:00
|
|
|
|
|
|
|
stdenv.mkDerivation rec {
|
2012-01-16 11:20:13 +01:00
|
|
|
name = "coccinelle-1.0.0-rc9";
|
2009-12-12 01:47:14 +01:00
|
|
|
|
|
|
|
src = fetchurl {
|
|
|
|
url = "http://coccinelle.lip6.fr/distrib/${name}.tgz";
|
2012-01-16 11:20:13 +01:00
|
|
|
sha256 = "75d5354e76500b627ccc33b8a929305e5a815ebf08027a8dc094f75ece241697";
|
2009-12-12 01:47:14 +01:00
|
|
|
};
|
|
|
|
|
2012-01-16 11:20:13 +01:00
|
|
|
buildInputs = [
|
|
|
|
ocaml ocamlPackages.findlib
|
|
|
|
ocamlPackages.menhir ocamlPackages.ocaml_batteries
|
|
|
|
ocamlPackages.ocaml_pcre ocamlPackages.ocaml_sexplib
|
|
|
|
ocamlPackages.ocaml_extlib ocamlPackages.pycaml
|
|
|
|
python ncurses makeWrapper perl
|
|
|
|
];
|
2009-12-12 01:47:14 +01:00
|
|
|
|
|
|
|
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"
|
|
|
|
'';
|
|
|
|
|
2012-01-16 11:20:13 +01:00
|
|
|
buildPhase = "make depend && make all && make all.opt";
|
2009-12-12 01:47:14 +01:00
|
|
|
|
2010-01-13 09:51:22 +01:00
|
|
|
# Note: The tests want $out/share/coccinelle/standard.h so they must be run
|
|
|
|
# after "make install".
|
2009-12-12 01:47:14 +01:00
|
|
|
doCheck = false;
|
|
|
|
|
|
|
|
postInstall =
|
|
|
|
'' wrapProgram "$out/bin/spatch" \
|
|
|
|
--prefix "LD_LIBRARY_PATH" ":" "$out/lib" \
|
|
|
|
--prefix "PYTHONPATH" ":" "$out/share/coccinelle/python"
|
2010-01-13 09:51:22 +01:00
|
|
|
|
2012-02-17 00:55:46 +01:00
|
|
|
wrapProgram "$out/bin/spatch.opt" \
|
|
|
|
--prefix "LD_LIBRARY_PATH" ":" "$out/lib" \
|
|
|
|
--prefix "PYTHONPATH" ":" "$out/share/coccinelle/python"
|
|
|
|
|
2010-03-13 19:19:31 +01:00
|
|
|
yes | make test
|
2009-12-12 01:47:14 +01:00
|
|
|
'';
|
|
|
|
|
|
|
|
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
|
|
|
|
};
|
|
|
|
}
|