lol
at master 106 lines 2.5 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 ocaml, 6 findlib, 7 perl, 8 makeWrapper, 9 rresult, 10 bos, 11 pcre2, 12 re, 13 camlp-streams, 14 legacy ? false, 15}: 16 17if lib.versionOlder ocaml.version "4.02" then 18 throw "camlp5 is not available for OCaml ${ocaml.version}" 19else 20 21 let 22 params = 23 if lib.versionAtLeast ocaml.version "4.12" && !legacy then 24 rec { 25 version = "8.03.02"; 26 27 src = fetchFromGitHub { 28 owner = "camlp5"; 29 repo = "camlp5"; 30 rev = version; 31 hash = "sha256-nz+VfGR/6FdBvMzPPpVpviAXXBWNqM3Ora96Yzx964o="; 32 }; 33 34 nativeBuildInputs = [ 35 makeWrapper 36 ocaml 37 findlib 38 perl 39 ]; 40 buildInputs = [ 41 bos 42 pcre2 43 re 44 rresult 45 ]; 46 propagatedBuildInputs = [ camlp-streams ]; 47 postInstall = '' 48 for prog in camlp5 camlp5o camlp5r camlp5sch mkcamlp5 ocpp5 49 do 50 wrapProgram $out/bin/$prog \ 51 --prefix CAML_LD_LIBRARY_PATH : "$CAML_LD_LIBRARY_PATH" 52 done 53 ''; 54 55 } 56 else 57 rec { 58 version = "7.14"; 59 src = fetchFromGitHub { 60 owner = "camlp5"; 61 repo = "camlp5"; 62 rev = "rel${builtins.replaceStrings [ "." ] [ "" ] version}"; 63 sha256 = "1dd68bisbpqn5lq2pslm582hxglcxnbkgfkwhdz67z4w9d5nvr7w"; 64 }; 65 nativeBuildInputs = [ 66 ocaml 67 perl 68 ]; 69 }; 70 in 71 72 stdenv.mkDerivation ( 73 params 74 // { 75 76 pname = "ocaml${ocaml.version}-camlp5"; 77 78 strictDeps = true; 79 80 prefixKey = "-prefix "; 81 82 preConfigure = '' 83 configureFlagsArray=(--strict --libdir $out/lib/ocaml/${ocaml.version}/site-lib) 84 patchShebangs ./config/find_stuffversion.pl etc/META.pl 85 ''; 86 87 buildFlags = [ "world.opt" ]; 88 89 dontStrip = true; 90 91 meta = with lib; { 92 description = "Preprocessor-pretty-printer for OCaml"; 93 longDescription = '' 94 Camlp5 is a preprocessor and pretty-printer for OCaml programs. 95 It also provides parsing and printing tools. 96 ''; 97 homepage = "https://camlp5.github.io/"; 98 license = licenses.bsd3; 99 platforms = ocaml.meta.platforms or [ ]; 100 maintainers = with maintainers; [ 101 maggesi 102 vbgl 103 ]; 104 }; 105 } 106 )