diff --git a/pkgs/development/ocaml-modules/cohttp/0.19.3.nix b/pkgs/development/ocaml-modules/cohttp/0.19.3.nix new file mode 100644 index 000000000000..99f101010f3e --- /dev/null +++ b/pkgs/development/ocaml-modules/cohttp/0.19.3.nix @@ -0,0 +1,30 @@ +{ stdenv, buildOcaml, fetchurl, ocaml, cmdliner, re, uri_p4, fieldslib_p4 +, sexplib_p4, conduit , stringext, base64, magic-mime, ounit, alcotest +, asyncSupport ? stdenv.lib.versionAtLeast ocaml.version "4.02" +, lwt ? null, async_p4 ? null, async_ssl_p4 ? null +}: + +buildOcaml rec { + name = "cohttp"; + version = "0.19.3"; + + minimumSupportedOcamlVersion = "4.01"; + + src = fetchurl { + url = "https://github.com/mirage/ocaml-cohttp/archive/v${version}.tar.gz"; + sha256 = "1nrzpd4h52c1hnzcgsz462676saj9zss708ng001h54dglk8i1iv"; + }; + + buildInputs = [ alcotest cmdliner conduit magic-mime ounit lwt ] + ++ stdenv.lib.optionals asyncSupport [ async_p4 async_ssl_p4 ]; + propagatedBuildInputs = [ re stringext uri_p4 fieldslib_p4 sexplib_p4 base64 ]; + + buildFlags = "PREFIX=$(out)"; + + meta = with stdenv.lib; { + homepage = https://github.com/mirage/ocaml-cohttp; + description = "Very lightweight HTTP server using Lwt or Async"; + license = licenses.mit; + maintainers = [ maintainers.ericbmerritt ]; + }; +} diff --git a/pkgs/development/ocaml-modules/cohttp/default.nix b/pkgs/development/ocaml-modules/cohttp/default.nix index 99f101010f3e..1fd4446f1ee9 100644 --- a/pkgs/development/ocaml-modules/cohttp/default.nix +++ b/pkgs/development/ocaml-modules/cohttp/default.nix @@ -1,30 +1,35 @@ -{ stdenv, buildOcaml, fetchurl, ocaml, cmdliner, re, uri_p4, fieldslib_p4 -, sexplib_p4, conduit , stringext, base64, magic-mime, ounit, alcotest -, asyncSupport ? stdenv.lib.versionAtLeast ocaml.version "4.02" -, lwt ? null, async_p4 ? null, async_ssl_p4 ? null +{ stdenv, fetchFromGitHub, ocaml, findlib, ocamlbuild +, ppx_fields_conv, ppx_sexp_conv +, base64, fieldslib, uri, conduit +# Optional for async and lwt support: +, async , async_ssl, cmdliner, fmt, magic-mime, ocaml_lwt, tls }: -buildOcaml rec { - name = "cohttp"; - version = "0.19.3"; +stdenv.mkDerivation rec { + version = "0.22.0"; + name = "ocaml${ocaml.version}-cohttp-${version}"; - minimumSupportedOcamlVersion = "4.01"; + src = fetchFromGitHub { + owner = "mirage"; + repo = "ocaml-cohttp"; + rev = "v${version}"; + sha256 = "1iy4ynh0yrw8337nsa9zvgcf476im0bhccsbs0vki3c5yxw2x60d"; + }; - src = fetchurl { - url = "https://github.com/mirage/ocaml-cohttp/archive/v${version}.tar.gz"; - sha256 = "1nrzpd4h52c1hnzcgsz462676saj9zss708ng001h54dglk8i1iv"; - }; + buildInputs = [ ocaml findlib ocamlbuild ppx_fields_conv ppx_sexp_conv conduit + async async_ssl cmdliner fmt magic-mime ocaml_lwt tls ]; - buildInputs = [ alcotest cmdliner conduit magic-mime ounit lwt ] - ++ stdenv.lib.optionals asyncSupport [ async_p4 async_ssl_p4 ]; - propagatedBuildInputs = [ re stringext uri_p4 fieldslib_p4 sexplib_p4 base64 ]; + propagatedBuildInputs = [ base64 fieldslib uri ]; - buildFlags = "PREFIX=$(out)"; + makeFlags = [ "PREFIX=$(out)" ]; - meta = with stdenv.lib; { - homepage = https://github.com/mirage/ocaml-cohttp; - description = "Very lightweight HTTP server using Lwt or Async"; - license = licenses.mit; - maintainers = [ maintainers.ericbmerritt ]; - }; + createFindlibDestdir = true; + + meta = { + description = "HTTP(S) library for Lwt, Async and Mirage"; + license = stdenv.lib.licenses.isc; + maintainers = [ stdenv.lib.maintainers.vbgl ]; + inherit (src.meta) homepage; + inherit (ocaml.meta) platforms; + }; } diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index c38c4c53a822..3245cca84464 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -128,10 +128,15 @@ let cmdliner_1_0 = callPackage ../development/ocaml-modules/cmdliner/1.0.nix { }; - cohttp = callPackage ../development/ocaml-modules/cohttp { + cohttp_p4 = callPackage ../development/ocaml-modules/cohttp/0.19.3.nix { lwt = ocaml_lwt; }; + cohttp = + if lib.versionOlder "4.03" ocaml.version + then callPackage ../development/ocaml-modules/cohttp { } + else cohttp_p4; + conduit_p4 = callPackage ../development/ocaml-modules/conduit/0.10.0.nix { lwt = ocaml_lwt; };