X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=configure.ac;h=18da9c2b4fc5bd4d8459a7c2d682a90fe0eddd6f;hb=6b68c17e07a57d7aec9adc778f41b4c772a235bd;hp=3df4c5b7f302ef6e21c9adbe6d342fcb0769a6ac;hpb=da24e7aab06361b8d9bb5b5c8417611501e94684;p=libguestfs.git diff --git a/configure.ac b/configure.ac index 3df4c5b..18da9c2 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ # libguestfs -# Copyright (C) 2009-2010 Red Hat Inc. +# Copyright (C) 2009-2011 Red Hat Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -15,12 +15,12 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# major/minor/release must be numbers +# The major, minor, and release fields MUST be numbers. Packagers can +# add extra information using --with-extra="..." which may be any +# freeform string. m4_define([libguestfs_major], [1]) -m4_define([libguestfs_minor], [7]) -m4_define([libguestfs_release], [24]) -# extra can be any string -m4_define([libguestfs_extra], []) +m4_define([libguestfs_minor], [10]) +m4_define([libguestfs_release], [11]) AC_INIT([libguestfs],libguestfs_major.libguestfs_minor.libguestfs_release) AC_CONFIG_AUX_DIR([build-aux]) @@ -31,12 +31,6 @@ AM_SILENT_RULES([yes]) # make --enable-silent-rules the default. AC_CONFIG_MACRO_DIR([m4]) -dnl Split up the version string. -AC_DEFINE([PACKAGE_VERSION_MAJOR],[libguestfs_major],[Major version number]) -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 ],[ @@ -53,6 +47,22 @@ please see the section "LIBGUESTFS VERSION NUMBERS" in guestfs(3). ***]) ]) +dnl Extra string, a freeform string defined by packagers. +AC_ARG_WITH([extra], + [AS_HELP_STRING([--with-extra], + [extra version string (for use by packagers)])], + [libguestfs_extra="$withval"], + [libguestfs_extra=] +) + +AC_MSG_NOTICE([libguestfs version libguestfs_major.libguestfs_minor.libguestfs_release$libguestfs_extra]) + +dnl Split up the version string. +AC_DEFINE([PACKAGE_VERSION_MAJOR],[libguestfs_major],[Major version number]) +AC_DEFINE([PACKAGE_VERSION_MINOR],[libguestfs_minor],[Minor version number]) +AC_DEFINE([PACKAGE_VERSION_RELEASE],[libguestfs_release],[Release number]) +AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],["$libguestfs_extra"],[Extra version string]) + dnl Early gnulib initialization. gl_EARLY gl_INIT @@ -158,7 +168,7 @@ dnl Headers. AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h endian.h byteswap.h]) dnl Functions. -AC_CHECK_FUNCS([posix_fallocate]) +AC_CHECK_FUNCS([futimens posix_fallocate]) dnl Build the daemon? AC_MSG_CHECKING([if we should build the daemon]) @@ -187,7 +197,7 @@ if test "x$enable_appliance" = "xyes"; then test "x$FEBOOTSTRAP" = "xno" && AC_MSG_ERROR([febootstrap must be installed]) dnl febootstrap 2.x did not support the --version parameter - $FEBOOTSTRAP --version >/dev/null 2>&1 || + $FEBOOTSTRAP --version >&AS_MESSAGE_LOG_FD 2>&1 || AC_MSG_ERROR([febootstrap >= 3.0 must be installed, your version is too old]) dnl Pass a febootstrap --yum-config option. @@ -210,7 +220,7 @@ if test "x$enable_appliance" = "xyes"; then DISTRO=REDHAT if test -f /etc/debian_version; then DISTRO=DEBIAN - if grep -q 'DISTRIB_ID=Ubuntu' /etc/lsb-release 2>/dev/null; then + if grep -q 'DISTRIB_ID=Ubuntu' /etc/lsb-release 2>&AS_MESSAGE_LOG_FD; then DISTRO=UBUNTU fi fi @@ -249,10 +259,31 @@ AC_CHECK_PROG([POD2HTML],[pod2html],[pod2html],[no]) test "x$POD2HTML" = "xno" && AC_MSG_ERROR([pod2html must be installed]) -dnl Check for mkisofs. -AC_PATH_PROGS([MKISOFS],[mkisofs],[no], +dnl Check if pod2man, pod2text take --stderr and -u options (not in RHEL 5). +AC_MSG_CHECKING([if pod2man takes --stderr option]) +if "$POD2MAN" --stderr >&AS_MESSAGE_LOG_FD 2>&1; then + AC_MSG_RESULT([yes]) + POD2_STDERR_OPTION="--stderr" +else + AC_MSG_RESULT([no]) + POD2_STDERR_OPTION="" +fi +AC_SUBST([POD2_STDERR_OPTION]) + +AC_MSG_CHECKING([if pod2man takes -u option]) +if "$POD2MAN" -u >&AS_MESSAGE_LOG_FD 2>&1; then + AC_MSG_RESULT([yes]) + POD2_UTF8_OPTION="-u" +else + AC_MSG_RESULT([no]) + POD2_UTF8_OPTION="" +fi +AC_SUBST([POD2_UTF8_OPTION]) + +dnl Check for genisoimage. +AC_PATH_PROGS([GENISOIMAGE],[genisoimage],[no], [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin]) -test "x$MKISOFS" = "xno" && AC_MSG_ERROR([mkisofs must be installed]) +test "x$GENISOIMAGE" = "xno" && AC_MSG_ERROR([genisoimage must be installed]) dnl Check for optional xmllint. AC_CHECK_PROG([XMLLINT],[xmllint],[xmllint],[no]) @@ -289,10 +320,67 @@ AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.]) dnl Check that the chosen qemu has virtio-serial support. if test "x$vmchannel_test" != "xno"; then + AC_MSG_CHECKING([that $QEMU -help works]) + if $QEMU -help >&AS_MESSAGE_LOG_FD 2>&1; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_FAILURE( +[$QEMU -help: command failed. + +This could be a very old version of qemu, or qemu might not be +working. +]) + fi + + dnl qemu 0.15 was released with broken support for '-machine', + dnl requiring you to add the machine type: '-machine pc,[...]'. + dnl The problem is that 'pc' is only applicable for PC-like + dnl hardware, so we cannot do this as a general solution. Since + dnl qemu 0.15, this problem has been fixed so now the default + dnl machine type is chosen (qemu commit 2645c6dcaf6ea2a51a). + dnl + dnl We need to work out if this qemu is the broken version, so we + dnl can add 'pc' just for this broken version. + dnl + dnl Note that old qemu didn't support the '-machine' option at all. + dnl + dnl We use the -kernel option for testing this, because this option + dnl is processed very late, after qemu has set up the machine. + AC_MSG_CHECKING([for broken '-machine accel=tcg' option in $QEMU]) + LC_ALL=C $QEMU -nographic -machine accel=tcg -kernel /NO_SUCH_FILE \ + > config1.tmp 2>&1 + LC_ALL=C $QEMU -nographic -machine pc,accel=tcg -kernel /NO_SUCH_FILE \ + > config2.tmp 2>&1 + if cmp -s config1.tmp config2.tmp; then + AC_MSG_RESULT([no]) + else + AC_MSG_RESULT([yes]) + AC_DEFINE([QEMU_MACHINE_TYPE_IS_BROKEN],[1],[qemu -machine accel=tcg option is broken (in qemu 0.15 only)]) + fi + rm config1.tmp config2.tmp + + dnl See if the '-machine [pc,]accel=tcg' option is required in + dnl order to run the virtio-serial test below. This happens when + dnl we run qemu-kvm inside a VM without forcing TCG: + dnl + dnl Could not access KVM kernel module: No such file or directory + dnl failed to initialize KVM: No such file or directory + dnl No accelerator found! + AC_MSG_CHECKING([if -machine @<:@pc,@:>@accel=tcg option is required to test virtio-serial feature]) + if $QEMU -nographic -device \? >/dev/null 2>&1; then + : + elif $QEMU -machine accel=tcg -nographic -device \? >/dev/null 2>&1; then + QEMU_EXTRA_OPTIONS_FOR_TEST="-machine accel=tcg" + elif $QEMU -machine pc,accel=tcg -nographic -device \? >/dev/null 2>&1; then + QEMU_EXTRA_OPTIONS_FOR_TEST="-machine pc,accel=tcg" + # else nothing ... it'll fail below. + fi + AC_MSG_RESULT([$QEMU_EXTRA_OPTIONS_FOR_TEST]) + AC_MSG_CHECKING([for virtio-serial support in $QEMU]) - if $QEMU -nographic -device \? 2>&1 | grep -sq virtio-serial; then + if $QEMU $QEMU_EXTRA_OPTIONS_FOR_TEST -nographic -device \? 2>&1 | grep -sq virtio-serial; then AC_MSG_RESULT([yes]) - vmchannel_guestfwd=guestfwd else AC_MSG_RESULT([no]) AC_MSG_FAILURE( @@ -411,6 +499,15 @@ PKG_CHECK_MODULES([LIBXML2], [libxml-2.0], [AC_MSG_WARN([libxml2 not found, some core features will be disabled])]) AM_CONDITIONAL([HAVE_LIBXML2],[test "x$LIBXML2_LIBS" != "x"]) +dnl libconfig (highly recommended) +PKG_CHECK_MODULES([LIBCONFIG], [libconfig], + [AC_SUBST([LIBCONFIG_CFLAGS]) + AC_SUBST([LIBCONFIG_LIBS]) + AC_DEFINE([HAVE_LIBCONFIG],[1],[libconfig found at compile time.]) + ], + [AC_MSG_WARN([libconfig not found, some features will be disabled])]) +AM_CONDITIONAL([HAVE_LIBCONFIG],[test "x$LIBCONFIG_LIBS" != "x"]) + dnl hivex library (highly recommended) 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. @@ -420,6 +517,7 @@ PKG_CHECK_MODULES([HIVEX], [hivex], AC_DEFINE([HAVE_HIVEX],[1],[hivex library found at compile time.]) ], [AC_MSG_WARN([hivex not found, some core features will be disabled])]) +AM_CONDITIONAL([HAVE_HIVEX],[test "x$HIVEX_LIBS" != "x"]) dnl FUSE is optional to build the FUSE module. AC_ARG_ENABLE([fuse], @@ -446,9 +544,14 @@ AS_IF([test "x$enable_ocaml" != "xno"], OCAMLFIND= AC_PROG_OCAML AC_PROG_FINDLIB + + AS_IF([test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"], + [AC_CHECK_OCAML_PKG([pcre])]) ]) AM_CONDITIONAL([HAVE_OCAML], [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"]) +AM_CONDITIONAL([HAVE_OCAML_PCRE], + [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno" && test "x$OCAML_PKG_pcre" != "xno"]) dnl Check for Perl (optional, for Perl bindings). PERL=no @@ -466,7 +569,7 @@ AS_IF([test "x$enable_perl" != "xno"], missing_perl_modules=no for pm in Test::More ExtUtils::MakeMaker; do AC_MSG_CHECKING([for $pm]) - if ! perl -M$pm -e1 >/dev/null 2>&1; then + if ! perl -M$pm -e1 >&AS_MESSAGE_LOG_FD 2>&1; then AC_MSG_RESULT([no]) missing_perl_modules=yes else @@ -496,11 +599,11 @@ AS_IF([test "x$enable_python" != "xno"], if test "x$PYTHON" != "xno"; then AC_MSG_CHECKING([Python prefix]) - PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"` + PYTHON_PREFIX=`$PYTHON -c "import sys; print (sys.prefix)"` AC_MSG_RESULT([$PYTHON_PREFIX]) AC_MSG_CHECKING([Python version]) - PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"` + PYTHON_VERSION=`$PYTHON -c "import sys; print (sys.version[[0:3]])"` AC_MSG_RESULT([$PYTHON_VERSION]) for d in \ @@ -750,7 +853,7 @@ AS_IF([test "x$PERL" != "xno"], missing_perl_modules=no for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper Locale::TextDomain Win::Hivex Win::Hivex::Regedit String::ShellQuote; do AC_MSG_CHECKING([for $pm]) - if ! $PERL -M$pm -e1 >/dev/null 2>&1; then + if ! $PERL -M$pm -e1 >&AS_MESSAGE_LOG_FD 2>&1; then AC_MSG_RESULT([no]) missing_perl_modules=yes else @@ -771,7 +874,7 @@ AC_SUBST(MAX_PROC_NR) dnl Replace libtool with a wrapper that clobbers dependency_libs in *.la files dnl http://lists.fedoraproject.org/pipermail/devel/2010-November/146343.html -LIBTOOL='$(SHELL) $(top_srcdir)/libtool-kill-dependency_libs.sh $(top_builddir)/libtool' +LIBTOOL='bash $(top_srcdir)/libtool-kill-dependency_libs.sh $(top_builddir)/libtool' AC_SUBST([LIBTOOL]) dnl Run in subdirs. @@ -785,34 +888,46 @@ dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html AC_CONFIG_FILES([podwrapper.sh], [chmod +x podwrapper.sh]) AC_CONFIG_FILES([Makefile - generator/Makefile - src/Makefile fish/Makefile po/Makefile.in examples/Makefile appliance/Makefile - images/Makefile capitests/Makefile - regressions/Makefile - test-tool/Makefile - ocaml/Makefile ocaml/examples/Makefile - perl/Makefile - python/Makefile python/examples/Makefile - ruby/Makefile ruby/Rakefile ruby/examples/Makefile - java/Makefile + cat/Makefile + caution/Makefile + csharp/Makefile + debian/changelog + df/Makefile + examples/Makefile + fish/Makefile + fuse/Makefile + generator/Makefile + gnulib/lib/Makefile + gnulib/tests/Makefile haskell/Makefile + images/Makefile inspector/Makefile - tools/Makefile + java/Makefile libguestfs.pc - gnulib/lib/Makefile - gnulib/tests/Makefile - fuse/Makefile + ocaml/META + ocaml/Makefile + ocaml/examples/Makefile + perl/Makefile + perl/Makefile.PL + perl/examples/Makefile + php/Makefile po-docs/Makefile po-docs/ja/Makefile - php/Makefile - csharp/Makefile - cat/Makefile - df/Makefile + po-docs/uk/Makefile + po/Makefile.in + python/Makefile + python/examples/Makefile + regressions/Makefile rescue/Makefile - debian/changelog - ocaml/META perl/Makefile.PL]) + resize/Makefile + ruby/Makefile + ruby/Rakefile + ruby/examples/Makefile + src/Makefile + test-tool/Makefile + tools/Makefile]) AC_OUTPUT dnl Produce summary. @@ -840,8 +955,11 @@ 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-* tools ........................ " +echo "guestfish and C virt tools .......... yes" +echo -n "Perl virt tools ..................... " if test "x$HAVE_TOOLS_TRUE" = "x"; then echo "yes"; else echo "no"; fi +echo -n "virt-resize ......................... " +if test "x$HAVE_OCAML_TRUE" = "x" && test "x$HAVE_OCAML_PCRE_TRUE" = "x"; then echo "yes"; else echo "no"; fi echo "FUSE filesystem ..................... $enable_fuse" echo echo "If any optional component is configured 'no' when you expected 'yes'"