52 lines
1.5 KiB
Nix
52 lines
1.5 KiB
Nix
|
{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, re, stringext, ounit
|
||
|
, sexplib, ppx_sexp_conv
|
||
|
, legacyVersion ? false
|
||
|
, sexplib_p4
|
||
|
}:
|
||
|
|
||
|
if !stdenv.lib.versionAtLeast ocaml.version "4"
|
||
|
|| legacyVersion && stdenv.lib.versionAtLeast ocaml.version "4.03"
|
||
|
then throw "uri${stdenv.lib.optionalString legacyVersion "_p4"} is not available for OCaml ${ocaml.version}" else
|
||
|
|
||
|
with
|
||
|
if legacyVersion
|
||
|
then {
|
||
|
version = "1.9.1";
|
||
|
sha256 = "0v3jxqgyi4kj92r3x83rszfpnvvzy9lyb913basch4q64yka3w85";
|
||
|
} else {
|
||
|
version = "1.9.2";
|
||
|
sha256 = "137pg8j654x7r0d1664iy2zp3l82nki1kkh921lwdrwc5qqdl6jx";
|
||
|
};
|
||
|
|
||
|
stdenv.mkDerivation {
|
||
|
name = "ocaml${ocaml.version}-uri-${version}";
|
||
|
|
||
|
src = fetchzip {
|
||
|
url = "https://github.com/mirage/ocaml-uri/archive/v${version}.tar.gz";
|
||
|
inherit sha256;
|
||
|
};
|
||
|
|
||
|
buildInputs = [ ocaml findlib ocamlbuild ounit ]
|
||
|
++ stdenv.lib.optional (!legacyVersion) ppx_sexp_conv;
|
||
|
propagatedBuildInputs = [ re (if legacyVersion then sexplib_p4 else sexplib) stringext ];
|
||
|
|
||
|
configurePhase = "ocaml setup.ml -configure --prefix $out --enable-tests";
|
||
|
buildPhase = ''
|
||
|
ocaml setup.ml -build
|
||
|
ocaml setup.ml -doc
|
||
|
'';
|
||
|
doCheck = true;
|
||
|
checkPhase = "ocaml setup.ml -test";
|
||
|
installPhase = "ocaml setup.ml -install";
|
||
|
|
||
|
createFindlibDestdir = true;
|
||
|
|
||
|
meta = {
|
||
|
homepage = https://github.com/mirage/ocaml-uri;
|
||
|
platforms = ocaml.meta.platforms or [];
|
||
|
description = "RFC3986 URI parsing library for OCaml";
|
||
|
license = stdenv.lib.licenses.isc;
|
||
|
maintainers = with stdenv.lib.maintainers; [ vbgl ];
|
||
|
};
|
||
|
}
|