configure.ac 9.16 KB
Newer Older
1
# Configure script for Ganeti
2
m4_define([gnt_version_major], [2])
3
4
m4_define([gnt_version_minor], [2])
m4_define([gnt_version_revision], [0])
Iustin Pop's avatar
Iustin Pop committed
5
m4_define([gnt_version_suffix], [~rc0])
6
7
8
9
10
m4_define([gnt_version_full],
          m4_format([%d.%d.%d%s],
                    gnt_version_major, gnt_version_minor,
                    gnt_version_revision, gnt_version_suffix))

Iustin Pop's avatar
Iustin Pop committed
11
AC_PREREQ(2.59)
12
AC_INIT(ganeti, gnt_version_full, ganeti@googlegroups.com)
13
AC_CONFIG_AUX_DIR(autotools)
Michael Hanselmann's avatar
Michael Hanselmann committed
14
AC_CONFIG_SRCDIR(configure)
15
AM_INIT_AUTOMAKE([1.9 foreign tar-ustar -Wall -Wno-portability])
Iustin Pop's avatar
Iustin Pop committed
16

17
18
19
20
21
22
AC_SUBST([VERSION_MAJOR], gnt_version_major)
AC_SUBST([VERSION_MINOR], gnt_version_minor)
AC_SUBST([VERSION_REVISION], gnt_version_revision)
AC_SUBST([VERSION_SUFFIX], gnt_version_suffix)
AC_SUBST([VERSION_FULL], gnt_version_full)

23
24
# --with-ssh-initscript=...
AC_ARG_WITH([ssh-initscript],
25
  [AS_HELP_STRING([--with-ssh-initscript=SCRIPT],
26
27
    [SSH init script to use (default is /etc/init.d/ssh)]
  )],
28
29
30
  [ssh_initd_script="$withval"],
  [ssh_initd_script="/etc/init.d/ssh"])
AC_SUBST(SSH_INITD_SCRIPT, $ssh_initd_script)
31

32
33
34
# --with-export-dir=...
AC_ARG_WITH([export-dir],
  [AS_HELP_STRING([--with-export-dir=DIR],
35
36
    [directory to use by default for instance image]
    [ exports (default is /srv/ganeti/export)]
37
38
39
40
41
  )],
  [export_dir="$withval"],
  [export_dir="/srv/ganeti/export"])
AC_SUBST(EXPORT_DIR, $export_dir)

42
43
44
45
46
47
48
49
50
51
# --with-ssh-config-dir=...
AC_ARG_WITH([ssh-config-dir],
  [AS_HELP_STRING([--with-ssh-config-dir=DIR],
    [ directory with ssh host keys ]
    [ (default is /etc/ssh)]
  )],
  [ssh_config_dir="$withval"],
  [ssh_config_dir="/etc/ssh"])
AC_SUBST(SSH_CONFIG_DIR, $ssh_config_dir)

52
53
54
55
# --with-os-search-path=...
# do a bit of black sed magic to for quoting of the strings in the list
AC_ARG_WITH([os-search-path],
  [AS_HELP_STRING([--with-os-search-path=LIST],
56
57
    [comma separated list of directories to]
    [ search for OS images (default is /srv/ganeti/os)]
58
59
60
61
62
  )],
  [os_search_path=`echo -n "$withval" | sed -e "s/\([[^,]]*\)/'\1'/g"`],
  [os_search_path="'/srv/ganeti/os'"])
AC_SUBST(OS_SEARCH_PATH, $os_search_path)

63
64
65
66
67
68
69
70
71
72
73
# --with-iallocator-search-path=...
# do a bit of black sed magic to for quoting of the strings in the list
AC_ARG_WITH([iallocator-search-path],
  [AS_HELP_STRING([--with-iallocator-search-path=LIST],
    [comma separated list of directories to]
    [ search for instance allocators (default is $libdir/ganeti/iallocators)]
  )],
  [iallocator_search_path=`echo -n "$withval" | sed -e "s/\([[^,]]*\)/'\1'/g"`],
  [iallocator_search_path="'$libdir/$PACKAGE_NAME/iallocators'"])
AC_SUBST(IALLOCATOR_SEARCH_PATH, $iallocator_search_path)

74
75
76
77
78
79
80
81
82
# --with-xen-bootloader=...
AC_ARG_WITH([xen-bootloader],
  [AS_HELP_STRING([--with-xen-bootloader=PATH],
    [bootloader for Xen hypervisor (default is empty)]
  )],
  [xen_bootloader="$withval"],
  [xen_bootloader=])
AC_SUBST(XEN_BOOTLOADER, $xen_bootloader)

83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# --with-xen-kernel=...
AC_ARG_WITH([xen-kernel],
  [AS_HELP_STRING([--with-xen-kernel=PATH],
    [DomU kernel image for Xen hypervisor (default is /boot/vmlinuz-2.6-xenU)]
  )],
  [xen_kernel="$withval"],
  [xen_kernel="/boot/vmlinuz-2.6-xenU"])
AC_SUBST(XEN_KERNEL, $xen_kernel)

