nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 89 lines 2.1 kB view raw
1{ 2 lib, 3 stdenv, 4 ocaml, 5 findlib, 6 dune_2, 7 dune_3, 8}: 9 10lib.extendMkDerivation { 11 constructDrv = stdenv.mkDerivation; 12 excludeDrvArgNames = [ 13 "minimalOCamlVersion" 14 "duneVersion" 15 ]; 16 extendDrvArgs = 17 finalAttrs: 18 { 19 pname, 20 version, 21 nativeBuildInputs ? [ ], 22 enableParallelBuilding ? true, 23 ... 24 }@args: 25 26 let 27 Dune = 28 let 29 dune-version = args.duneVersion or "3"; 30 in 31 { 32 "1" = throw "Support for dune version 1 has been removed"; 33 "2" = dune_2; 34 "3" = dune_3; 35 } 36 ."${dune-version}"; 37 in 38 39 if args ? minimalOCamlVersion && lib.versionOlder ocaml.version args.minimalOCamlVersion then 40 throw "${pname}-${version} is not available for OCaml ${ocaml.version}" 41 else 42 { 43 name = "ocaml${ocaml.version}-${pname}-${version}"; 44 45 strictDeps = true; 46 47 inherit enableParallelBuilding; 48 dontAddStaticConfigureFlags = true; 49 configurePlatforms = [ ]; 50 51 nativeBuildInputs = [ 52 ocaml 53 Dune 54 findlib 55 ] 56 ++ nativeBuildInputs; 57 58 buildPhase = 59 args.buildPhase or '' 60 runHook preBuild 61 dune build -p ${pname} ''${enableParallelBuilding:+-j $NIX_BUILD_CORES} 62 runHook postBuild 63 ''; 64 65 installPhase = 66 args.installPhase or '' 67 runHook preInstall 68 dune install --prefix $out --libdir $OCAMLFIND_DESTDIR ${pname} \ 69 ${ 70 if lib.versionAtLeast Dune.version "2.9" then 71 "--docdir $out/share/doc --mandir $out/share/man" 72 else 73 "" 74 } 75 runHook postInstall 76 ''; 77 78 checkPhase = 79 args.checkPhase or '' 80 runHook preCheck 81 dune runtest -p ${pname} ''${enableParallelBuilding:+-j $NIX_BUILD_CORES} 82 runHook postCheck 83 ''; 84 85 meta = (args.meta or { }) // { 86 platforms = args.meta.platforms or ocaml.meta.platforms; 87 }; 88 }; 89}