You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
939 B
34 lines
939 B
{ stdenv, writeText, ocaml, findlib, ocamlbuild, camlp4 }: |
|
|
|
{ name, version, buildInputs ? [], |
|
createFindlibDestdir ? true, |
|
dontStrip ? true, |
|
minimumSupportedOcamlVersion ? null, |
|
hasSharedObjects ? false, |
|
setupHook ? null, |
|
meta ? {}, ... |
|
}@args: |
|
let |
|
defaultMeta = { |
|
platforms = ocaml.meta.platforms or []; |
|
}; |
|
in |
|
assert minimumSupportedOcamlVersion != null -> |
|
stdenv.lib.versionOlder minimumSupportedOcamlVersion ocaml.version; |
|
|
|
stdenv.mkDerivation (args // { |
|
name = "ocaml-${name}-${version}"; |
|
|
|
buildInputs = [ ocaml findlib ocamlbuild camlp4 ] ++ buildInputs; |
|
|
|
setupHook = if setupHook == null && hasSharedObjects |
|
then writeText "setupHook.sh" '' |
|
export CAML_LD_LIBRARY_PATH="''${CAML_LD_LIBRARY_PATH}''${CAML_LD_LIBRARY_PATH:+:}''$1/lib/ocaml/${ocaml.version}/site-lib/${name}/" |
|
'' |
|
else setupHook; |
|
|
|
inherit createFindlibDestdir; |
|
inherit dontStrip; |
|
|
|
meta = defaultMeta // meta; |
|
})
|
|
|