From 9d236f823273be2557bd23c0c8f74c085206d010 Mon Sep 17 00:00:00 2001 From: Allan Blanchard <allan.blanchard@cea.fr> Date: Wed, 7 Aug 2024 16:00:22 +0200 Subject: [PATCH] [nix] upgrade camlp5 for OCaml 5.2 --- nix/camlp5.nix | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++ nix/pkgs.nix | 1 + 2 files changed, 69 insertions(+) create mode 100644 nix/camlp5.nix diff --git a/nix/camlp5.nix b/nix/camlp5.nix new file mode 100644 index 0000000000..9f6055677e --- /dev/null +++ b/nix/camlp5.nix @@ -0,0 +1,68 @@ +{ lib, stdenv, fetchFromGitHub, ocaml, findlib, perl, makeWrapper +, rresult, bos, re, camlp-streams +, legacy ? false +}: + +if lib.versionOlder ocaml.version "4.02" +then throw "camlp5 is not available for OCaml ${ocaml.version}" +else + +let params = + if lib.versionAtLeast ocaml.version "4.12" && !legacy + then rec { + version = "8.03.00"; + + src = fetchFromGitHub { + owner = "camlp5"; + repo = "camlp5"; + rev = version; + hash = "sha256-hu/279gBvUc7Z4jM6EHiar6Wm4vjkGXl+7bxowj+vlM="; + }; + + nativeBuildInputs = [ makeWrapper ocaml findlib perl ]; + buildInputs = [ bos re rresult ]; + propagatedBuildInputs = [ camlp-streams ]; + + } else rec { + version = "7.14"; + src = fetchFromGitHub { + owner = "camlp5"; + repo = "camlp5"; + rev = "rel${builtins.replaceStrings [ "." ] [ "" ] version}"; + sha256 = "1dd68bisbpqn5lq2pslm582hxglcxnbkgfkwhdz67z4w9d5nvr7w"; + }; + nativeBuildInputs = [ ocaml perl ]; + } +; in + +stdenv.mkDerivation (params // { + + pname = "ocaml${ocaml.version}-camlp5"; + + strictDeps = true; + + prefixKey = "-prefix "; + + preConfigure = '' + configureFlagsArray=(--strict --libdir $out/lib/ocaml/${ocaml.version}/site-lib) + patchShebangs ./config/find_stuffversion.pl etc/META.pl + ''; + + buildFlags = [ "world.opt" ]; + + dontStrip = true; + + meta = with lib; { + description = "Preprocessor-pretty-printer for OCaml"; + longDescription = '' + Camlp5 is a preprocessor and pretty-printer for OCaml programs. + It also provides parsing and printing tools. + ''; + homepage = "https://camlp5.github.io/"; + license = licenses.bsd3; + platforms = ocaml.meta.platforms or []; + maintainers = with maintainers; [ + maggesi vbgl + ]; + }; +}) diff --git a/nix/pkgs.nix b/nix/pkgs.nix index f55744624c..9cc6a87b52 100644 --- a/nix/pkgs.nix +++ b/nix/pkgs.nix @@ -3,6 +3,7 @@ let ocamlOverlay = oself: osuper: { # External Packages alt-ergo = oself.callPackage ./alt-ergo.nix {}; + camlp5 = oself.callPackage ./camlp5.nix {}; combinetura = oself.callPackage ./combinetura.nix {}; mlmpfr = oself.callPackage ./mlmpfr.nix {}; why3 = oself.callPackage ./why3.nix {}; -- GitLab