diff --git a/pkgs/development/tools/ocaml/camlp5/default.nix b/pkgs/development/tools/ocaml/camlp5/default.nix index 9d81c46e20c9..a09f226b3f13 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 ]; + + 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 + +stdenv.mkDerivation (params // { + + pname = "ocaml${ocaml.version}-camlp5"; strictDeps = true; - nativeBuildInputs = [ ocaml perl ]; - 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 ]; }; -} +})