diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/misc/coccinelle/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/tools/misc/coccinelle/default.nix | 57 |
1 files changed, 57 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..861a6eff1640 --- /dev/null +++ b/nixpkgs/pkgs/development/tools/misc/coccinelle/default.nix @@ -0,0 +1,57 @@ +{ fetchurl, stdenv, python, ncurses, ocamlPackages, pkgconfig }: + +stdenv.mkDerivation rec { + pname = "coccinelle"; + version = "1.0.6"; + + src = fetchurl { + url = "http://coccinelle.lip6.fr/distrib/${pname}-${version}.tgz"; + sha256 = "02g9hmwkvfl838zz690yra5jzrqjg6y6ffxkrfcsx790bhkfsll4"; + }; + + buildInputs = with ocamlPackages; [ + ocaml findlib menhir + ocaml_pcre pycaml + python ncurses pkgconfig + ]; + + doCheck = !stdenv.isDarwin; + + # The build system builds two versions of spgen: + # 'spgen' with ocamlc -custom (bytecode specially linked) + # and 'spgen.opt' using ocamlopt. + # I'm not sure of the intentions here, but the way + # the 'spgen' binary is produced results in an + # invalid/incorrect interpreter path (/lib/ld-linux*). + # We could patch it, but without knowing why it's + # finding the wrong path it seems safer to use + # the .opt version that is built correctly. + # All that said, our fix here is simple: remove 'spgen'. + # The bin/spgen entrypoint is really a bash script + # and will use spgen.opt if 'spgen' doesn't exist. + postInstall = '' + rm $out/lib/coccinelle/spgen/spgen + ''; + + 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 = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.thoughtpolice ]; + }; +} |