Skip to content

Commit da9ee6e

Browse files
authored
Remove config files generation from Makefiles (#234)
* Generate local and sample config out of Makefile This makes the config files generation compatible with a dune rule. * Generate static config out of Makefile This will allow to generate this file from a different build system. * dune: Generate static configs and promote sample configs ocsigen_config_static.ml is generated from a dune rule and automatically registered into the library. ocsigenserver.conf.sample and local/etc/ocsigenserver.conf are generated and promoted into the worktree with dune rules. Dependencies are computed from Dune. For example, changing the generator script or changing options.ml with ./configure will trigger a rebuild. * Remove intermediate Makefiles in src/ Only src/server/Makefile remains. * Fix ocsigen_config_static.ml on Windows * Fix install rule for ocsigenserver.conf.sample * Make sure the build rule builds _build/install
1 parent bd68ae1 commit da9ee6e

File tree

15 files changed

+228
-203
lines changed

15 files changed

+228
-203
lines changed

Makefile

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ default all: build
88

99
.PHONY: build
1010
build:
11-
${MAKE} -C src
11+
dune build -p ocsigenserver
12+
${MAKE} -C src/server build
1213
doc:
1314
$(MAKE) -C doc
1415

@@ -28,13 +29,14 @@ top:
2829
### Cleaning ###
2930

3031
clean: clean.local
31-
${MAKE} -C src clean
32+
${MAKE} -C src/server clean
3233

3334
clean.local:
35+
dune clean
3436
-rm -f ocsigenserver-*.tar.gz
3537

3638
distclean: clean.local
37-
${MAKE} -C src distclean
39+
${MAKE} -C src/server distclean
3840
-make -C doc clean
3941
-rm Makefile.config
4042
-rm -f *~ \#* .\#*
@@ -76,9 +78,9 @@ install.files:
7678
@echo INSTALL_CAN_PUT_PERMISSIONS: ${INSTALL_CAN_PUT_PERMISSIONS}
7779
## Configuration files
7880
$(INSTALL) -m ${INSTALL_MOD_755} -d $(TEMPROOT)$(CONFIGDIR)/conf.d
79-
${INSTALL} -m ${INSTALL_MOD_644} ocsigenserver.conf.sample $(TEMPROOT)$(CONFIGDIR)/
81+
${INSTALL} -m ${INSTALL_MOD_644} _build/install/default/etc/ocsigenserver/ocsigenserver.conf.sample $(TEMPROOT)$(CONFIGDIR)/
8082
[ -f $(TEMPROOT)$(CONFIGDIR)/ocsigenserver.conf ] || \
81-
{ $(INSTALL) -m ${INSTALL_MOD_644} ocsigenserver.conf.sample \
83+
{ $(INSTALL) -m ${INSTALL_MOD_644} _build/install/default/etc/ocsigenserver/ocsigenserver.conf.sample \
8284
$(TEMPROOT)$(CONFIGDIR)/ocsigenserver.conf; }
8385
-mv $(TEMPROOT)$(CONFIGDIR)/mime.types $(TEMPROOT)$(CONFIGDIR)/mime.types.old
8486
## Log directory

Makefile.options

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,3 @@ INCS= -I ${BLD}/server/.ocsigenserver.objs/byte \
2626
SERVER_PACKAGE := lwt_ssl,bytes,lwt.unix,lwt_log,ipaddr,findlib,cryptokit,re,str,xml-light,dynlink,cohttp-lwt-unix
2727

2828
LIBS := -package ${SERVER_PACKAGE} ${INCS}
29-
30-
INITPACKAGE := \"$(shell ${OCAMLFIND} query -p-format -recursive \
31-
-separator '\";\"' ${SERVER_PACKAGE})\"; \
32-
\"ocsigenserver.polytables\"; \
33-
\"ocsigenserver.cookies\"; \
34-
\"ocsigenserver.baselib.base\"; \
35-
\"ocsigenserver.baselib\"; \
36-
\"ocsigenserver.http\"; \
37-
\"ocsigenserver\"; \

configure

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ set_defaults () {
8080
bindir=""
8181
logdir=""
8282
libdir=""
83+
libdir_set=0
8384
mandir=""
8485
docdir=""
8586
sysconfdir="/etc/ocsigenserver"
@@ -282,6 +283,7 @@ while [ "$#" -gt 0 ]; do
282283
;;
283284
--libdir)
284285
libdir="$2"
286+
libdir_set=1
285287
shift
286288
shift
287289
;;
@@ -485,32 +487,14 @@ CC := gcc
485487
# optional
486488
RLWRAP := $rlwrap
487489
488-
489-
### Options ###
490-
491-
# User who will run Ocsigen server (not root) (eg, for debian, www-data)
492-
# (This user must exist on your system)
493-
OCSIGENUSER := $ocsigen_user
494-
495-
# group who will run Ocsigen server (not root) (eg, for debian, www-data)
496-
# (This group must exist)
497-
OCSIGENGROUP := $ocsigen_group
498-
499-
500490
### Paths ###
501491
502492
# Temporary root directory to install the package (usually always "" but for package makers)
503493
TEMPROOT := $temproot
504494
505-
# The directory for ocsigen server (binary):
506-
BINDIR := $root$bindir
507-
508495
# The directory for ocsigen manpage:
509496
MANDIR := $root$mandir
510497
511-
# Where to install the libraries
512-
LIBDIR := $libdir
513-
514498
# ocsigen's logs:
515499
LOGDIR := $root$logdir
516500
@@ -538,6 +522,23 @@ SRC := $full_pwd
538522
include \$(SRC)/Makefile.options
539523
_EOF_
540524

525+
echo "Writing config options"
526+
cat <<_EOF_ > $my_pwd/src/files/ocsigenserver.conf/options.ml
527+
let version = "$version"
528+
let src = "$full_pwd"
529+
let port = 80
530+
let bindir = "$root$bindir"
531+
let libdir = "$libdir"
532+
let libdir_set = $libdir_set
533+
let logdir = "$root$logdir"
534+
let configdir = "$root$sysconfdir"
535+
let staticpagesdir = "$root$staticpagesdir"
536+
let datadir = "$root$datadir"
537+
let uploaddir = "$root$uploaddir"
538+
let commandpipe = "$root$commandpipe"
539+
let mimefile = "$root$sysconfdir/mime.types"
540+
_EOF_
541+
541542
######################################################################
542543
# Finish
543544

dune

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,26 @@
22
(_
33
(flags
44
(:standard -w -69))))
5+
6+
(rule
7+
(target ocsigenserver.conf.sample)
8+
(action
9+
(with-stdout-to
10+
%{target}
11+
(run src/files/ocsigenserver.conf/gen.exe sample))))
12+
13+
(install
14+
(files ocsigenserver.conf.sample)
15+
(section etc)
16+
(package ocsigenserver))
17+
18+
(subdir
19+
local/etc
20+
(rule
21+
(mode
22+
(promote (until-clean)))
23+
(target ocsigenserver.conf)
24+
(action
25+
(with-stdout-to
26+
%{target}
27+
(run ../../src/files/ocsigenserver.conf/gen.exe local)))))

ocsigenserver.opam

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ build: [
6262
"--sysconfdir"
6363
"%{lib}%/ocsigenserver/etc/ocsigenserver"
6464
]
65-
[make "-C" "src" "confs"]
6665
["dune" "build" "-p" name "-j" jobs]
6766
]
6867
install:[make "install.files"]

ocsigenserver.opam.template

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ build: [
2727
"--sysconfdir"
2828
"%{lib}%/ocsigenserver/etc/ocsigenserver"
2929
]
30-
[make "-C" "src" "confs"]
3130
["dune" "build" "-p" name "-j" jobs]
3231
]
3332
install:[make "install.files"]

src/Makefile

Lines changed: 0 additions & 65 deletions
This file was deleted.

src/baselib/Makefile

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/baselib/dune

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,8 @@
3232
from
3333
(dynlink -> dynlink_wrapper.natdynlink.ml)
3434
(_ -> dynlink_wrapper.nonatdynlink.ml))))
35+
36+
(rule
37+
(with-stdout-to
38+
ocsigen_config_static.ml
39+
(run ../files/ocsigenserver.conf/gen.exe static.ml)))

src/extensions/Makefile

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)