2021-03-24 08:09:42 -07:00
|
|
|
{ stdenv, lib, fetchzip, fetchpatch, which, ocsigen_server, ocaml,
|
2019-06-16 12:59:06 -07:00
|
|
|
lwt_react,
|
2020-03-05 22:42:04 -08:00
|
|
|
opaline, ppx_deriving, findlib
|
2021-03-23 12:43:19 -07:00
|
|
|
, ocaml-migrate-parsetree
|
2021-01-03 23:43:44 -08:00
|
|
|
, ppx_tools_versioned
|
2018-03-30 22:41:24 -07:00
|
|
|
, js_of_ocaml-ocamlbuild, js_of_ocaml-ppx, js_of_ocaml-ppx_deriving_json
|
|
|
|
, js_of_ocaml-lwt
|
|
|
|
, js_of_ocaml-tyxml
|
2019-01-14 14:52:07 -08:00
|
|
|
, lwt_ppx
|
2016-12-10 01:59:01 -08:00
|
|
|
}:
|
2014-06-08 03:14:08 -07:00
|
|
|
|
2021-01-11 04:49:15 -08:00
|
|
|
if !lib.versionAtLeast ocaml.version "4.07"
|
2019-10-12 22:10:36 -07:00
|
|
|
then throw "eliom is not available for OCaml ${ocaml.version}"
|
|
|
|
else
|
|
|
|
|
2016-12-10 01:59:01 -08:00
|
|
|
stdenv.mkDerivation rec
|
2014-06-08 03:14:08 -07:00
|
|
|
{
|
2014-10-19 09:47:18 -07:00
|
|
|
pname = "eliom";
|
2020-11-28 19:10:20 -08:00
|
|
|
version = "6.12.4";
|
2014-06-08 03:14:08 -07:00
|
|
|
|
2019-04-19 07:14:47 -07:00
|
|
|
src = fetchzip {
|
2016-05-30 08:46:49 -07:00
|
|
|
url = "https://github.com/ocsigen/eliom/archive/${version}.tar.gz";
|
2020-11-28 19:10:20 -08:00
|
|
|
sha256 = "00m6v2k4mg8705dy41934lznl6gj91i6dk7p1nkaccm51nna25kz";
|
2014-06-08 03:14:08 -07:00
|
|
|
};
|
|
|
|
|
2021-03-24 08:09:42 -07:00
|
|
|
patches = [
|
|
|
|
# Compatibility with js_of_ocaml >= 3.9.0, remove at next release
|
|
|
|
(fetchpatch {
|
|
|
|
url = "https://github.com/ocsigen/eliom/commit/4106a4217956f7b74a8ef3f73a1e1f55e02ade45.patch";
|
|
|
|
sha256 = "1cgbvpljn9x6zxirxf3rdjrsdwy319ykz3qq03c36cc40hy2w13p";
|
|
|
|
})
|
|
|
|
];
|
|
|
|
|
2021-03-23 12:43:19 -07:00
|
|
|
buildInputs = [ ocaml which findlib js_of_ocaml-ocamlbuild
|
|
|
|
ocaml-migrate-parsetree
|
|
|
|
js_of_ocaml-ppx_deriving_json opaline
|
2021-01-03 23:43:44 -08:00
|
|
|
ppx_tools_versioned
|
2018-03-30 22:41:24 -07:00
|
|
|
];
|
2014-10-19 09:48:04 -07:00
|
|
|
|
2018-03-30 22:41:24 -07:00
|
|
|
propagatedBuildInputs = [
|
|
|
|
js_of_ocaml-lwt
|
|
|
|
js_of_ocaml-ppx
|
|
|
|
js_of_ocaml-tyxml
|
2019-01-14 14:52:07 -08:00
|
|
|
lwt_ppx
|
2018-03-30 22:41:24 -07:00
|
|
|
lwt_react
|
|
|
|
ocsigen_server
|
|
|
|
ppx_deriving
|
|
|
|
];
|
2014-06-08 03:14:08 -07:00
|
|
|
|
2018-05-28 00:35:51 -07:00
|
|
|
installPhase = "opaline -prefix $out -libdir $OCAMLFIND_DESTDIR";
|
2014-06-08 03:14:08 -07:00
|
|
|
|
2017-03-18 13:15:27 -07:00
|
|
|
setupHook = [ ./setup-hook.sh ];
|
|
|
|
|
2014-09-22 02:00:51 -07:00
|
|
|
meta = {
|
2020-03-31 18:11:51 -07:00
|
|
|
homepage = "http://ocsigen.org/eliom/";
|
2019-10-12 22:10:36 -07:00
|
|
|
description = "OCaml Framework for programming Web sites and client/server Web applications";
|
2014-09-22 02:00:51 -07:00
|
|
|
|
|
|
|
longDescription =''Eliom is a framework for programming Web sites
|
|
|
|
and client/server Web applications. It introduces new concepts to
|
|
|
|
simplify programming common behaviours and uses advanced static
|
|
|
|
typing features of OCaml to check many properties of the Web site
|
|
|
|
at compile time. If you want to write a Web application, Eliom
|
|
|
|
makes possible to write the whole application as a single program
|
|
|
|
(client and server parts). A syntax extension is used to
|
|
|
|
distinguish both parts and the client side is compiled to JS using
|
|
|
|
Ocsigen Js_of_ocaml.'';
|
|
|
|
|
2021-01-11 04:49:15 -08:00
|
|
|
license = lib.licenses.lgpl21;
|
2014-09-22 02:00:51 -07:00
|
|
|
|
2021-01-11 04:49:15 -08:00
|
|
|
maintainers = [ lib.maintainers.gal_bolle ];
|
2014-09-22 02:00:51 -07:00
|
|
|
};
|
2016-10-22 02:08:27 -07:00
|
|
|
}
|