# --with-xen-initrd=...
AC_ARG_WITH([xen-initrd],
  [AS_HELP_STRING([--with-xen-initrd=PATH],
    [DomU initrd image for Xen hypervisor (default is /boot/initrd-2.6-xenU)]
  )],
  [xen_initrd="$withval"],
  [xen_initrd="/boot/initrd-2.6-xenU"])
AC_SUBST(XEN_INITRD, $xen_initrd)

101
102
103
104
105
106
# --with-file-storage-dir=...
AC_ARG_WITH([file-storage-dir],
  [AS_HELP_STRING([--with-file-storage-dir=PATH],
    [directory to store files for file-based backend]
    [ (default is /srv/ganeti/file-storage)]
  )],
107
108
109
110
111
112
113
114
  [[file_storage_dir="$withval";
    if test "$withval" != no; then
      enable_file_storage=True
    else
      enable_file_storage=False
    fi
  ]],
  [[file_storage_dir="/srv/ganeti/file-storage"; enable_file_storage="True"]])
115
AC_SUBST(FILE_STORAGE_DIR, $file_storage_dir)
116
AC_SUBST(ENABLE_FILE_STORAGE, $enable_file_storage)
117

118
119
120
121
122
123
124
125
126
127
# --with-kvm-path=...
AC_ARG_WITH([kvm-path],
  [AS_HELP_STRING([--with-kvm-path=PATH],
    [absolute path to the kvm binary]
    [ (default is /usr/bin/kvm)]
  )],
  [kvm_path="$withval"],
  [kvm_path="/usr/bin/kvm"])
AC_SUBST(KVM_PATH, $kvm_path)

128
# --with-lvm-stripecount=...
129
130
131
AC_ARG_WITH([lvm-stripecount],
  [AS_HELP_STRING([--with-lvm-stripecount=NUM],
    [the number of stripes to use for LVM volumes]
Iustin Pop's avatar
Iustin Pop committed
132
    [ (default is 1)]
133
134
  )],
  [lvm_stripecount="$withval"],
Iustin Pop's avatar
Iustin Pop committed
135
  [lvm_stripecount="1"])
136
137
AC_SUBST(LVM_STRIPECOUNT, $lvm_stripecount)

138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# --with-user-prefix=...
AC_ARG_WITH([user-prefix],
  [AS_HELP_STRING([--with-user-prefix=PREFIX],
    [prefix for daemon users]
    [ (default is to run all daemons as root)]
  )],
  [user_masterd="root";
   user_rapi="${withval}rapi";
   user_confd="root";
   user_noded="root"],
  [user_masterd="root";
   user_rapi="root";
   user_confd="root";
   user_noded="root"])
AC_SUBST(MASTERD_USER, $user_masterd)
AC_SUBST(RAPI_USER, $user_rapi)
AC_SUBST(CONFD_USER, $user_confd)
AC_SUBST(NODED_USER, $user_noded)

# --with-group-prefix=...
AC_ARG_WITH([group-prefix],
  [AS_HELP_STRING([--with-group-prefix=PREFIX],
    [prefix for daemon POSIX groups]
    [ (default is to run all daemons under group root)]
  )],
  [group_rapi="root";
   group_admin="root";
   group_confd="root";
   group_masterd="root";
   group_daemons="${withval}daemons";],
  [group_rapi="root";
   group_admin="root";
   group_confd="root";
   group_masterd="root";
   group_daemons="root"])
AC_SUBST(RAPI_GROUP, $group_rapi)
AC_SUBST(ADMIN_GROUP, $group_admin)
AC_SUBST(CONFD_GROUP, $group_confd)
AC_SUBST(MASTERD_GROUP, $group_masterd)
AC_SUBST(DAEMONS_GROUP, $group_daemons)

# Print the config to the user
AC_MSG_NOTICE([Running ganeti-masterd as $group_masterd:$group_masterd])
AC_MSG_NOTICE([Running ganeti-rapi as $user_rapi:$group_rapi])
AC_MSG_NOTICE([Running ganeti-confd as $user_confd:$group_confd])
AC_MSG_NOTICE([Group for daemons is $group_daemons])
AC_MSG_NOTICE([Group for clients is $group_admin])

186
187
188
189
190
191
192
193
194
195
196
197
198
# --enable-drbd-barriers
AC_ARG_ENABLE([drbd-barriers],
  [AS_HELP_STRING([--enable-drbd-barriers],
    [enable the DRBD barrier functionality (>= 8.0.12) (default: enabled)])],
  [[if test "$enableval" != no; then
      DRBD_BARRIERS=True
    else
      DRBD_BARRIERS=False
    fi
  ]],
  [DRBD_BARRIERS=True])
AC_SUBST(DRBD_BARRIERS, $DRBD_BARRIERS)

199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
# --enable-syslog[=no/yes/only]
AC_ARG_ENABLE([syslog],
  [AS_HELP_STRING([--enable-syslog],
    [enable use of syslog (default: disabled), one of no/yes/only])],
  [[case "$enableval" in
      no)
        SYSLOG=no
        ;;
      yes)
        SYSLOG=yes
        ;;
      only)
        SYSLOG=only
        ;;
      *)
        SYSLOG=
        ;;
    esac
  ]],
  [SYSLOG=no])

