Skip to content

Commit afd4bc6

Browse files
author
David Scott
committed
configure: use a wrapper script to avoid topfind problems
When ocamlfind is installed via opam, topfind often doesn't work for scripts. Signed-off-by: David Scott <[email protected]>
1 parent 14aa12a commit afd4bc6

File tree

2 files changed

+89
-82
lines changed

2 files changed

+89
-82
lines changed

configure

Lines changed: 12 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,12 @@
1-
#!/usr/bin/env ocaml
2-
3-
#use "topfind"
4-
#require "cmdliner"
5-
6-
let config_mk = "config.mk"
7-
8-
(* Configure script *)
9-
open Cmdliner
10-
11-
let dir name default docv doc =
12-
let doc = Printf.sprintf "Set the directory for installing %s" doc in
13-
Arg.(value & opt string default & info [name] ~docv ~doc)
14-
15-
let path name default docv doc =
16-
let doc = Printf.sprintf "Set the path for %s" doc in
17-
Arg.(value & opt string default & info [name] ~docv ~doc)
18-
19-
let disable_tests =
20-
let doc = "Disable the unit tests" in
21-
Arg.(value & flag & info [ "disable-tests" ] ~doc)
22-
23-
let varpatchdir = dir "varpatchdir" "/var/patch" "VARPATCHDIR" "hotfixes"
24-
let etcdir = dir "etcdir" "/etc/xensource" "ETCDIR" "configuration files"
25-
let optdir = dir "optdir" "/opt/xensource" "OPTDIR" "system files"
26-
let plugindir = dir "plugindir" "/etc/xapi.d/plugins" "PLUGINDIR" "xapi plugins"
27-
let hooksdir = dir "hooksdir" "/etc/xapi.d" "HOOKSDIR" "hook scripts"
28-
let inventory = path "inventory" "/etc/xensource-inventory" "INVENTORY" "the inventory file"
29-
let xapiconf = dir "xapiconf" "/etc/xapi.conf" "XAPICONF" "xapi master config file"
30-
let libexecdir = dir "libexecdir" "/opt/xensource/libexec" "LIBEXECDIR" "utility binaries"
31-
let scriptsdir = dir "scriptsdir" "/etc/xensource/scripts" "SCRIPTSDIR" "utility scripts"
32-
let sharedir = dir "sharedir" "/opt/xensource" "SHAREDIR" "shared binary files"
33-
let webdir = dir "webdir" "/opt/xensource/www" "WEBDIR" "html files"
34-
let xhadir = dir "xhadir" "/opt/xensource/xha" "XHADIR" "HA daemon"
35-
let bindir = dir "bindir" "/opt/xensource/bin" "BINDIR" "binaries"
36-
let sbindir = dir "sbindir" "/opt/xensource/bin" "BINDIR" "system binaries"
37-
let udevdir = dir "udevdir" "/etc/udev" "UDEVDIR" "udev scripts"
38-
39-
let info =
40-
let doc = "Configures a package" in
41-
Term.info "configure" ~version:"0.1" ~doc
42-
43-
let output_file filename lines =
44-
let oc = open_out filename in
45-
let lines = List.map (fun line -> line ^ "\n") lines in
46-
List.iter (output_string oc) lines;
47-
close_out oc
48-
49-
let configure disable_tests varpatchdir etcdir optdir plugindir hooksdir inventory xapiconf libexecdir scriptsdir sharedir webdir xhadir bindir sbindir udevdir =
50-
Printf.printf "Configuring with the following params:\n\tdisable_tests=%b\n\tvarpatchdir=%s\n\tetcdir=%s\n\toptdir=%s\n\tplugindir=%s\n\thooksdir=%s\n\tinventory=%s\n\txapiconf=%s\n\tlibexecdir=%s\n\tscriptsdir=%s\n\tsharedir=%s\n\twebdir=%s\n\txhadir=%s\n\tbindir=%s\n\tsbindir=%s\n\tudevdir=%s\n\n" disable_tests varpatchdir etcdir optdir plugindir hooksdir inventory xapiconf libexecdir scriptsdir sharedir webdir xhadir bindir sbindir udevdir;
51-
52-
(* Write config.mk *)
53-
let lines =
54-
[ "# Warning - this file is autogenerated by the configure script";
55-
"# Do not edit";
56-
Printf.sprintf "DISABLE_TESTS=%b" disable_tests;
57-
Printf.sprintf "VARPATCHDIR=%s" varpatchdir;
58-
Printf.sprintf "ETCDIR=%s" etcdir;
59-
Printf.sprintf "OPTDIR=%s" optdir;
60-
Printf.sprintf "PLUGINDIR=%s" plugindir;
61-
Printf.sprintf "HOOKSDIR=%s" hooksdir;
62-
Printf.sprintf "INVENTORY=%s" inventory;
63-
Printf.sprintf "XAPICONF=%s" xapiconf;
64-
Printf.sprintf "LIBEXECDIR=%s" libexecdir;
65-
Printf.sprintf "SCRIPTSDIR=%s" scriptsdir;
66-
Printf.sprintf "SHAREDIR=%s" sharedir;
67-
Printf.sprintf "WEBDIR=%s" webdir;
68-
Printf.sprintf "XHADIR=%s" xhadir;
69-
Printf.sprintf "BINDIR=%s" bindir;
70-
Printf.sprintf "SBINDIR=%s" sbindir;
71-
Printf.sprintf "UDEVDIR=%s" udevdir
72-
] in
73-
output_file config_mk lines
74-
75-
let configure_t = Term.(pure configure $ disable_tests $ varpatchdir $ etcdir $ optdir $ plugindir $ hooksdir $ inventory $ xapiconf $ libexecdir $ scriptsdir $ sharedir $ webdir $ xhadir $ bindir $ sbindir $ udevdir )
76-
77-
let () =
78-
match
79-
Term.eval (configure_t, info)
80-
with
81-
| `Error _ -> exit 1
82-
| _ -> exit 0
1+
#!/bin/bash
2+
3+
D=$(mktemp -d /tmp/configure.XXXXX)
4+
function cleanup {
5+
cd /
6+
rm -rf $D
7+
}
8+
trap cleanup EXIT
9+
10+
cp configure.ml $D
11+
(cd $D; ocamlfind ocamlopt -package "cmdliner,findlib,unix" -linkpkg configure.ml -o configure)
12+
$D/configure $*

configure.ml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
let config_mk = "config.mk"
2+
3+
(* Configure script *)
4+
open Cmdliner
5+
6+
let dir name default docv doc =
7+
let doc = Printf.sprintf "Set the directory for installing %s" doc in
8+
Arg.(value & opt string default & info [name] ~docv ~doc)
9+
10+
let path name default docv doc =
11+
let doc = Printf.sprintf "Set the path for %s" doc in
12+
Arg.(value & opt string default & info [name] ~docv ~doc)
13+
14+
let disable_tests =
15+
let doc = "Disable the unit tests" in
16+
Arg.(value & flag & info [ "disable-tests" ] ~doc)
17+
18+
let varpatchdir = dir "varpatchdir" "/var/patch" "VARPATCHDIR" "hotfixes"
19+
let etcdir = dir "etcdir" "/etc/xensource" "ETCDIR" "configuration files"
20+
let optdir = dir "optdir" "/opt/xensource" "OPTDIR" "system files"
21+
let plugindir = dir "plugindir" "/etc/xapi.d/plugins" "PLUGINDIR" "xapi plugins"
22+
let hooksdir = dir "hooksdir" "/etc/xapi.d" "HOOKSDIR" "hook scripts"
23+
let inventory = path "inventory" "/etc/xensource-inventory" "INVENTORY" "the inventory file"
24+
let xapiconf = dir "xapiconf" "/etc/xapi.conf" "XAPICONF" "xapi master config file"
25+
let libexecdir = dir "libexecdir" "/opt/xensource/libexec" "LIBEXECDIR" "utility binaries"
26+
let scriptsdir = dir "scriptsdir" "/etc/xensource/scripts" "SCRIPTSDIR" "utility scripts"
27+
let sharedir = dir "sharedir" "/opt/xensource" "SHAREDIR" "shared binary files"
28+
let webdir = dir "webdir" "/opt/xensource/www" "WEBDIR" "html files"
29+
let xhadir = dir "xhadir" "/opt/xensource/xha" "XHADIR" "HA daemon"
30+
let bindir = dir "bindir" "/opt/xensource/bin" "BINDIR" "binaries"
31+
let sbindir = dir "sbindir" "/opt/xensource/bin" "BINDIR" "system binaries"
32+
let udevdir = dir "udevdir" "/etc/udev" "UDEVDIR" "udev scripts"
33+
34+
let info =
35+
let doc = "Configures a package" in
36+
Term.info "configure" ~version:"0.1" ~doc
37+
38+
let output_file filename lines =
39+
let oc = open_out filename in
40+
let lines = List.map (fun line -> line ^ "\n") lines in
41+
List.iter (output_string oc) lines;
42+
close_out oc
43+
44+
let configure disable_tests varpatchdir etcdir optdir plugindir hooksdir inventory xapiconf libexecdir scriptsdir sharedir webdir xhadir bindir sbindir udevdir =
45+
Printf.printf "Configuring with the following params:\n\tdisable_tests=%b\n\tvarpatchdir=%s\n\tetcdir=%s\n\toptdir=%s\n\tplugindir=%s\n\thooksdir=%s\n\tinventory=%s\n\txapiconf=%s\n\tlibexecdir=%s\n\tscriptsdir=%s\n\tsharedir=%s\n\twebdir=%s\n\txhadir=%s\n\tbindir=%s\n\tsbindir=%s\n\tudevdir=%s\n\n" disable_tests varpatchdir etcdir optdir plugindir hooksdir inventory xapiconf libexecdir scriptsdir sharedir webdir xhadir bindir sbindir udevdir;
46+
47+
(* Write config.mk *)
48+
let lines =
49+
[ "# Warning - this file is autogenerated by the configure script";
50+
"# Do not edit";
51+
Printf.sprintf "DISABLE_TESTS=%b" disable_tests;
52+
Printf.sprintf "VARPATCHDIR=%s" varpatchdir;
53+
Printf.sprintf "ETCDIR=%s" etcdir;
54+
Printf.sprintf "OPTDIR=%s" optdir;
55+
Printf.sprintf "PLUGINDIR=%s" plugindir;
56+
Printf.sprintf "HOOKSDIR=%s" hooksdir;
57+
Printf.sprintf "INVENTORY=%s" inventory;
58+
Printf.sprintf "XAPICONF=%s" xapiconf;
59+
Printf.sprintf "LIBEXECDIR=%s" libexecdir;
60+
Printf.sprintf "SCRIPTSDIR=%s" scriptsdir;
61+
Printf.sprintf "SHAREDIR=%s" sharedir;
62+
Printf.sprintf "WEBDIR=%s" webdir;
63+
Printf.sprintf "XHADIR=%s" xhadir;
64+
Printf.sprintf "BINDIR=%s" bindir;
65+
Printf.sprintf "SBINDIR=%s" sbindir;
66+
Printf.sprintf "UDEVDIR=%s" udevdir
67+
] in
68+
output_file config_mk lines
69+
70+
let configure_t = Term.(pure configure $ disable_tests $ varpatchdir $ etcdir $ optdir $ plugindir $ hooksdir $ inventory $ xapiconf $ libexecdir $ scriptsdir $ sharedir $ webdir $ xhadir $ bindir $ sbindir $ udevdir )
71+
72+
let () =
73+
match
74+
Term.eval (configure_t, info)
75+
with
76+
| `Error _ -> exit 1
77+
| _ -> exit 0

0 commit comments

Comments
 (0)