1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 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 186 187 188 189 190 191 192 193 194 195 196 197 198 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 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927
|
# Configure script for Ganeti
m4_define([gnt_version_major], [2])
m4_define([gnt_version_minor], [15])
m4_define([gnt_version_revision], [2])
m4_define([gnt_version_suffix], [])
m4_define([gnt_version_full],
m4_format([%d.%d.%d%s],
gnt_version_major, gnt_version_minor,
gnt_version_revision, gnt_version_suffix))
AC_PREREQ(2.59)
AC_INIT(ganeti, gnt_version_full, ganeti@googlegroups.com)
AC_CONFIG_AUX_DIR(autotools)
AC_CONFIG_SRCDIR(configure)
AM_INIT_AUTOMAKE([1.9 foreign tar-ustar -Wall -Wno-portability]
m4_esyscmd([case `automake --version | head -n 1` in
*1.11*);;
*) echo serial-tests;;
esac]))
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)
AC_SUBST([BINDIR], $bindir)
AC_SUBST([SBINDIR], $sbindir)
AC_SUBST([MANDIR], $mandir)
# --enable-versionfull
AC_ARG_ENABLE([versionfull],
[AS_HELP_STRING([--enable-versionfull],
m4_normalize([use the full version string rather
than major.minor for version directories]))],
[[if test "$enableval" != no; then
USE_VERSION_FULL=yes
else
USER_VERSION_FULL=no
fi
]],
[USE_VERSION_FULL=no
])
AC_SUBST(USE_VERSION_FULL, $USE_VERSION_FULL)
AM_CONDITIONAL([USE_VERSION_FULL], [test "$USE_VERSION_FULL" = yes])
# --enable-symlinks
AC_ARG_ENABLE([symlinks],
[AS_HELP_STRING([--enable-symlinks],
m4_normalize([also install version-dependent symlinks under
$sysconfdir (default: disabled)]))],
[[if test "$enableval" != yes; then
INSTALL_SYMLINKS=no
else
INSTALL_SYMLINKS=yes
fi
]],
[INSTALL_SYMLINKS=no
])
AC_SUBST(INSTALL_SYMLINKS, $INSTALL_SYMLINKS)
AM_CONDITIONAL([INSTALL_SYMLINKS], [test "$INSTALL_SYMLINKS" = yes])
# --enable-haskell-profiling
AC_ARG_ENABLE([haskell-profiling],
[AS_HELP_STRING([--enable-haskell-profiling],
m4_normalize([enable profiling for Haskell binaries
(default: disabled)]))],
[[if test "$enableval" != yes; then
HPROFILE=no
else
HPROFILE=yes
fi
]],
[HPROFILE=no
])
AC_SUBST(HPROFILE, $HPROFILE)
AM_CONDITIONAL([HPROFILE], [test "$HPROFILE" = yes])
# --enable-haskell-coverage
AC_ARG_ENABLE([haskell-coverage],
[AS_HELP_STRING([--enable-haskell-coverage],
m4_normalize([enable coverage for Haskell binaries
(default: disabled)]))],
[[if test "$enableval" != yes; then
HCOVERAGE=no
else
HCOVERAGE=yes
fi
]],
[HCOVERAGE=no
])
AC_SUBST(HCOVERAGE, $HCOVERAGE)
AM_CONDITIONAL([HCOVERAGE], [test "$HCOVERAGE" = yes])
# --enable-haskell-tests
AC_ARG_ENABLE([haskell-tests],
[AS_HELP_STRING([--enable-haskell-tests],
m4_normalize([enable additinal Haskell development test code
(default: disabled)]))],
[[if test "$enableval" != yes; then
HTEST=no
else
HTEST=yes
fi
]],
[HTEST=no
])
AC_SUBST(HTEST, $HTEST)
AM_CONDITIONAL([HTEST], [test "$HTEST" = yes])
# --enable-developer-mode
AC_ARG_ENABLE([developer-mode],
[AS_HELP_STRING([--enable-developer-mode],
m4_normalize([do a developper build with additional
checks and fatal warnings; this is implied by enabling
the haskell tests]))],
[[if test "$enableval" != no; then
DEVELOPER_MODE=yes
else
DEVELOPER_MODE=no
fi
]],
[DEVELOPER_MODE=no
])
AC_SUBST(DEVELOPER_MODE, $DEVELOPER_MODE)
AM_CONDITIONAL([DEVELOPER_MODE],
[test "$DEVELOPER_MODE" = yes -o "$HTEST" = yes])
# --with-haskell-flags=
AC_ARG_WITH([haskell-flags],
[AS_HELP_STRING([--with-haskell-flags=FLAGS],
[Extra flags to pass to GHC]
)],
[hextra_configure="$withval"],
[hextra_configure=""])
AC_SUBST(HEXTRA_CONFIGURE, $hextra_configure)
# --with-ssh-initscript=...
AC_ARG_WITH([ssh-initscript],
[AS_HELP_STRING([--with-ssh-initscript=SCRIPT],
[SSH init script to use (default is /etc/init.d/ssh)]
)],
[ssh_initd_script="$withval"],
[ssh_initd_script="/etc/init.d/ssh"])
AC_SUBST(SSH_INITD_SCRIPT, $ssh_initd_script)
# --with-export-dir=...
AC_ARG_WITH([export-dir],
[AS_HELP_STRING([--with-export-dir=DIR],
[directory to use by default for instance image]
[ exports (default is /srv/ganeti/export)]
)],
[export_dir="$withval"],
[export_dir="/srv/ganeti/export"])
AC_SUBST(EXPORT_DIR, $export_dir)
# --with-backup-dir=...
AC_ARG_WITH([backup-dir],
[AS_HELP_STRING([--with-backup-dir=DIR],
[directory to use for configuration backups]
[ on Ganeti upgrades (default is $(localstatedir)/lib)]
)],
[backup_dir="$withval"
USE_BACKUP_DIR=yes
],
[backup_dir=
USE_BACKUP_DIR=no
])
AC_SUBST(BACKUP_DIR, $backup_dir)
AM_CONDITIONAL([USE_BACKUP_DIR], [test "$USE_BACKUP_DIR" = yes])
# --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)
# --with-xen-config-dir=...
AC_ARG_WITH([xen-config-dir],
[AS_HELP_STRING([--with-xen-config-dir=DIR],
m4_normalize([Xen configuration directory
(default: /etc/xen)]))],
[xen_config_dir="$withval"],
[xen_config_dir=/etc/xen])
AC_SUBST(XEN_CONFIG_DIR, $xen_config_dir)
# --with-os-search-path=...
AC_ARG_WITH([os-search-path],
[AS_HELP_STRING([--with-os-search-path=LIST],
[comma separated list of directories to]
[ search for OS images (default is /srv/ganeti/os)]
)],
[os_search_path="$withval"],
[os_search_path="/srv/ganeti/os"])
AC_SUBST(OS_SEARCH_PATH, $os_search_path)
# --with-extstorage-search-path=...
AC_ARG_WITH([extstorage-search-path],
[AS_HELP_STRING([--with-extstorage-search-path=LIST],
[comma separated list of directories to]
[ search for External Storage Providers]
[ (default is /srv/ganeti/extstorage)]
)],
[es_search_path="$withval"],
[es_search_path="/srv/ganeti/extstorage"])
AC_SUBST(ES_SEARCH_PATH, $es_search_path)
# --with-iallocator-search-path=...
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="$withval"],
[iallocator_search_path="$libdir/$PACKAGE_NAME/iallocators"])
AC_SUBST(IALLOCATOR_SEARCH_PATH, $iallocator_search_path)
# --with-default-vg=...
AC_ARG_WITH([default-vg],
[AS_HELP_STRING([--with-default-vg=VOLUMEGROUP],
[default volume group (default is xenvg)]
)],
[default_vg="$withval"],
[default_vg="xenvg"])
AC_SUBST(DEFAULT_VG, $default_vg)
# --with-default-bridge=...
AC_ARG_WITH([default-bridge],
[AS_HELP_STRING([--with-default-bridge=BRIDGE],
[default bridge (default is xen-br0)]
)],
[default_bridge="$withval"],
[default_bridge="xen-br0"])
AC_SUBST(DEFAULT_BRIDGE, $default_bridge)
# --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)
# --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-3-xenU)]
)],
[xen_kernel="$withval"],
[xen_kernel="/boot/vmlinuz-3-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-3-xenU)]
)],
[xen_initrd="$withval"],
[xen_initrd="/boot/initrd-3-xenU"])
AC_SUBST(XEN_INITRD, $xen_initrd)
# --with-kvm-kernel=...
AC_ARG_WITH([kvm-kernel],
[AS_HELP_STRING([--with-kvm-kernel=PATH],
[Guest kernel image for KVM hypervisor (default is /boot/vmlinuz-3-kvmU)]
)],
[kvm_kernel="$withval"],
[kvm_kernel="/boot/vmlinuz-3-kvmU"])
AC_SUBST(KVM_KERNEL, $kvm_kernel)
# --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)
# --with-lvm-stripecount=...
AC_ARG_WITH([lvm-stripecount],
[AS_HELP_STRING([--with-lvm-stripecount=NUM],
[the default number of stripes to use for LVM volumes]
[ (default is 1)]
)],
[lvm_stripecount="$withval"],
[lvm_stripecount=1])
AC_SUBST(LVM_STRIPECOUNT, $lvm_stripecount)
# --with-ssh-login-user=...
AC_ARG_WITH([ssh-login-user],
[AS_HELP_STRING([--with-ssh-login-user=USERNAME],
[user to use for SSH logins within the cluster (default is root)]
)],
[ssh_login_user="$withval"],
[ssh_login_user=root])
AC_SUBST(SSH_LOGIN_USER, $ssh_login_user)
# --with-ssh-console-user=...
AC_ARG_WITH([ssh-console-user],
[AS_HELP_STRING([--with-ssh-console-user=USERNAME],
[user to use for SSH logins to access instance consoles (default is root)]
)],
[ssh_console_user="$withval"],
[ssh_console_user=root])
AC_SUBST(SSH_CONSOLE_USER, $ssh_console_user)
# --with-default-user=...
AC_ARG_WITH([default-user],
[AS_HELP_STRING([--with-default-user=USERNAME],
[default user for daemons]
[ (default is to run all daemons as root)]
)],
[user_default="$withval"],
[user_default=root])
# --with-default-group=...
AC_ARG_WITH([default-group],
[AS_HELP_STRING([--with-default-group=GROUPNAME],
[default group for daemons]
[ (default is to run all daemons under group root)]
)],
[group_default="$withval"],
[group_default=root])
# --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; use --with-default-user]
[ to change the default)]
)],
[user_masterd="${withval}masterd";
user_metad="$user_default";
user_rapi="${withval}rapi";
user_confd="${withval}confd";
user_wconfd="${withval}masterd";
user_kvmd="$user_default";
user_luxid="${withval}masterd";
user_noded="$user_default";
user_mond="$user_default"],
[user_masterd="$user_default";
user_metad="$user_default";
user_rapi="$user_default";
user_confd="$user_default";
user_wconfd="$user_default";
user_kvmd="$user_default";
user_luxid="$user_default";
user_noded="$user_default";
user_mond="$user_default"])
AC_SUBST(MASTERD_USER, $user_masterd)
AC_SUBST(METAD_USER, $user_metad)
AC_SUBST(RAPI_USER, $user_rapi)
AC_SUBST(CONFD_USER, $user_confd)
AC_SUBST(WCONFD_USER, $user_wconfd)
AC_SUBST(KVMD_USER, $user_kvmd)
AC_SUBST(LUXID_USER, $user_luxid)
AC_SUBST(NODED_USER, $user_noded)
AC_SUBST(MOND_USER, $user_mond)
# --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; use]
[ --with-default-group to change the default)]
)],
[group_rapi="${withval}rapi";
group_admin="${withval}admin";
group_confd="${withval}confd";
group_wconfd="${withval}masterd";
group_kvmd="$group_default";
group_luxid="${withval}luxid";
group_masterd="${withval}masterd";
group_metad="$group_default";
group_noded="$group_default";
group_daemons="${withval}daemons";
group_mond="$group_default"],
[group_rapi="$group_default";
group_admin="$group_default";
group_confd="$group_default";
group_wconfd="$group_default";
group_kvmd="$group_default";
group_luxid="$group_default";
group_masterd="$group_default";
group_metad="$group_default";
group_noded="$group_default";
group_daemons="$group_default";
group_mond="$group_default"])
AC_SUBST(RAPI_GROUP, $group_rapi)
AC_SUBST(ADMIN_GROUP, $group_admin)
AC_SUBST(CONFD_GROUP, $group_confd)
AC_SUBST(WCONFD_GROUP, $group_wconfd)
AC_SUBST(KVMD_GROUP, $group_kvmd)
AC_SUBST(LUXID_GROUP, $group_luxid)
AC_SUBST(MASTERD_GROUP, $group_masterd)
AC_SUBST(METAD_GROUP, $group_metad)
AC_SUBST(NODED_GROUP, $group_noded)
AC_SUBST(DAEMONS_GROUP, $group_daemons)
AC_SUBST(MOND_GROUP, $group_mond)
# Print the config to the user
AC_MSG_NOTICE([Running ganeti-masterd as $group_masterd:$group_masterd])
AC_MSG_NOTICE([Running ganeti-metad as $group_metad:$group_metad])
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([Running ganeti-wconfd as $user_wconfd:$group_wconfd])
AC_MSG_NOTICE([Running ganeti-luxid as $user_luxid:$group_luxid])
AC_MSG_NOTICE([Group for daemons is $group_daemons])
AC_MSG_NOTICE([Group for clients is $group_admin])
# --enable-drbd-barriers
AC_ARG_ENABLE([drbd-barriers],
[AS_HELP_STRING([--enable-drbd-barriers],
m4_normalize([enable the DRBD barriers functionality by
default (>= 8.0.12) (default: enabled)]))],
[[if test "$enableval" != no; then
DRBD_BARRIERS=n
DRBD_NO_META_FLUSH=False
else
DRBD_BARRIERS=bf
DRBD_NO_META_FLUSH=True
fi
]],
[DRBD_BARRIERS=n
DRBD_NO_META_FLUSH=False
])
AC_SUBST(DRBD_BARRIERS, $DRBD_BARRIERS)
AC_SUBST(DRBD_NO_META_FLUSH, $DRBD_NO_META_FLUSH)
# --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)
# --enable-restricted-commands[=no/yes]
AC_ARG_ENABLE([restricted-commands],
[AS_HELP_STRING([--enable-restricted-commands],
m4_normalize([enable restricted commands in the node daemon
(default: disabled)]))],
[[if test "$enableval" = no; then
enable_restricted_commands=False
else
enable_restricted_commands=True
fi
]],
[enable_restricted_commands=False])
AC_SUBST(ENABLE_RESTRICTED_COMMANDS, $enable_restricted_commands)
# --with-disk-separator=...
AC_ARG_WITH([disk-separator],
[AS_HELP_STRING([--with-disk-separator=STRING],
[Disk index separator, useful if the default of ':' is handled]
[ specially by the hypervisor]
)],
[disk_separator="$withval"],
[disk_separator=":"])
AC_SUBST(DISK_SEPARATOR, $disk_separator)
# Check common programs
AC_PROG_INSTALL
AC_PROG_LN_S
# check if ln is the GNU version of ln (and hence supports -T)
if ln --version 2> /dev/null | head -1 | grep -q GNU
then
AC_SUBST(HAS_GNU_LN, True)
else
AC_SUBST(HAS_GNU_LN, False)
fi
# Check for the ip command
AC_ARG_VAR(IP_PATH, [ip path])
AC_PATH_PROG(IP_PATH, [ip], [])
if test -z "$IP_PATH"
then
AC_MSG_ERROR([ip command not found])
fi
# Check for pandoc
AC_ARG_VAR(PANDOC, [pandoc path])
AC_PATH_PROG(PANDOC, [pandoc], [])
if test -z "$PANDOC"
then
AC_MSG_WARN([pandoc not found, man pages rebuild will not be possible])
fi
# Check for python-sphinx
AC_ARG_VAR(SPHINX, [sphinx-build path])
AC_PATH_PROG(SPHINX, [sphinx-build], [])
if test -z "$SPHINX"
then
AC_MSG_WARN(m4_normalize([sphinx-build not found, documentation rebuild will
not be possible]))
else
# Sphinx exits with code 1 when it prints its usage
sphinxver=`{ $SPHINX --version 2>&1 || :; } | head -n 3`
if ! echo "$sphinxver" | grep -q -i -w -e '^Sphinx' -e '^Usage:'; then
AC_MSG_ERROR([Unable to determine Sphinx version])
# Note: Character classes ([...]) need to be double quoted due to autoconf
# using m4
elif ! echo "$sphinxver" | grep -q -E \
'^(Sphinx)?([[[:space:]]]+|\(?sphinx-build[[1-9]]?\)?|v)*[[1-9]]\>'; then
AC_MSG_ERROR([Sphinx 1.0 or higher is required])
fi
fi
AM_CONDITIONAL([HAS_SPHINX], [test -n "$SPHINX"])
AM_CONDITIONAL([HAS_SPHINX_PRE13],
[test -n "$SPHINX" && echo "$sphinxver" | grep -q -E \
'^Sphinx([[[:space:]]]+|\(sphinx-build[[1-9]]?\)|v)*[[1-9]]\.[[0-2]]\.'])
AC_ARG_ENABLE([manpages-in-doc],
[AS_HELP_STRING([--enable-manpages-in-doc],
m4_normalize([include man pages in HTML documentation
(requires sphinx; default disabled)]))],
[case "$enableval" in
yes) manpages_in_doc=yes ;;
no) manpages_in_doc= ;;
*)
AC_MSG_ERROR([Bad value $enableval for --enable-manpages-in-doc])
;;
esac
],
[manpages_in_doc=])
AM_CONDITIONAL([MANPAGES_IN_DOC], [test -n "$manpages_in_doc"])
AC_SUBST(MANPAGES_IN_DOC, $manpages_in_doc)
if test -z "$SPHINX" -a -n "$manpages_in_doc"; then
AC_MSG_ERROR([Including man pages in HTML documentation requires sphinx])
fi
# Check for graphviz (dot)
AC_ARG_VAR(DOT, [dot path])
AC_PATH_PROG(DOT, [dot], [])
if test -z "$DOT"
then
AC_MSG_WARN(m4_normalize([dot (from the graphviz suite) not found,
documentation rebuild not possible]))
fi
# 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
# Check for pep8
AC_ARG_VAR(PEP8, [pep8 path])
AC_PATH_PROG(PEP8, [pep8], [])
if test -z "$PEP8"
then
AC_MSG_WARN([pep8 not found, checking code will not be complete])
fi
AM_CONDITIONAL([HAS_PEP8], [test -n "$PEP8"])
# Check for python-coverage
AC_ARG_VAR(PYCOVERAGE, [python-coverage path])
AC_PATH_PROGS(PYCOVERAGE, [python-coverage coverage], [])
if test -z "$PYCOVERAGE"
then
AC_MSG_WARN(m4_normalize([python-coverage or coverage not found, evaluating
Python test coverage will not be possible]))
fi
# Check for socat
AC_ARG_VAR(SOCAT, [socat path])
AC_PATH_PROG(SOCAT, [socat], [])
if test -z "$SOCAT"
then
AC_MSG_ERROR([socat not found])
fi
# Check for qemu-img
AC_ARG_VAR(QEMUIMG_PATH, [qemu-img path])
AC_PATH_PROG(QEMUIMG_PATH, [qemu-img], [])
if test -z "$QEMUIMG_PATH"
then
AC_MSG_WARN([qemu-img not found, using ovfconverter will not be possible])
fi
ENABLE_MOND=
AC_ARG_ENABLE([monitoring],
[AS_HELP_STRING([--enable-monitoring],
[enable the ganeti monitoring daemon (default: check)])],
[],
[enable_monitoring=check])
# --enable-metadata
ENABLE_METADATA=
AC_ARG_ENABLE([metadata],
[AS_HELP_STRING([--enable-metadata],
[enable the ganeti metadata daemon (default: check)])],
[],
[enable_metadata=check])
# Check for ghc
AC_ARG_VAR(GHC, [ghc path])
AC_PATH_PROG(GHC, [ghc], [])
if test -z "$GHC"; then
AC_MSG_FAILURE([ghc not found, compilation will not possible])
fi
# Note: Character classes ([...]) need to be double quoted due to autoconf
# using m4
AM_CONDITIONAL([GHC_LE_76], [$GHC --numeric-version | grep -q '^7\.[[0-6]]\.'])
AC_MSG_CHECKING([checking for extra GHC flags])
GHC_BYVERSION_FLAGS=
# check for GHC supported flags that vary accross versions
for flag in -fwarn-incomplete-uni-patterns; do
if $GHC -e '0' $flag >/dev/null 2>/dev/null; then
GHC_BYVERSION_FLAGS="$GHC_BYVERSION_FLAGS $flag"
fi
done
AC_MSG_RESULT($GHC_BYVERSION_FLAGS)
AC_SUBST(GHC_BYVERSION_FLAGS)
# Check for ghc-pkg
AC_ARG_VAR(GHC_PKG, [ghc-pkg path])
AC_PATH_PROG(GHC_PKG, [ghc-pkg], [])
if test -z "$GHC_PKG"; then
AC_MSG_FAILURE([ghc-pkg not found, compilation will not be possible])
fi
# Check for cabal
AC_ARG_VAR(CABAL, [cabal path])
AC_PATH_PROG(CABAL, [cabal], [])
if test -z "$CABAL"; then
AC_MSG_FAILURE([cabal not found, compilation will not be possible])
fi
# check for standard modules
AC_GHC_PKG_REQUIRE(Cabal)
AC_GHC_PKG_REQUIRE(curl)
AC_GHC_PKG_REQUIRE(json)
AC_GHC_PKG_REQUIRE(network)
AC_GHC_PKG_REQUIRE(mtl)
AC_GHC_PKG_REQUIRE(bytestring)
AC_GHC_PKG_REQUIRE(base64-bytestring-1.*, t)
AC_GHC_PKG_REQUIRE(utf8-string)
AC_GHC_PKG_REQUIRE(zlib)
AC_GHC_PKG_REQUIRE(hslogger)
AC_GHC_PKG_REQUIRE(process)
AC_GHC_PKG_REQUIRE(attoparsec)
AC_GHC_PKG_REQUIRE(vector)
AC_GHC_PKG_REQUIRE(text)
AC_GHC_PKG_REQUIRE(hinotify)
AC_GHC_PKG_REQUIRE(Crypto)
AC_GHC_PKG_REQUIRE(lifted-base)
AC_GHC_PKG_REQUIRE(lens)
AC_GHC_PKG_REQUIRE(regex-pcre)
#extra modules for monitoring daemon functionality; also needed for tests
MONITORING_PKG=
AC_GHC_PKG_CHECK([snap-server], [],
[NS_NODEV=1; MONITORING_PKG="$MONITORING_PKG snap-server"])
AC_GHC_PKG_CHECK([PSQueue], [],
[NS_NODEV=1; MONITORING_PKG="$MONITORING_PKG PSQueue"])
has_monitoring=False
if test "$enable_monitoring" != no; then
MONITORING_DEP=
has_monitoring_pkg=False
if test -z "$MONITORING_PKG"; then
has_monitoring_pkg=True
elif test "$enable_monitoring" = check; then
AC_MSG_WARN(m4_normalize([The required extra libraries for the monitoring
daemon were not found ($MONITORING_PKG),
monitoring disabled]))
else
AC_MSG_FAILURE(m4_normalize([The monitoring functionality was requested, but
required libraries were not found:
$MONITORING_PKG]))
fi
has_monitoring_dep=False
if test -z "$MONITORING_DEP"; then
has_monitoring_dep=True
elif test "$enable_monitoring" = check; then
AC_MSG_WARN(m4_normalize([The optional Ganeti components required for the
monitoring agent were not enabled
($MONITORING_DEP), monitoring disabled]))
else
AC_MSG_FAILURE(m4_normalize([The monitoring functionality was requested, but
required optional Ganeti components were not
found: $MONITORING_DEP]))
fi
fi
if test "$has_monitoring_pkg" = True -a "$has_monitoring_dep" = True; then
has_monitoring=True
AC_MSG_NOTICE([Enabling the monitoring agent usage])
fi
AC_SUBST(ENABLE_MOND, $has_monitoring)
AM_CONDITIONAL([ENABLE_MOND], [test "$has_monitoring" = True])
# extra modules for metad functionality; also needed for tests
METAD_PKG=
AC_GHC_PKG_CHECK([snap-server], [],
[NS_NODEV=1; METAD_PKG="$METAD_PKG snap-server"])
has_metad=False
if test "$enable_metadata" != no; then
if test -z "$METAD_PKG"; then
has_metad=True
elif test "$enable_metadata" = check; then
AC_MSG_WARN(m4_normalize([The required extra libraries for metad were
not found ($METAD_PKG), metad disabled]))
else
AC_MSG_FAILURE(m4_normalize([The metadata functionality was requested, but
required libraries were not found:
$METAD_PKG]))
fi
fi
if test "$has_metad" = True; then
AC_MSG_NOTICE([Enabling metadata usage])
fi
AC_SUBST(ENABLE_METADATA, $has_metad)
AM_CONDITIONAL([ENABLE_METADATA], [test x$has_metad = xTrue])
# development modules
AC_GHC_PKG_CHECK([QuickCheck-2.*], [], [HS_NODEV=1], t)
AC_GHC_PKG_CHECK([test-framework-0.6*], [], [
AC_GHC_PKG_CHECK([test-framework-0.7*], [], [
AC_GHC_PKG_CHECK([test-framework-0.8*], [], [HS_NODEV=1], t)
], t)
], t)
AC_GHC_PKG_CHECK([test-framework-hunit], [], [HS_NODEV=1])
AC_GHC_PKG_CHECK([test-framework-quickcheck2], [], [HS_NODEV=1])
AC_GHC_PKG_CHECK([temporary], [], [HS_NODEV=1])
if test -n "$HS_NODEV"; then
AC_MSG_WARN(m4_normalize([Required development modules were not found,
you won't be able to run Haskell unittests]))
else
AC_MSG_NOTICE([Haskell development modules found, unittests enabled])
fi
AC_SUBST(HS_NODEV)
AM_CONDITIONAL([HS_UNIT], [test -n $HS_NODEV])
# Check for HsColour
HS_APIDOC=no
AC_ARG_VAR(HSCOLOUR, [HsColour path])
AC_PATH_PROG(HSCOLOUR, [HsColour], [])
if test -z "$HSCOLOUR"; then
AC_MSG_WARN(m4_normalize([HsColour not found, htools API documentation will
not be generated]))
fi
# Check for haddock
AC_ARG_VAR(HADDOCK, [haddock path])
AC_PATH_PROG(HADDOCK, [haddock], [])
if test -z "$HADDOCK"; then
AC_MSG_WARN(m4_normalize([haddock not found, htools API documentation will
not be generated]))
fi
if test -n "$HADDOCK" && test -n "$HSCOLOUR"; then
HS_APIDOC=yes
fi
AC_SUBST(HS_APIDOC)
# Check for hlint
AC_ARG_VAR(HLINT, [hlint path])
AC_PATH_PROG(HLINT, [hlint], [])
if test -z "$HLINT"; then
AC_MSG_WARN([hlint not found, checking code will not be possible])
fi
AM_CONDITIONAL([WANT_HSTESTS], [test "x$HS_NODEV" = x])
AM_CONDITIONAL([WANT_HSAPIDOC], [test "$HS_APIDOC" = yes])
AM_CONDITIONAL([HAS_HLINT], [test "$HLINT"])
# Check for fakeroot
AC_ARG_VAR(FAKEROOT_PATH, [fakeroot path])
AC_PATH_PROG(FAKEROOT_PATH, [fakeroot], [])
if test -z "$FAKEROOT_PATH"; then
AC_MSG_WARN(m4_normalize([fakeroot not found, tests that must run as root
will not be executed]))
fi
AM_CONDITIONAL([HAS_FAKEROOT], [test "x$FAKEROOT_PATH" != x])
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"
then
if $SOCAT -hh | grep -w -q escape; then
SOCAT_USE_ESCAPE=True
else
SOCAT_USE_ESCAPE=False
fi
fi
AC_SUBST(SOCAT_USE_ESCAPE)
SOCAT_USE_COMPRESS=
AC_ARG_ENABLE([socat-compress],
[AS_HELP_STRING([--enable-socat-compress],
[use OpenSSL compression option available in patched socat builds
(see INSTALL for details; default: detect automatically)])],
[[if test "$enableval" = yes; then
SOCAT_USE_COMPRESS=True
else
SOCAT_USE_COMPRESS=False
fi
]])
if test -z "$SOCAT_USE_COMPRESS"
then
if $SOCAT -hhh | grep -w -q openssl-compress; then
SOCAT_USE_COMPRESS=True
else
SOCAT_USE_COMPRESS=False
fi
fi
AC_SUBST(SOCAT_USE_COMPRESS)
if man --help | grep -q -e --warnings
then
MAN_HAS_WARNINGS=1
else
MAN_HAS_WARNINGS=
AC_MSG_WARN(m4_normalize([man does not support --warnings, man page checks
will not be possible]))
fi
AC_SUBST(MAN_HAS_WARNINGS)
# Check for Python
# We need a Python-2 interpreter, version at least 2.6. As AM_PATH_PYTHON
# only supports a "minimal version" constraint, we check <3.0 afterwards.
# We tune _AM_PYTHON_INTERPRETER_LIST to first check interpreters that are
# likely interpreters for Python 2.
m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
[python2 python2.7 python2.6 python])
AM_PATH_PYTHON(2.6)
if $PYTHON -c "import sys
if (sys.hexversion >> 24) < 3:
sys.exit(1)
else:
sys.exit(0)
"; then
AC_MSG_FAILURE([Can only work with an interpreter for Python 2])
fi
AC_PYTHON_MODULE(OpenSSL, t)
AC_PYTHON_MODULE(simplejson, t)
AC_PYTHON_MODULE(pyparsing, t)
AC_PYTHON_MODULE(pyinotify, t)
AC_PYTHON_MODULE(pycurl, t)
AC_PYTHON_MODULE(bitarray, t)
AC_PYTHON_MODULE(ipaddr, t)
AC_PYTHON_MODULE(mock)
AC_PYTHON_MODULE(psutil)
AC_PYTHON_MODULE(paramiko)
# Development-only Python modules
PY_NODEV=
AC_PYTHON_MODULE(yaml)
if test $HAVE_PYMOD_YAML == "no"; then
PY_NODEV="$PY_NODEV yaml"
fi
if test -n "$PY_NODEV"; then
AC_MSG_WARN(m4_normalize([Required development modules ($PY_NODEV) were not
found, you won't be able to run Python unittests]))
else
AC_MSG_NOTICE([Python development modules found, unittests enabled])
fi
AC_SUBST(PY_NODEV)
AM_CONDITIONAL([PY_UNIT], [test -n $PY_NODEV])
include_makefile_ghc='
ifneq ($(MAKECMDGOALS),ganeti)
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(MAKECMDGOALS),distclean)
include Makefile.ghc
endif
endif
endif
'
AC_SUBST([include_makefile_ghc])
AM_SUBST_NOTMAKE([include_makefile_ghc])
AC_CONFIG_FILES([ Makefile ])
AC_OUTPUT
|