Skip to content

Commit

Permalink
Dunify
Browse files Browse the repository at this point in the history
Building with Ocamlbuild still works and is used to build the documentation.
  • Loading branch information
vouillon committed Oct 2, 2023
1 parent 8e6390c commit a6eaa16
Show file tree
Hide file tree
Showing 36 changed files with 650 additions and 107 deletions.
14 changes: 0 additions & 14 deletions .merlin

This file was deleted.

30 changes: 10 additions & 20 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,21 +1,11 @@
### Building
BEST=$(if $(shell command -v ocamlopt 2> /dev/null),native,byte)
BUILDER=_build/build/build.$(BEST)
BUILD=ocaml pkg/build.ml

.PHONY: all byte native builder
all: $(BEST)
.PHONY: all
all:
dune build

byte: $(BUILDER)
# strange, see https://sympa.inria.fr/sympa/arc/ocsigen/2016-01/msg00016.html
$(BUILDER) src/lib/server/eliommod_sessiongroups.cmi
$(BUILD) manpage=false native=false native-dynlink=false
native: $(BUILDER)
$(BUILD) manpage=false native=true native-dynlink=true

$(BUILDER): $(wildcard build/*.ml)
ocamlbuild -no-plugin -I src/ocamlbuild -no-links -use-ocamlfind build/build.$(BEST) 1> /dev/null
builder: $(BUILDER)
### Doc
.PHONY: doc wikidoc doc man alldoc
DOCS_DIR=src/lib/client src/lib/server src/ocamlbuild src/ppx
Expand All @@ -42,16 +32,16 @@ doccp: alldoc
cp -Rf _build/src/ppx/api.wikidocdir/*.wiki $(API_DIR)/ppx/
cp -Rf doc/index.wiki $(API_DIR)/

$(BUILDER): $(wildcard build/*.ml)
ocamlbuild -no-plugin -I src/ocamlbuild -no-links -use-ocamlfind build/build.$(BEST) 1> /dev/null
builder: $(BUILDER)

### Cleaning ###
.PHONY: clean clean.local distclean
clean: clean.local
ocamlbuild -quiet -no-plugin -clean

clean.local:
-rm -f eliom-*.tar.gz
.PHONY: clean distclean
clean:
dune clean

distclean: clean clean.local
distclean: clean
-find ./ -name "*\#*" | xargs rm -f

### Installation ####
Expand Down
25 changes: 20 additions & 5 deletions build/build.ml
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,30 @@ let _ =
(* the dep with ocamldep make sure the extension syntax is compiled before *)
flag
["ocaml"; "compile"; "pkg_" ^ name]
(S [A "-ppx"; P (path ^ name ^ "_ex." ^ best)]);
flag_and_dep
(S
[ A "-ppx"
; Quote (S [P (path ^ name ^ "_ex." ^ best); A "-as-ppx"]) ]);
flag
["ocaml"; "ocamldep"; "pkg_" ^ name]
(S [A "-ppx"; P (path ^ name ^ "_ex." ^ best)]);
(S
[ A "-ppx"
; Quote (S [P (path ^ name ^ "_ex." ^ best); A "-as-ppx"]) ]);
dep
["ocaml"; "ocamldep"; "pkg_" ^ name]
[path ^ name ^ "_ex." ^ best];
flag_and_dep
["ocaml"; "infer_interface"; "pkg_" ^ name]
(S [A "-ppx"; P (path ^ name ^ "_ex." ^ best)]);
(S
[ A "-ppx"
; Quote (S [P (path ^ name ^ "_ex." ^ best); A "-as-ppx"]) ]);
dep
["ocaml"; "infer_interface"; "pkg_" ^ name]
[path ^ name ^ "_ex." ^ best];
flag_and_dep ["doc"; "pkg_" ^ name]
(S [A "-ppx"; P (path ^ name ^ "_ex." ^ best)])
(S
[ A "-ppx"
; Quote (S [P (path ^ name ^ "_ex." ^ best); A "-as-ppx"]) ]);
dep ["doc"; "pkg_" ^ name] [path ^ name ^ "_ex." ^ best]
in
add_syntax "ppx_eliom_utils" "src/ppx/";
add_syntax "ppx_eliom_types" "src/ppx/";
Expand Down
40 changes: 40 additions & 0 deletions dune-project
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
(lang dune 3.6)

(maintainers [email protected])
(authors [email protected])
(license "LGPL-2.1-only WITH OCaml-LGPL-linking-exception")

(package (name eliom)
(synopsis "Client/server Web framework")
(description "Eliom is a framework for implementing client/server Web applications.
It introduces new concepts to simplify the implementation of common behaviors, and uses advanced static typing features of OCaml to check many properties of the Web application at compile-time.
Eliom allows implementing the whole application as a single program that includes both the client and the server code.
We use a syntax extension to distinguish between the two sides.
The client-side code is compiled to JS using Ocsigen Js_of_ocaml.
")
(homepage http://ocsigen.org/eliom/)
(source (github ocsigen/eliom))
(depends
(ocaml (>= 4.08.0))
ocamlfind
ppx_deriving
(ppxlib (>= 0.15.0))
(js_of_ocaml-compiler (>= 3.6.0))
(js_of_ocaml (>= 3.6.0))
(js_of_ocaml-lwt (>= 3.6.0))
(js_of_ocaml-ocamlbuild :build)
(js_of_ocaml-ppx (>= 3.6.0))
(js_of_ocaml-ppx_deriving_json (>= 3.6.0))
(js_of_ocaml-tyxml (>= 3.6.0))
lwt_log
(lwt_ppx (>= 1.2.3))
(tyxml (and (>= 4.4.0) (< 5.0.0)))
(ocsigenserver (and (>= 5.1.0) (< 6.0.0)))
(ipaddr (>= 2.1))
(reactiveData (>= 0.2.1))
base-bytes
(ocsipersist (and (>= 1.0) (< 2.0)))
ppx_optcomp))

(generate_opam_files)

30 changes: 22 additions & 8 deletions opam → eliom.opam
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
# This file is generated by dune, edit dune-project instead
opam-version: "2.0"
name: "eliom"
version: "10.1.0"
maintainer: "[email protected]"
authors: "[email protected]"
synopsis: "Client/server Web framework"
description: """
Eliom is a framework for implementing client/server Web applications.
Expand All @@ -11,12 +8,13 @@ Eliom allows implementing the whole application as a single program that include
We use a syntax extension to distinguish between the two sides.
The client-side code is compiled to JS using Ocsigen Js_of_ocaml.
"""
homepage: "http://ocsigen.org/eliom/"
bug-reports: "https://github.com/ocsigen/eliom/issues/"
maintainer: ["dev@ocsigen.org"]
authors: ["dev@ocsigen.org"]
license: "LGPL-2.1-only WITH OCaml-LGPL-linking-exception"
dev-repo: "git+https://github.com/ocsigen/eliom.git"
build: [make]
homepage: "http://ocsigen.org/eliom/"
bug-reports: "https://github.com/ocsigen/eliom/issues"
depends: [
"dune" {>= "3.6"}
"ocaml" {>= "4.08.0"}
"ocamlfind"
"ppx_deriving"
Expand All @@ -37,4 +35,20 @@ depends: [
"base-bytes"
"ocsipersist" {>= "1.0" & < "2.0"}
"ppx_optcomp"
"odoc" {with-doc}
]
build: [
["dune" "subst"] {dev}
[
"dune"
"build"
"-p"
name
"-j"
jobs
"@install"
"@runtest" {with-test}
"@doc" {with-doc}
]
]
dev-repo: "git+https://github.com/ocsigen/eliom.git"
3 changes: 3 additions & 0 deletions pkg/distillery/dune
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
(install
(section lib)
(files (glob_files templates/basic.ppx/*)))
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
30 changes: 30 additions & 0 deletions src/lib/client/dune
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
(library
(name eliom_client)
(public_name eliom.client)
(synopsis "Eliom: client-side")
(wrapped false)
(modules_without_implementation eliom_content_sigs eliom_form_sigs
eliom_parameter_sigs eliom_registration_sigs eliom_service_sigs
eliom_shared_sigs eliom_wrap)
(preprocess (pps lwt_ppx js_of_ocaml-ppx js_of_ocaml-ppx_deriving_json))
(libraries ocsigenserver.cookies ocsigenserver.polytables js_of_ocaml
js_of_ocaml-tyxml js_of_ocaml-lwt js_of_ocaml-lwt.logger
lwt_react ocsigenserver.baselib.base cohttp tyxml
reactiveData)
(foreign_stubs (language c) (names eliom_stubs))
(js_of_ocaml (javascript_files eliom_client.js)))

(include dune.client)

(rule
(target dune.client)
(mode promote)
(deps (glob_files ../*) (universe))
(action
(with-stdout-to
%{target}
(run ocaml ../../tools/gen_dune.ml --client ..))))

(env
(_
(flags (:standard -w -9 -warn-error -6-16-22-27-32-37-39-67-69))))
92 changes: 92 additions & 0 deletions src/lib/client/dune.client
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
(rule (copy# ../eliom_bus.client.ml eliom_bus.ml))
(rule (copy# ../eliom_bus.client.mli eliom_bus.mli))
(rule (copy# ../eliom_client.client.ml eliom_client.ml))
(rule (copy# ../eliom_client.client.mli eliom_client.mli))
(rule (copy# ../eliom_client_base.shared.ml eliom_client_base.ml))
(rule (copy# ../eliom_client_core.client.ml eliom_client_core.ml))
(rule (target eliom_client_main.ml) (deps ../eliom_client_main.eliom ../server/eliom_client_main.type_mli)
(action
(with-stdout-to %{target}
(chdir .. (run ppx_eliom_client -type server/eliom_client_main.type_mli --as-pp --impl eliom_client_main.eliom)))))
(rule (copy# ../eliom_client_value.client.ml eliom_client_value.ml))
(rule (copy# ../eliom_client_value.client.mli eliom_client_value.mli))
(rule (copy# ../eliom_comet.client.ml eliom_comet.ml))
(rule (copy# ../eliom_comet.client.mli eliom_comet.mli))
(rule (copy# ../eliom_comet_base.shared.ml eliom_comet_base.ml))
(rule (copy# ../eliom_comet_base.shared.mli eliom_comet_base.mli))
(rule (copy# ../eliom_common.client.ml eliom_common.ml))
(rule (copy# ../eliom_common_base.shared.ml eliom_common_base.ml))
(rule (copy# ../eliom_config.client.ml eliom_config.ml))
(rule (copy# ../eliom_config.client.mli eliom_config.mli))
(rule (copy# ../eliom_content.client.mli eliom_content.mli))
(rule (target eliom_content.ml) (deps ../eliom_content.eliom ../server/eliom_content.type_mli)
(action
(with-stdout-to %{target}
(chdir .. (run ppx_eliom_client -type server/eliom_content.type_mli --as-pp --impl eliom_content.eliom)))))
(rule (copy# ../eliom_content_.client.ml eliom_content_.ml))
(rule (copy# ../eliom_content_core.client.ml eliom_content_core.ml))
(rule (copy# ../eliom_content_core.client.mli eliom_content_core.mli))
(rule (copy# ../eliom_content_sigs.shared.mli eliom_content_sigs.mli))
(rule (copy# ../eliom_cookies_base.shared.ml eliom_cookies_base.ml))
(rule (target eliom_cscache.ml) (deps ../eliom_cscache.eliom ../server/eliom_cscache.type_mli)
(action
(with-stdout-to %{target}
(chdir .. (run ppx_eliom_client -type server/eliom_cscache.type_mli --as-pp --impl eliom_cscache.eliom)))))
(rule (target eliom_form.ml) (deps ../eliom_form.eliom ../server/eliom_form.type_mli)
(action
(with-stdout-to %{target}
(chdir .. (run ppx_eliom_client -type server/eliom_form.type_mli --as-pp --impl eliom_form.eliom)))))
(rule (copy# ../eliom_form_sigs.shared.mli eliom_form_sigs.mli))
(rule (copy# ../eliom_lazy.client.ml eliom_lazy.ml))
(rule (copy# ../eliom_lazy.client.mli eliom_lazy.mli))
(rule (copy# ../eliom_lib.client.ml eliom_lib.ml))
(rule (copy# ../eliom_lib.client.mli eliom_lib.mli))
(rule (copy# ../eliom_lib_base.shared.ml eliom_lib_base.ml))
(rule (copy# ../eliom_lib_base.shared.mli eliom_lib_base.mli))
(rule (copy# ../eliom_parameter.client.ml eliom_parameter.ml))
(rule (copy# ../eliom_parameter.client.mli eliom_parameter.mli))
(rule (copy# ../eliom_parameter_base.shared.ml eliom_parameter_base.ml))
(rule (copy# ../eliom_parameter_sigs.shared.mli eliom_parameter_sigs.mli))
(rule (copy# ../eliom_process.client.ml eliom_process.ml))
(rule (copy# ../eliom_react.client.ml eliom_react.ml))
(rule (copy# ../eliom_react.client.mli eliom_react.mli))
(rule (copy# ../eliom_registration.client.ml eliom_registration.ml))
(rule (copy# ../eliom_registration.client.mli eliom_registration.mli))
(rule (copy# ../eliom_registration_sigs.shared.mli eliom_registration_sigs.mli))
(rule (copy# ../eliom_request.client.ml eliom_request.ml))
(rule (copy# ../eliom_request.client.mli eliom_request.mli))
(rule (copy# ../eliom_request_info.client.ml eliom_request_info.ml))
(rule (copy# ../eliom_request_info.client.mli eliom_request_info.mli))
(rule (copy# ../eliom_route.client.ml eliom_route.ml))
(rule (copy# ../eliom_route_base.shared.ml eliom_route_base.ml))
(rule (copy# ../eliom_runtime.shared.ml eliom_runtime.ml))
(rule (copy# ../eliom_runtime.shared.mli eliom_runtime.mli))
(rule (copy# ../eliom_service.client.ml eliom_service.ml))
(rule (copy# ../eliom_service.client.mli eliom_service.mli))
(rule (target eliom_service_base.ml) (deps ../eliom_service_base.eliom ../server/eliom_service_base.type_mli)
(action
(with-stdout-to %{target}
(chdir .. (run ppx_eliom_client -type server/eliom_service_base.type_mli --as-pp --impl eliom_service_base.eliom)))))
(rule (copy# ../eliom_service_sigs.shared.mli eliom_service_sigs.mli))
(rule (copy# ../eliom_shared.client.mli eliom_shared.mli))
(rule (target eliom_shared.ml) (deps ../eliom_shared.eliom ../server/eliom_shared.type_mli)
(action
(with-stdout-to %{target}
(chdir .. (run ppx_eliom_client -type server/eliom_shared.type_mli --as-pp --impl eliom_shared.eliom)))))
(rule (target eliom_shared_content.ml) (deps ../eliom_shared_content.eliom ../server/eliom_shared_content.type_mli)
(action
(with-stdout-to %{target}
(chdir .. (run ppx_eliom_client -type server/eliom_shared_content.type_mli --as-pp --impl eliom_shared_content.eliom)))))
(rule (copy# ../eliom_shared_sigs.shared.mli eliom_shared_sigs.mli))
(rule (target eliom_tools.ml) (deps ../eliom_tools.eliom ../server/eliom_tools.type_mli)
(action
(with-stdout-to %{target}
(chdir .. (run ppx_eliom_client -type server/eliom_tools.type_mli --as-pp --impl eliom_tools.eliom)))))
(rule (copy# ../eliom_types.client.ml eliom_types.ml))
(rule (copy# ../eliom_types_base.shared.ml eliom_types_base.ml))
(rule (copy# ../eliom_types_base.shared.mli eliom_types_base.mli))
(rule (copy# ../eliom_unwrap.client.ml eliom_unwrap.ml))
(rule (copy# ../eliom_unwrap.client.mli eliom_unwrap.mli))
(rule (copy# ../eliom_uri.shared.ml eliom_uri.ml))
(rule (copy# ../eliom_uri.shared.mli eliom_uri.mli))
(rule (copy# ../eliom_wrap.client.mli eliom_wrap.mli))
35 changes: 0 additions & 35 deletions src/lib/eliom_extension_template.server.ml

This file was deleted.

2 changes: 2 additions & 0 deletions src/lib/eliom_registration_sigs.shared.mli
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*)

open! Eliom_service

module type PARAM = sig
type page
type options
Expand Down
6 changes: 6 additions & 0 deletions src/lib/eliom_service.client.ml
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,9 @@ let register_delayed_get_or_na_coservice ~sp:_ _ =

let register_delayed_post_coservice ~sp:_ _ _getname =
failwith "CSRF coservice not implemented client side for now"

module Cohttp = struct
module Header = struct
type t
end
end
6 changes: 6 additions & 0 deletions src/lib/eliom_service.client.mli
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,9 @@ val pre_applied_parameters
val reload_fun
: ('a, _, _, _, _, _, _, _, _, _, _) t
-> ('a -> unit -> result Lwt.t) Eliom_client_value.t option

module Cohttp : sig
module Header : sig
type t
end
end
Loading

0 comments on commit a6eaa16

Please sign in to comment.