2022-08-12 12:06:08 +00:00
|
|
|
{ stdenv
|
|
|
|
, lib
|
|
|
|
, fetchFromGitHub
|
|
|
|
, ocamlPackages
|
|
|
|
, pkg-config
|
|
|
|
, autoreconfHook
|
|
|
|
}:
|
2020-04-24 23:36:52 +00:00
|
|
|
|
2024-06-20 14:57:18 +00:00
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
2020-04-24 23:36:52 +00:00
|
|
|
pname = "coccinelle";
|
2024-06-20 14:57:18 +00:00
|
|
|
version = "1.2";
|
2020-04-24 23:36:52 +00:00
|
|
|
|
2022-08-12 12:06:08 +00:00
|
|
|
src = fetchFromGitHub {
|
2024-06-20 14:57:18 +00:00
|
|
|
repo = "coccinelle";
|
|
|
|
rev = finalAttrs.version;
|
2022-08-12 12:06:08 +00:00
|
|
|
owner = "coccinelle";
|
2024-06-20 14:57:18 +00:00
|
|
|
hash = "sha256-v51KQLMJENLrlstCsP3DAuJJFMyjFyOZPJ7cRW5ovws=";
|
2020-04-24 23:36:52 +00:00
|
|
|
};
|
|
|
|
|
2022-08-12 12:06:08 +00:00
|
|
|
nativeBuildInputs = with ocamlPackages; [
|
|
|
|
autoreconfHook
|
|
|
|
pkg-config
|
|
|
|
ocaml
|
|
|
|
findlib
|
|
|
|
menhir
|
|
|
|
];
|
|
|
|
|
2020-04-24 23:36:52 +00:00
|
|
|
buildInputs = with ocamlPackages; [
|
2022-08-12 12:06:08 +00:00
|
|
|
ocaml_pcre
|
|
|
|
parmap
|
|
|
|
pyml
|
|
|
|
stdcompat
|
2020-04-24 23:36:52 +00:00
|
|
|
];
|
|
|
|
|
2022-08-12 12:06:08 +00:00
|
|
|
strictDeps = true;
|
|
|
|
|
|
|
|
postPatch = ''
|
|
|
|
# Ensure dependencies from Nixpkgs are picked up.
|
|
|
|
rm -rf bundles/
|
|
|
|
'';
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
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.
|
|
|
|
'';
|
|
|
|
|
2022-08-12 12:06:08 +00:00
|
|
|
homepage = "https://coccinelle.gitlabpages.inria.fr/website/";
|
|
|
|
license = lib.licenses.gpl2Only;
|
2021-02-05 17:12:51 +00:00
|
|
|
platforms = lib.platforms.unix;
|
|
|
|
maintainers = [ lib.maintainers.thoughtpolice ];
|
2020-04-24 23:36:52 +00:00
|
|
|
};
|
2024-06-20 14:57:18 +00:00
|
|
|
})
|