about summary refs log tree commit diff
path: root/pkgs/development/tools/ocaml
diff options
context:
space:
mode:
authorVincent Laporte <Vincent.Laporte@gmail.com>2023-08-04 18:25:08 +0200
committerVincent Laporte <vbgl@users.noreply.github.com>2023-08-11 19:10:36 +0200
commit032f6c6f936589f3020ffc303dea4c566bfd281f (patch)
tree744b0c5811141494a54145e146966edd4128601c /pkgs/development/tools/ocaml
parent7e5ada58a9c737e6ef95e1cf5ac1aaf6e11a1dd8 (diff)
ocamlPackages.camlp5: 7.14 → 8.00.05
Diffstat (limited to 'pkgs/development/tools/ocaml')
-rw-r--r--pkgs/development/tools/ocaml/camlp5/default.nix56
1 files changed, 41 insertions, 15 deletions
diff --git a/pkgs/development/tools/ocaml/camlp5/default.nix b/pkgs/development/tools/ocaml/camlp5/default.nix
index 9d81c46e20c9f..a09f226b3f136 100644
--- a/pkgs/development/tools/ocaml/camlp5/default.nix
+++ b/pkgs/development/tools/ocaml/camlp5/default.nix
@@ -1,31 +1,57 @@
-{ lib, stdenv, fetchFromGitHub, ocaml, perl }:
+{ lib, stdenv, fetchFromGitHub, ocaml, findlib, perl, makeWrapper
+, rresult, bos, ocaml_pcre, re, camlp-streams
+}:
 
 if lib.versionOlder ocaml.version "4.02"
-|| lib.versionOlder "4.13" ocaml.version
 then throw "camlp5 is not available for OCaml ${ocaml.version}"
 else
 
-stdenv.mkDerivation rec {
+let params =
+  if lib.versionAtLeast ocaml.version "4.12"
+  then rec {
+    version = "8.00.05";
 
-  pname = "camlp5";
-  version = "7.14";
+    src = fetchFromGitHub {
+      owner = "camlp5";
+      repo = "camlp5";
+      rev = version;
+      hash = "sha256-Havr3RB6iUP7QzV+LUGwMHtGzmRdS5RqYsqJ0N5w6gE=";
+    };
 
-  src = fetchFromGitHub {
-    owner = "camlp5";
-    repo = "camlp5";
-    rev = "rel${builtins.replaceStrings [ "." ] [ "" ] version}";
-    sha256 = "1dd68bisbpqn5lq2pslm582hxglcxnbkgfkwhdz67z4w9d5nvr7w";
-  };
+    nativeBuildInputs = [ makeWrapper ocaml findlib perl ];
+    buildInputs = [ bos ocaml_pcre re rresult ];
+    propagatedBuildInputs = [ camlp-streams ];
 
-  strictDeps = true;
+    postFixup = ''
+      for p in camlp5 camlp5o camlp5r camlp5sch mkcamlp5 ocpp5
+      do
+        wrapProgram $out/bin/$p \
+        --suffix CAML_LD_LIBRARY_PATH : ${ocaml_pcre}/lib/ocaml/${ocaml.version}/site-lib/stublibs
+      done
+    '';
+  } else rec {
+    version = "7.14";
+    src = fetchFromGitHub {
+      owner = "camlp5";
+      repo = "camlp5";
+      rev = "rel${builtins.replaceStrings [ "." ] [ "" ] version}";
+      sha256 = "1dd68bisbpqn5lq2pslm582hxglcxnbkgfkwhdz67z4w9d5nvr7w";
+    };
+    nativeBuildInputs = [ ocaml perl ];
+  }
+; in
 
-  nativeBuildInputs = [ ocaml perl ];
+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
+    patchShebangs ./config/find_stuffversion.pl etc/META.pl
   '';
 
   buildFlags = [ "world.opt" ];
@@ -45,4 +71,4 @@ stdenv.mkDerivation rec {
       maggesi vbgl
     ];
   };
-}
+})