|
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 $* |
0 commit comments