diff --git a/pkgs/by-name/fr/framac/package.nix b/pkgs/by-name/fr/framac/package.nix index 2aa780e9df47..ba2c03d9c2fa 100644 --- a/pkgs/by-name/fr/framac/package.nix +++ b/pkgs/by-name/fr/framac/package.nix @@ -74,6 +74,7 @@ stdenv.mkDerivation rec { ]); buildInputs = with ocamlPackages; [ + camlzip dune-site dune-configurator ocamlgraph diff --git a/pkgs/development/ocaml-modules/frama-c-lannotate/default.nix b/pkgs/development/ocaml-modules/frama-c-lannotate/default.nix new file mode 100644 index 000000000000..2c3ddf58b9c5 --- /dev/null +++ b/pkgs/development/ocaml-modules/frama-c-lannotate/default.nix @@ -0,0 +1,29 @@ +{ + lib, + buildDunePackage, + dune-site, + fetchzip, + frama-c, +}: + +buildDunePackage (finalAttrs: { + pname = "frama-c-lannotate"; + version = "0.2.4"; + + src = fetchzip { + url = "https://git.frama-c.com/pub/ltest/lannotate/-/archive/${finalAttrs.version}/lannotate-${finalAttrs.version}.tar.bz2"; + hash = "sha256-JoD2M3R3/DcUMt33QOvwqHg4eToCgjB8riKc09TWdyc="; + }; + + propagatedBuildInputs = [ + dune-site + frama-c + ]; + + meta = { + description = "Lannotate plugin of Frama-C, part of the LTest suite"; + homepage = "https://frama-c.com/fc-plugins/ltest.html"; + license = lib.licenses.lgpl2; + maintainers = with lib.maintainers; [ redianthus ]; + }; +}) diff --git a/pkgs/development/ocaml-modules/frama-c/default.nix b/pkgs/development/ocaml-modules/frama-c/default.nix new file mode 100644 index 000000000000..2c063384748c --- /dev/null +++ b/pkgs/development/ocaml-modules/frama-c/default.nix @@ -0,0 +1,43 @@ +{ + stdenv, + pkgs, + ocaml, + findlib, + framac, + camlzip, + ocamlgraph, + menhirLib, + ppx_deriving, + yaml, + yojson, + zarith, +}: + +stdenv.mkDerivation { + pname = "ocaml${ocaml.version}-frama-c"; + inherit (framac) version meta; + + dontUnpack = true; + + buildInputs = [ findlib ]; + + propagatedBuildInputs = [ + camlzip + menhirLib + ocamlgraph + ppx_deriving + yaml + yojson + zarith + ]; + + installPhase = '' + runHook preInstall + mkdir -p $OCAMLFIND_DESTDIR + for p in ${framac}/lib/* + do + ln -s $p $OCAMLFIND_DESTDIR/ + done + runHook postInstall + ''; +} diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 76d3bb4c41dc..86c74750aacc 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -647,6 +647,12 @@ let fpath = callPackage ../development/ocaml-modules/fpath { }; + frama-c = callPackage ../development/ocaml-modules/frama-c { + framac = pkgs.framac.override { ocamlPackages = self; }; + }; + + frama-c-lannotate = callPackage ../development/ocaml-modules/frama-c-lannotate { }; + frei0r = callPackage ../development/ocaml-modules/frei0r { inherit (pkgs) frei0r; };