X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=configure.ac;h=ff14fbb5908600189a9d306603c4f887dd253685;hp=ddc30a36721aa6b154766c887f0dfbd98f46f08d;hb=7d746ba6915e3c0d8fbe41053da64f4e9fa11cd4;hpb=bbf56d28b28cbde3bfb09ca8499a7b619d9b66c3 diff --git a/configure.ac b/configure.ac index ddc30a3..ff14fbb 100644 --- a/configure.ac +++ b/configure.ac @@ -17,12 +17,12 @@ # major/minor/release must be numbers m4_define([libguestfs_major], [1]) -m4_define([libguestfs_minor], [3]) -m4_define([libguestfs_release], [3]) +m4_define([libguestfs_minor], [5]) +m4_define([libguestfs_release], [21]) # extra can be any string m4_define([libguestfs_extra], []) -AC_INIT([libguestfs],libguestfs_major.libguestfs_minor.libguestfs_release[]libguestfs_extra) +AC_INIT([libguestfs],libguestfs_major.libguestfs_minor.libguestfs_release) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([foreign]) @@ -37,6 +37,33 @@ AC_DEFINE([PACKAGE_VERSION_MINOR],[libguestfs_minor],[Minor version number]) AC_DEFINE([PACKAGE_VERSION_RELEASE],[libguestfs_release],[Release number]) AC_DEFINE([PACKAGE_VERSION_EXTRA],["libguestfs_extra"],[Extra version string]) +dnl Stable or unstable version? +AC_MSG_CHECKING([if this is a stable or unstable branch of libguestfs]) +AS_IF([test "$((libguestfs_minor % 2))" -eq 0 ],[ + AC_MSG_RESULT([stable]) + ],[ + AC_MSG_RESULT([unstable]) + AC_MSG_NOTICE([ +*** +This is a development version of libguestfs. Some APIs may be unstable +until they appear in a stable release of libguestfs (at which point +the C API and ABI is guaranteed to remain stable forever). For +more information about stable and development branches of libguestfs +please see the section "LIBGUESTFS VERSION NUMBERS" in guestfs(3). +***]) + ]) + +dnl Die if the user tries to configure as root, see: +dnl https://www.redhat.com/archives/libguestfs/2010-April/msg00098.html +AC_MSG_CHECKING([if you are trying to configure as root]) +AS_IF([test "`id -u`" = 0 ],[ + AC_MSG_RESULT([yes]) + AC_MSG_FAILURE([Don't run './configure' or 'make' as root.]) + ],[ + AC_MSG_RESULT([no]) + ]) + +dnl Early gnulib initialization. gl_EARLY gl_INIT @@ -83,10 +110,11 @@ if test "$gl_gcc_warnings" = yes; then nw="$nw -Wmissing-format-attribute" # daemon.h's asprintf_nowarn nw="$nw -Winline" # daemon.h's asprintf_nowarn nw="$nw -Wshadow" # numerous, plus we're not unanimous - # ?? -Wstrict-overflow nw="$nw -Wunsafe-loop-optimizations" # just a warning that an optimization # was not possible, safe to ignore nw="$nw -Wpacked" # Allow attribute((packed)) on structs + nw="$nw -Wlong-long" # Allow long long since it's required + # by Python, Ruby and xstrtoll. gl_MANYWARN_ALL_GCC([ws]) gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw]) @@ -157,6 +185,15 @@ AC_ARG_ENABLE([appliance], AM_CONDITIONAL([ENABLE_APPLIANCE],[test "x$enable_appliance" = "xyes"]) AC_MSG_RESULT([$enable_appliance]) +dnl Check for PCRE. +AC_CHECK_LIB([pcre],[pcre_compile], + [AC_SUBST([LIBPCRE], ["-lpcre"])], + [AC_MSG_FAILURE( + [Perl Compatible Regular Expressions library (PCRE) is required])]) +AC_CHECK_HEADER([pcre.h],[], + [AC_MSG_FAILURE( + [Perl Compatible Regular Expressions library (PCRE) header file pcre.h is required])]) + dnl Check for rpcgen and XDR library. rpcgen is optional. AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no]) AM_CONDITIONAL([HAVE_RPCGEN],[test "x$RPCGEN" != "xno"]) @@ -164,6 +201,11 @@ AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[ AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl]) ]) +dnl Check for cpio which isn't in the default Pardus install amazingly. +AC_CHECK_PROG([CPIO],[cpio],[cpio],[no]) +test "x$CPIO" = "xno" && + AC_MSG_ERROR([cpio must be installed]) + dnl Check for pod2man and pod2text. AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no]) test "x$POD2MAN" = "xno" && @@ -194,50 +236,24 @@ AC_PATH_PROGS([QEMU],[$with_qemu],[no], test "x$QEMU" = "xno" && AC_MSG_ERROR([qemu must be installed]) AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.]) -dnl Check that the chosen qemu has vmchannel support or we can -dnl fallback to null vmchannel (still using SLIRP). See the -dnl discussion in the README file. +dnl Check that the chosen qemu has virtio-serial support. if test "x$vmchannel_test" != "xno"; then - AC_MSG_CHECKING([for guestfwd support in $QEMU]) - if $QEMU -nographic --help | grep -sq guestfwd; then + AC_MSG_CHECKING([for virtio-serial support in $QEMU]) + if $QEMU -nographic -device \? 2>&1 | grep -sq virtio-serial; then AC_MSG_RESULT([yes]) vmchannel_guestfwd=guestfwd else AC_MSG_RESULT([no]) - # Note that this test must be conditional on the previous - # test failing. This is because recent qemu will throw - # up an SDL window and hang if we try to run this test. - AC_MSG_CHECKING([for "-net channel" (old guestfwd) support in $QEMU]) - vmchannelout=`$QEMU -nographic -net channel /dev/zero 2>&1 ||:` - echo "vmchannel test command output: $vmchannelout" >&AS_MESSAGE_LOG_FD - if echo "$vmchannelout" | grep -sq "vmchannel wrong port number" ; then - AC_MSG_RESULT([yes]) - vmchannel_guestfwd=net_channel - else - AC_MSG_RESULT([no]) - vmchannel_guestfwd=no - fi - fi - - AC_MSG_CHECKING([for "-net user" (user mode network) support in $QEMU]) - if $QEMU -nographic --help | grep -sq -- "-net user"; then - AC_MSG_RESULT([yes]) - vmchannel_net_user=yes - else - AC_MSG_RESULT([no]) - vmchannel_net_user=no - fi - - if test "x$vmchannel_net_user" = "xno" -a "x$vmchannel_guestfwd" = "xno"; then AC_MSG_FAILURE( -[I did not find user mode network or vmchannel support in +[I did not find virtio-serial support in $QEMU. -Either user mode networking or vmchannel support is vital for -libguestfs to operate. +virtio-serial support in qemu or KVM is essential for libguestfs +to operate. -Please read the relevant section in the README file for more -information about this. +Usually this means that you have to install a newer version of qemu +and/or KVM. Please read the relevant section in the README file for +more information about this. You can override this test by setting the environment variable vmchannel_test=no However if you don't have the right support @@ -263,14 +279,14 @@ AC_ARG_WITH([drive-if], AC_DEFINE_UNQUOTED([DRIVE_IF],["$with_drive_if"],[Default drive interface.]) dnl Set interface used by the network. Normally you should -dnl leave this at the default (virtio) but you can use the +dnl leave this at the default (virtio-net-pci) but you can use the dnl alternative (ne2k_pci) because of bugs in virtio networking dnl eg. https://bugzilla.redhat.com/show_bug.cgi?id=516022 AC_ARG_WITH([net-if], [AS_HELP_STRING([--with-net-if], - [set default net driver (virtio|ne2k_pci) @<:@default=virtio@:>@])], + [set default net driver (virtio-net-pci|ne2k_pci) @<:@default=virtio-net-pci@:>@])], [], - [with_net_if=virtio]) + [with_net_if=virtio-net-pci]) AC_DEFINE_UNQUOTED([NET_IF],["$with_net_if"],[Default network interface.]) dnl Check for febootstrap etc. @@ -294,6 +310,10 @@ if test "x$enable_appliance" = "xyes"; then [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no]) test "x$FEBOOTSTRAP_TO_INITRAMFS" = "xno" && \ AC_MSG_ERROR([febootstrap-to-initramfs must be installed]) + AC_CHECK_PROG([FEBOOTSTRAP_TO_SUPERMIN], + [febootstrap-to-supermin],[febootstrap-to-supermin],[no]) + test "x$FEBOOTSTRAP_TO_SUPERMIN" = "xno" && \ + AC_MSG_ERROR([febootstrap-to-supermin must be installed]) dnl Check we have fakechroot >= 2.9 (it's an indirect requirement dnl of febootstrap, but old versions will fail with yum). @@ -311,8 +331,8 @@ if test "x$enable_appliance" = "xyes"; then AC_MSG_RESULT([$fakechroot_version]) fakechroot_major=`echo "$fakechroot_version" | awk -F. '{print $1}'` fakechroot_minor=`echo "$fakechroot_version" | awk -F. '{print $2}'` - if test "$fakechroot_major" -lt 2 -o \ - \( "$fakechroot_major" -eq 2 -a "$fakechroot_minor" -lt 9 \); then + if test "$fakechroot_major" -lt 2 || \ + ( test "$fakechroot_major" -eq 2 && test "$fakechroot_minor" -lt 9 ); then AC_MSG_ERROR([fakechroot version must be >= 2.9]) fi fi @@ -364,9 +384,9 @@ fi dnl --with-repo to specify a Fedora repository. AC_ARG_WITH([repo], [AS_HELP_STRING([--with-repo], - [set name of Fedora repository @<:@default=fedora-12@:>@])], + [set name of Fedora repository @<:@default=fedora-13@:>@])], [], - [with_repo=fedora-12]) + [with_repo=fedora-13]) REPO="$with_repo" AC_SUBST(REPO) AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.]) @@ -380,40 +400,6 @@ AC_ARG_ENABLE([supermin], [enable_supermin=no]) AM_CONDITIONAL([SUPERMIN],[test "x$enable_supermin" = "xyes"]) -if test "x$enable_supermin" = "xyes"; then - dnl Check febootstrap-to-initramfs accepts the --files option - dnl (febootstrap >= 2.2). - AC_MSG_CHECKING([for --files support in $FEBOOTSTRAP_TO_INITRAMFS]) - out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:` - echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD - if ! echo "$out" | grep -sq -e --files ; then - AC_MSG_RESULT([no]) - AC_MSG_FAILURE( -[febootstrap-to-initramfs does not support the --files option. - -To build the supermin appliance, you need to upgrade to the latest -version of febootstrap. -]) - fi - AC_MSG_RESULT([yes]) - - dnl Check febootstrap-to-initramfs accepts the --nocompress option - dnl (febootstrap >= 2.3). - AC_MSG_CHECKING([for --nocompress support in $FEBOOTSTRAP_TO_INITRAMFS]) - out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:` - echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD - if ! echo "$out" | grep -sq -e --nocompress ; then - AC_MSG_RESULT([no]) - AC_MSG_FAILURE( -[febootstrap-to-initramfs does not support the --nocompress option. - -To build the supermin appliance, you need to upgrade to the latest -version of febootstrap. -]) - fi - AC_MSG_RESULT([yes]) -fi - dnl Enable packet dumps when in verbose mode. This generates lots dnl of debug info, only useful for people debugging the RPC mechanism. AC_ARG_ENABLE([packet-dump], @@ -451,14 +437,35 @@ dnl For i18n. AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT_VERSION([0.17]) -dnl hivex library (highly recommended). +dnl libmagic (required) +AC_CHECK_LIB([magic],[magic_file],[ + AC_SUBST([LIBMAGIC], ["-lmagic"]) + ],[ + AC_MSG_FAILURE([libmagic is required]) + ]) +AC_CHECK_HEADER([magic.h],[],[ + AC_MSG_FAILURE([magic.h header file is required]) + ]) + +dnl libvirt (required) +PKG_CHECK_MODULES([LIBVIRT], [libvirt]) +AC_SUBST([LIBVIRT_CFLAGS]) +AC_SUBST([LIBVIRT_LIBS]) + +dnl libxml2 (required) +PKG_CHECK_MODULES([LIBXML2], [libxml-2.0]) +AC_SUBST([LIBXML2_CFLAGS]) +AC_SUBST([LIBXML2_LIBS]) + +dnl Augeas (required) +PKG_CHECK_MODULES([AUGEAS], [augeas]) +AC_SUBST([AUGEAS_CFLAGS]) +AC_SUBST([AUGEAS_LIBS]) + +dnl hivex library (required) dnl This used to be a part of libguestfs, but was spun off into its dnl own separate upstream project in libguestfs 1.0.85. -HAVE_HIVEX=yes -PKG_CHECK_MODULES([HIVEX], [hivex],,[ - HAVE_HIVEX=no - AC_MSG_WARN([Hivex library and headers are missing, so optional Windows Registry tools won't be built])]) -AM_CONDITIONAL([HAVE_HIVEX],[test "x$HAVE_HIVEX" = "xyes"]) +PKG_CHECK_MODULES([HIVEX], [hivex]) AC_SUBST([HIVEX_CFLAGS]) AC_SUBST([HIVEX_LIBS]) @@ -472,11 +479,11 @@ AM_CONDITIONAL([HAVE_FUSE],[test "x$HAVE_FUSE" = "xyes"]) dnl Check for OCaml (optional, for OCaml bindings). AC_PROG_OCAML AC_PROG_FINDLIB -AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"]) +AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"]) dnl Optional xml-light for running the generator. OCAML_PKG_xml_light=no -if test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"; then +if test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"; then AC_CHECK_OCAML_PKG([xml-light]) fi AM_CONDITIONAL([HAVE_XML_LIGHT],[test "x$OCAML_PKG_xml_light" != "xno"]) @@ -498,7 +505,7 @@ AC_CHECK_PROG([PERL],[perl],[perl],[no]) dnl Check for Perl modules that must be present to compile and dnl test the Perl bindings. missing_perl_modules=no -for pm in Test::More Test::Pod Test::Pod::Coverage ExtUtils::MakeMaker; do +for pm in Test::More ExtUtils::MakeMaker; do AC_MSG_CHECKING([for $pm]) if ! perl -M$pm -e1 >/dev/null 2>&1; then AC_MSG_RESULT([no]) @@ -512,7 +519,7 @@ if test "x$missing_perl_modules" = "xyes"; then fi AM_CONDITIONAL([HAVE_PERL], - [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"]) + [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"]) dnl Check for Python (optional, for Python bindings). AC_CHECK_PROG([PYTHON],[python],[python],[no]) @@ -553,6 +560,11 @@ if test "x$PYTHON" != "xno"; then fi AC_MSG_RESULT([not found]) done + + old_LIBS="$LIBS" + LIBS="$LIBS -lpython$PYTHON_VERSION" + AC_CHECK_FUNCS([PyCapsule_New]) + LIBS="$old_LIBS" fi AC_SUBST(PYTHON_PREFIX) @@ -561,14 +573,14 @@ AC_SUBST(PYTHON_INCLUDEDIR) AC_SUBST(PYTHON_SITE_PACKAGES) AM_CONDITIONAL([HAVE_PYTHON], - [test "x$PYTHON_INCLUDEDIR" != "x" -a "x$PYTHON_SITE_PACKAGES" != "x"]) + [test "x$PYTHON_INCLUDEDIR" != "x" && test "x$PYTHON_SITE_PACKAGES" != "x"]) dnl Check for Ruby and rake (optional, for Ruby bindings). AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0]) AC_CHECK_PROG([RAKE],[rake],[rake],[no]) AM_CONDITIONAL([HAVE_RUBY], - [test "x$RAKE" != "xno" -a -n "$HAVE_LIBRUBY"]) + [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"]) dnl Check for Java. AC_ARG_WITH(java_home, @@ -578,7 +590,7 @@ AC_ARG_WITH(java_home, [with_java_home=check]) if test "x$with_java_home" != "xno"; then - if test "x$with_java_home" != "xyes" -a "x$with_java_home" != "xcheck" + if test "x$with_java_home" != "xyes" && test "x$with_java_home" != "xcheck" then # Reject unsafe characters in $JAVA_HOME jh_lf=' @@ -600,7 +612,7 @@ if test "x$with_java_home" != "xno"; then /usr/lib/jvm/java \ /usr/lib/jvm/java-6-openjdk do - if test -d $d -a -f $d/bin/java; then + if test -d $d && test -f $d/bin/java; then JAVA_HOME=$d break fi @@ -732,9 +744,18 @@ if test "x$missing_perl_modules" = "xyes"; then fi AM_CONDITIONAL([HAVE_INSPECTOR], - [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"]) + [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"]) AM_CONDITIONAL([HAVE_TOOLS], - [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"]) + [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"]) + +dnl po4a for translating man pages and POD files (optional). +AC_CHECK_PROG([PO4A],[po4a],[po4a],[no]) +AM_CONDITIONAL([HAVE_PO4A], [test "x$PO4A" != "xno"]) + +dnl PHP +AC_CHECK_PROG([PHP],[php],[php],[no]) +AC_CHECK_PROG([PHPIZE],[phpize],[phpize],[no]) +AM_CONDITIONAL([HAVE_PHP], [test "x$PHP" != "xno" && test "x$PHPIZE" != "xno"]) dnl Library versioning. MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR` @@ -750,11 +771,8 @@ AC_CONFIG_HEADERS([config.h]) dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html AC_CONFIG_FILES([appliance/update.sh], [chmod +x appliance/update.sh]) -AC_CONFIG_FILES([appliance/supermin-split.sh], - [chmod +x appliance/supermin-split.sh]) -AC_CONFIG_FILES([appliance/supermin-make.sh], - [chmod +x appliance/supermin-make.sh]) AC_CONFIG_FILES([Makefile + generator/Makefile src/Makefile fish/Makefile po/Makefile.in examples/Makefile appliance/Makefile appliance/debian/debirf.conf @@ -774,6 +792,9 @@ AC_CONFIG_FILES([Makefile gnulib/lib/Makefile gnulib/tests/Makefile fuse/Makefile + po-docs/Makefile + po-docs/ja/Makefile + php/Makefile ocaml/META perl/Makefile.PL]) AC_OUTPUT @@ -800,6 +821,8 @@ echo -n "Java bindings ....................... " if test "x$HAVE_JAVA_TRUE" = "x"; then echo "yes"; else echo "no"; fi echo -n "Haskell bindings .................... " if test "x$HAVE_HASKELL_TRUE" = "x"; then echo "yes"; else echo "no"; fi +echo -n "PHP bindings ........................ " +if test "x$HAVE_PHP_TRUE" = "x"; then echo "yes"; else echo "no"; fi echo -n "virt-inspector ...................... " if test "x$HAVE_INSPECTOR_TRUE" = "x"; then echo "yes"; else echo "no"; fi echo -n "virt-* tools ........................ "