if test -z "$SYSLOG"
then
  AC_MSG_ERROR([invalid value for syslog, choose one of no/yes/only])
fi
AC_SUBST(SYSLOG_USAGE, $SYSLOG)

226
# Check common programs
Iustin Pop's avatar
Iustin Pop committed
227
AC_PROG_INSTALL
Michael Hanselmann's avatar
Michael Hanselmann committed
228
AC_PROG_LN_S
Iustin Pop's avatar
Iustin Pop committed
229

230
231
232
233
234
# Check for docbook programs
AC_ARG_VAR(DOCBOOK2MAN, [docbook2man path])
AC_PATH_PROG(DOCBOOK2MAN, [docbook2man], [])
if test -z "$DOCBOOK2MAN"
then
Iustin Pop's avatar
Iustin Pop committed
235
  AC_MSG_WARN([docbook2man not found, man pages rebuild will not be possible])
236
237
238
239
240
241
fi

AC_ARG_VAR(DOCBOOK2HTML, [docbook2html path])
AC_PATH_PROG(DOCBOOK2HTML, [docbook2html], [])
if test -z "$DOCBOOK2HTML"
then
Iustin Pop's avatar
Iustin Pop committed
242
  AC_MSG_WARN([docbook2html not found, man pages rebuild will not be possible])
243
244
fi

245
246
247
248
# Check for python-sphinx
AC_ARG_VAR(SPHINX, [sphinx-build path])
AC_PATH_PROG(SPHINX, [sphinx-build], [])
if test -z "$SPHINX"
Michael Hanselmann's avatar
Michael Hanselmann committed
249
then
250
  AC_MSG_WARN([sphinx-build not found, documentation rebuild will not be possible])
Michael Hanselmann's avatar
Michael Hanselmann committed
251
252
fi

253
254
255
256
257
# Check for graphviz (dot)
AC_ARG_VAR(DOT, [dot path])
AC_PATH_PROG(DOT, [dot], [])
if test -z "$DOT"
then
Iustin Pop's avatar
Iustin Pop committed
258
  AC_MSG_WARN([dot (from the graphviz suite) not found, documentation rebuild not possible])
259
260
fi

261
262
263
264
265
266
267
268
# Check for pylint
AC_ARG_VAR(PYLINT, [pylint path])
AC_PATH_PROG(PYLINT, [pylint], [])
if test -z "$PYLINT"
then
  AC_MSG_WARN([pylint not found, checking code will not be possible])
fi

269
270
271
# Check for socat
AC_ARG_VAR(SOCAT, [socat path])
AC_PATH_PROG(SOCAT, [socat], [])
272
273
if test -z "$SOCAT"
then
274
  AC_MSG_ERROR([socat not found])
275
276
fi

277
278
279
280
281
282
283
284
285
286
287
288
289
SOCAT_USE_ESCAPE=
AC_ARG_ENABLE([socat-escape],
  [AS_HELP_STRING([--enable-socat-escape],
    [use escape functionality available in socat >= 1.7 (default: detect
     automatically)])],
  [[if test "$enableval" = yes; then
      SOCAT_USE_ESCAPE=True
    else
      SOCAT_USE_ESCAPE=False
    fi
  ]])

if test -z "$SOCAT_USE_ESCAPE"
290
then
291
292
293
294
295
  if $SOCAT -hh | grep -w -q escape; then
    SOCAT_USE_ESCAPE=True
  else
    SOCAT_USE_ESCAPE=False
  fi
296
297
fi

298
299
AC_SUBST(SOCAT_USE_ESCAPE)

300
301
302
303
304
305
306
307
308
309
310
if man --help | grep -q -e --warnings
then
  MAN_HAS_WARNINGS=1
else
  MAN_HAS_WARNINGS=
  AC_MSG_WARN([man doesn't support --warnings, man pages checks
               will not be possible])
fi

AC_SUBST(MAN_HAS_WARNINGS)

311
# Check for Python
Iustin Pop's avatar
Iustin Pop committed
312
313
AM_PATH_PYTHON(2.4)

314
315
316
AC_PYTHON_MODULE(OpenSSL, t)
AC_PYTHON_MODULE(simplejson, t)
AC_PYTHON_MODULE(pyparsing, t)
317
AC_PYTHON_MODULE(pyinotify, t)
318
AC_PYTHON_MODULE(pycurl, t)
319

320
321
322
323
324
325
326
# This is optional but then we've limited functionality
AC_PYTHON_MODULE(paramiko)
if test "$HAVE_PYMOD_PARAMIKO" = "no"; then
  AC_MSG_WARN([You do not have paramiko installed. While this is optional you
               have to setup SSH and noded on the joining nodes yourself.])
fi

327
AC_CONFIG_FILES([ Makefile ])
Iustin Pop's avatar
Iustin Pop committed
328

Iustin Pop's avatar
Iustin Pop committed
329
AC_OUTPUT