Version 1.13.5
[libguestfs.git] / configure.ac
index 94995f1..54c2911 100644 (file)
@@ -1,5 +1,5 @@
 # libguestfs
 # 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
 #
 # 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
@@ -17,8 +17,8 @@
 
 # major/minor/release must be numbers
 m4_define([libguestfs_major],   [1])
 
 # major/minor/release must be numbers
 m4_define([libguestfs_major],   [1])
-m4_define([libguestfs_minor],   [7])
-m4_define([libguestfs_release], [19])
+m4_define([libguestfs_minor],   [13])
+m4_define([libguestfs_release], [5])
 # extra can be any string
 m4_define([libguestfs_extra],   [])
 
 # extra can be any string
 m4_define([libguestfs_extra],   [])
 
@@ -53,16 +53,6 @@ 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
 dnl Early gnulib initialization.
 gl_EARLY
 gl_INIT
@@ -117,6 +107,8 @@ if test "$gl_gcc_warnings" = yes; then
                                     # by Python, Ruby and xstrtoll.
   nw="$nw -Wstack-protector"        # Don't warn about stack-protector
                                     # failures (seen on Ubuntu).
                                     # by Python, Ruby and xstrtoll.
   nw="$nw -Wstack-protector"        # Don't warn about stack-protector
                                     # failures (seen on Ubuntu).
+  nw="$nw -Wmissing-noreturn"       # Don't warn about missed noreturn funcs
+                                    # (seen on Ubuntu).
 
   gl_MANYWARN_ALL_GCC([ws])
   gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
 
   gl_MANYWARN_ALL_GCC([ws])
   gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
@@ -161,14 +153,72 @@ AC_SYS_LARGEFILE
 dnl Check sizeof long.
 AC_CHECK_SIZEOF([long])
 
 dnl Check sizeof long.
 AC_CHECK_SIZEOF([long])
 
+dnl Check if dirent (readdir) supports d_type member.
+AC_STRUCT_DIRENT_D_TYPE
+
+dnl Check if stat has the required fields.
+AC_STRUCT_ST_BLOCKS
+AC_CHECK_MEMBER([struct stat.st_blksize],[
+        AC_DEFINE([HAVE_STRUCT_STAT_ST_BLKSIZE],[1],[Define to 1 if 'st_blksize' is a member of 'struct stat'])])
+
 dnl Define a C symbol for the host CPU architecture.
 AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
 
 dnl Headers.
 dnl Define a C symbol for the host CPU architecture.
 AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
 
 dnl Headers.
-AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h endian.h byteswap.h])
+AC_CHECK_HEADERS([\
+        attr/xattr.h \
+        byteswap.h \
+        endian.h \
+        errno.h \
+        printf.h \
+        sys/inotify.h \
+        sys/socket.h \
+        sys/statvfs.h \
+        sys/types.h \
+        sys/un.h \
+        sys/wait.h \
+        windows.h \
+        sys/xattr.h])
 
 dnl Functions.
 
 dnl Functions.
-AC_CHECK_FUNCS([posix_fallocate])
+AC_CHECK_FUNCS([\
+        futimens \
+        getxattr \
+        htonl \
+        htons \
+        inotify_init1 \
+        lgetxattr \
+        listxattr \
+        llistxattr \
+        lsetxattr \
+        lremovexattr \
+        mknod \
+        ntohl \
+        ntohs \
+        posix_fallocate \
+        realpath \
+        removexattr \
+        setitimer \
+        setxattr \
+        sigaction \
+        statvfs \
+        sync])
+
+dnl For modified printf in the daemon, we need glibc either (old-style)
+dnl register_printf_function or (new-style) register_printf_specifier.
+AC_CHECK_FUNC([register_printf_specifier],[
+        AC_DEFINE([HAVE_REGISTER_PRINTF_SPECIFIER],[1],
+                [Define to 1 if you have new-style register_printf_specifier])
+        ],[
+        AC_CHECK_FUNC([register_printf_function],[
+                AC_DEFINE([HAVE_REGISTER_PRINTF_FUNCTION],[1],
+                        [Define to 1 if you have old-style register_printf_function])
+                ],[
+                AC_MSG_FAILURE(
+[No support for glibc-style extended printf formatters.
+
+This means you either have a very old glibc (pre-2.0) or you
+are using some other libc where this is not supported.])])])
 
 dnl Build the daemon?
 AC_MSG_CHECKING([if we should build the daemon])
 
 dnl Build the daemon?
 AC_MSG_CHECKING([if we should build the daemon])
@@ -180,6 +230,18 @@ AC_ARG_ENABLE([daemon],
 AM_CONDITIONAL([ENABLE_DAEMON],[test "x$enable_daemon" = "xyes"])
 AC_MSG_RESULT([$enable_daemon])
 
 AM_CONDITIONAL([ENABLE_DAEMON],[test "x$enable_daemon" = "xyes"])
 AC_MSG_RESULT([$enable_daemon])
 
+if test "x$enable_daemon" = "xyes"; then
+       dnl Install the daemon (for libguestfs live service)
+        AC_MSG_CHECKING([if we should install the daemon])
+        AC_ARG_ENABLE([install-daemon],
+                [AS_HELP_STRING([--enable-install-daemon],
+                  [enable installing the daemon under $sbindir @<:@default=no@:>@])],
+                [],
+                [enable_install_daemon=no])
+        AM_CONDITIONAL([INSTALL_DAEMON],[test "x$enable_install_daemon" = "xyes"])
+        AC_MSG_RESULT([$enable_install_daemon])
+fi
+
 dnl Build the appliance?
 AC_MSG_CHECKING([if we should build the appliance])
 AC_ARG_ENABLE([appliance],
 dnl Build the appliance?
 AC_MSG_CHECKING([if we should build the appliance])
 AC_ARG_ENABLE([appliance],
@@ -197,32 +259,35 @@ 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
     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])
 
         AC_MSG_ERROR([febootstrap >= 3.0 must be installed, your version is too old])
 
-    dnl Build from local package files, used when building with no network
-    dnl access, ie. under Koji.
-    AC_MSG_CHECKING([if we should build the appliance from local packages])
-    AC_ARG_WITH([local-package-directory],
-        [AS_HELP_STRING([--with-local-package-directory],
-          [build from local packages in dir @<:@default=no@:>@])],
-        [local_package_directory=$withval],
-        [local_package_directory=no])
-    AC_MSG_RESULT([$local_package_directory])
-    PACKAGE_DIRECTORY=
-    test "x$local_package_directory" != "xno" &&
-        PACKAGE_DIRECTORY="$local_package_directory"
-    AC_SUBST([PACKAGE_DIRECTORY])
+    dnl Pass a febootstrap --yum-config option.
+    AC_MSG_CHECKING([if user requested febootstrap --yum-config option])
+    AC_ARG_WITH([febootstrap-yum-config],
+        [AS_HELP_STRING([--with-febootstrap-yum-config=FILE],
+          [pass febootstrap --yum-config option @<:@default=no@:>@])],
+        [FEBOOTSTRAP_YUM_CONFIG="$withval"],
+        [FEBOOTSTRAP_YUM_CONFIG=no])
+    AC_MSG_RESULT([$FEBOOTSTRAP_YUM_CONFIG])
+    AC_SUBST([FEBOOTSTRAP_YUM_CONFIG])
 
     dnl Which distro?
     dnl
     dnl This used to be Very Important but is now just used to select
     dnl which packages to install in the appliance, since the package
 
     dnl Which distro?
     dnl
     dnl This used to be Very Important but is now just used to select
     dnl which packages to install in the appliance, since the package
-    dnl names vary slightly across distros.  (See appliance/packagelist.in)
+    dnl names vary slightly across distros.  (See
+    dnl appliance/packagelist.in and appliance/excludelist.in)
     AC_MSG_CHECKING([which Linux distro for package names])
     DISTRO=REDHAT
     if test -f /etc/debian_version; then
         DISTRO=DEBIAN
     AC_MSG_CHECKING([which Linux distro for package names])
     DISTRO=REDHAT
     if test -f /etc/debian_version; then
         DISTRO=DEBIAN
+       if grep -q 'DISTRIB_ID=Ubuntu' /etc/lsb-release 2>&AS_MESSAGE_LOG_FD; then
+            DISTRO=UBUNTU
+       fi
+    fi
+    if test -f /etc/arch-release; then
+        DISTRO=ARCHLINUX
     fi
     AC_MSG_RESULT([$DISTRO])
     AC_SUBST([DISTRO])
     fi
     AC_MSG_RESULT([$DISTRO])
     AC_SUBST([DISTRO])
@@ -235,6 +300,40 @@ AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
         AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
         ])
 
         AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
         ])
 
+dnl Check for Augeas (now optional).
+AC_CHECK_LIB([augeas],[aug_match],[
+        have_augeas=yes
+        AUGEAS_LIB="-laugeas"
+
+        old_LIBS="$LIBS"
+        LIBS="$LIBS $AUGEAS_LIB"
+        dnl Check for functions not available in earlier versions of Augeas.
+        AC_CHECK_FUNCS([aug_load aug_defvar aug_defnode])
+        LIBS="$old_LIBS"
+
+        ],[have_augeas=no])
+if test "x$have_augeas" = "xyes"; then
+        AC_DEFINE([HAVE_AUGEAS],[1],[Define to 1 if you have Augeas])
+fi
+AC_SUBST([AUGEAS_LIB])
+
+dnl Check for libselinux (optional).
+AC_CHECK_HEADERS([selinux/selinux.h])
+AC_CHECK_LIB([selinux],[setexeccon],[
+        have_libselinux="$ac_cv_header_selinux_selinux_h"
+        SELINUX_LIB="-lselinux"
+
+        old_LIBS="$LIBS"
+        LIBS="$LIBS $SELINUX_LIB"
+        AC_CHECK_FUNCS([setcon getcon])
+        LIBS="$old_LIBS"
+
+        ],[have_libselinux=no])
+if test "x$have_libselinux" = "xyes"; then
+        AC_DEFINE([HAVE_LIBSELINUX],[1],[Define to 1 if you have libselinux])
+fi
+AC_SUBST([SELINUX_LIB])
+
 dnl Check for cpio which isn't in the default Pardus install amazingly.
 AC_CHECK_PROG([CPIO],[cpio],[cpio],[no])
 test "x$CPIO" = "xno" &&
 dnl Check for cpio which isn't in the default Pardus install amazingly.
 AC_CHECK_PROG([CPIO],[cpio],[cpio],[no])
 test "x$CPIO" = "xno" &&
@@ -256,10 +355,31 @@ AC_CHECK_PROG([POD2HTML],[pod2html],[pod2html],[no])
 test "x$POD2HTML" = "xno" &&
      AC_MSG_ERROR([pod2html must be installed])
 
 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])
         [$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])
 
 dnl Check for optional xmllint.
 AC_CHECK_PROG([XMLLINT],[xmllint],[xmllint],[no])
@@ -270,8 +390,10 @@ AC_CHECK_PROG([PO4A],[po4a],[po4a],[no])
 AM_CONDITIONAL([HAVE_PO4A], [test "x$PO4A" != "xno"])
 
 dnl Check for db_dump, db_load (optional).
 AM_CONDITIONAL([HAVE_PO4A], [test "x$PO4A" != "xno"])
 
 dnl Check for db_dump, db_load (optional).
-AC_CHECK_PROGS([DB_DUMP],[db_dump db4_dump db4.8_dump],[no])
-AC_CHECK_PROGS([DB_LOAD],[db_load db4_load db4.8_load],[no])
+AC_CHECK_PROGS([DB_DUMP],
+               [db_dump db4_dump db4.8_dump db4.7_dump db4.6_dump],[no])
+AC_CHECK_PROGS([DB_LOAD],
+               [db_load db4_load db4.8_load db4.7_load db4.6_load],[no])
 if test "x$DB_DUMP" != "xno"; then
     AC_DEFINE_UNQUOTED([DB_DUMP],["$DB_DUMP"],[Name of db_dump program.])
 fi
 if test "x$DB_DUMP" != "xno"; then
     AC_DEFINE_UNQUOTED([DB_DUMP],["$DB_DUMP"],[Name of db_dump program.])
 fi
@@ -294,10 +416,22 @@ 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
 
 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
+
     AC_MSG_CHECKING([for virtio-serial support in $QEMU])
     if $QEMU -nographic -device \? 2>&1 | grep -sq virtio-serial; then
         AC_MSG_RESULT([yes])
     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])
         AC_MSG_FAILURE(
     else
         AC_MSG_RESULT([no])
         AC_MSG_FAILURE(
@@ -380,7 +514,9 @@ AS_IF([test "x$with_readline" != xno],
 
 dnl For i18n.
 AM_GNU_GETTEXT([external])
 
 dnl For i18n.
 AM_GNU_GETTEXT([external])
-AM_GNU_GETTEXT_VERSION([0.17])
+
+dnl Check for PCRE (required)
+PKG_CHECK_MODULES([PCRE], [libpcre])
 
 dnl libmagic (highly recommended)
 AC_CHECK_LIB([magic],[magic_file],
 
 dnl libmagic (highly recommended)
 AC_CHECK_LIB([magic],[magic_file],
@@ -391,14 +527,6 @@ AC_CHECK_LIB([magic],[magic_file],
         ],
         [AC_MSG_WARN([libmagic not found, some core features will be disabled])])
 
         ],
         [AC_MSG_WARN([libmagic not found, some core features will be disabled])])
 
-dnl Check for PCRE (highly recommended)
-PKG_CHECK_MODULES([PCRE], [libpcre],
-        [AC_SUBST([PCRE_CFLAGS])
-         AC_SUBST([PCRE_LIBS])
-         AC_DEFINE([HAVE_PCRE],[1],[PCRE found at compile time.])
-        ],
-        [AC_MSG_WARN([PCRE not found, some core features will be disabled])])
-
 dnl libvirt (highly recommended)
 PKG_CHECK_MODULES([LIBVIRT], [libvirt],
         [AC_SUBST([LIBVIRT_CFLAGS])
 dnl libvirt (highly recommended)
 PKG_CHECK_MODULES([LIBVIRT], [libvirt],
         [AC_SUBST([LIBVIRT_CFLAGS])
@@ -417,6 +545,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"])
 
         [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.
 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.
@@ -426,6 +563,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])])
          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],
 
 dnl FUSE is optional to build the FUSE module.
 AC_ARG_ENABLE([fuse],
@@ -452,9 +590,16 @@ AS_IF([test "x$enable_ocaml" != "xno"],
          OCAMLFIND=
          AC_PROG_OCAML
          AC_PROG_FINDLIB
          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],
                [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"])
+AM_CONDITIONAL([HAVE_OCAMLDOC],
+               [test "x$OCAMLDOC" != "xno"])
 
 dnl Check for Perl (optional, for Perl bindings).
 PERL=no
 
 dnl Check for Perl (optional, for Perl bindings).
 PERL=no
@@ -472,7 +617,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])
         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
                 AC_MSG_RESULT([no])
                 missing_perl_modules=yes
             else
@@ -490,7 +635,7 @@ dnl Check for Python (optional, for Python bindings).
 PYTHON_PREFIX=
 PYTHON_VERSION=
 PYTHON_INCLUDEDIR=
 PYTHON_PREFIX=
 PYTHON_VERSION=
 PYTHON_INCLUDEDIR=
-PYTHON_SITE_PACKAGES=
+PYTHON_INSTALLDIR=
 
 AC_ARG_ENABLE([python],
         AS_HELP_STRING([--disable-python], [Disable Python language bindings]),
 
 AC_ARG_ENABLE([python],
         AS_HELP_STRING([--disable-python], [Disable Python language bindings]),
@@ -501,42 +646,37 @@ AS_IF([test "x$enable_python" != "xno"],
         AC_CHECK_PROG([PYTHON],[python],[python],[no])
 
         if test "x$PYTHON" != "xno"; then
         AC_CHECK_PROG([PYTHON],[python],[python],[no])
 
         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]]"`
-            for d in \
-                $PYTHON_PREFIX/include/python$PYTHON_VERSION \
-                /usr/include/python$PYTHON_VERSION \
-                /usr/local/include/python$PYTHON_VERSION
-            do
-                AC_MSG_CHECKING([Python.h in $d])
-                if test -r "$d/Python.h"; then
-                    AC_MSG_RESULT([found])
-                    PYTHON_INCLUDEDIR=$d
-                    break
-                fi
-                AC_MSG_RESULT([not found])
-            done
-            if test "x$PYTHON_INCLUDEDIR" = "x"; then
-                AC_MSG_WARN([Python include directory not found])
-            fi
+           AC_MSG_RESULT([$PYTHON_VERSION])
 
 
-            for d in \
-                $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \
-                $PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages \
-                /usr/lib64/python$PYTHON_VERSION/site-packages \
-                /usr/lib/python$PYTHON_VERSION/site-packages \
-                /usr/local/lib/python$PYTHON_VERSION/site-packages
-            do
-                AC_MSG_CHECKING([for $d])
-                if test -d "$d"; then
-                    AC_MSG_RESULT([found])
-                    PYTHON_SITE_PACKAGES=$d
-                    break
+            AC_MSG_CHECKING([for Python include path])
+            if test -z "$PYTHON_INCLUDEDIR"; then
+                python_path=`$PYTHON -c "import distutils.sysconfig; \
+                                         print (distutils.sysconfig.get_python_inc ());"`
+                PYTHON_INCLUDEDIR=$python_path
+            fi
+            AC_MSG_RESULT([$PYTHON_INCLUDEDIR])
+
+            AC_ARG_WITH([python-installdir],
+                        [AS_HELP_STRING([--with-python-installdir],
+                                       [directory to install python modules @<:@default=check@:>@])],
+                       [PYTHON_INSTALLDIR="$withval"
+                       AC_MSG_NOTICE([Python install dir $PYTHON_INSTALLDIR])],
+                       [PYTHON_INSTALLDIR=check])
+
+           if test "x$PYTHON_INSTALLDIR" = "xcheck"; then
+               PYTHON_INSTALLDIR=
+                AC_MSG_CHECKING([for Python site-packages path])
+                if test -z "$PYTHON_INSTALLDIR"; then
+                    PYTHON_INSTALLDIR=`$PYTHON -c "import distutils.sysconfig; \
+                                                   print (distutils.sysconfig.get_python_lib(1,0));"`
                 fi
                 fi
-                AC_MSG_RESULT([not found])
-            done
-            if test "x$PYTHON_SITE_PACKAGES" = "x"; then
-                AC_MSG_WARN([Python site-packages directory not found])
+                AC_MSG_RESULT([$PYTHON_INSTALLDIR])
             fi
 
             old_LIBS="$LIBS"
             fi
 
             old_LIBS="$LIBS"
@@ -548,10 +688,10 @@ AS_IF([test "x$enable_python" != "xno"],
         AC_SUBST(PYTHON_PREFIX)
         AC_SUBST(PYTHON_VERSION)
         AC_SUBST(PYTHON_INCLUDEDIR)
         AC_SUBST(PYTHON_PREFIX)
         AC_SUBST(PYTHON_VERSION)
         AC_SUBST(PYTHON_INCLUDEDIR)
-        AC_SUBST(PYTHON_SITE_PACKAGES)
+        AC_SUBST(PYTHON_INSTALLDIR)
         ])
 AM_CONDITIONAL([HAVE_PYTHON],
         ])
 AM_CONDITIONAL([HAVE_PYTHON],
-    [test "x$PYTHON_INCLUDEDIR" != "x" && test "x$PYTHON_SITE_PACKAGES" != "x"])
+    [test "x$PYTHON" != "xno" && test "x$PYTHON_INCLUDEDIR" != "x" && test "x$PYTHON_INSTALLDIR" != "x"])
 
 dnl Check for Ruby and rake (optional, for Ruby bindings).
 AC_ARG_ENABLE([ruby],
 
 dnl Check for Ruby and rake (optional, for Ruby bindings).
 AC_ARG_ENABLE([ruby],
@@ -740,7 +880,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])
         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
                 AC_MSG_RESULT([no])
                 missing_perl_modules=yes
             else
@@ -761,47 +901,58 @@ 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
 
 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])
 
 AC_SUBST([LIBTOOL])
 
-dnl Run in subdirs.
-if test "x$enable_daemon" = "xyes"; then
-    AC_CONFIG_SUBDIRS([daemon])
-fi
-
 dnl Produce output files.
 AC_CONFIG_HEADERS([config.h])
 dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html
 AC_CONFIG_FILES([podwrapper.sh],
                 [chmod +x podwrapper.sh])
 AC_CONFIG_FILES([Makefile
 dnl Produce output files.
 AC_CONFIG_HEADERS([config.h])
 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
                  appliance/Makefile
-                 images/Makefile
                  capitests/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
+                 daemon/Makefile
+                 debian/changelog
+                 df/Makefile
+                 edit/Makefile
+                 examples/Makefile
+                 fish/Makefile
+                 fuse/Makefile
+                 generator/Makefile
+                 gnulib/lib/Makefile
+                 gnulib/tests/Makefile
                  haskell/Makefile
                  haskell/Makefile
+                 images/Makefile
                  inspector/Makefile
                  inspector/Makefile
-                 tools/Makefile
+                 java/Makefile
+                 java/examples/Makefile
                  libguestfs.pc
                  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
                  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
                  rescue/Makefile
-                 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.
 AC_OUTPUT
 
 dnl Produce summary.
@@ -829,8 +980,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
 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
 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'"
 echo "FUSE filesystem ..................... $enable_fuse"
 echo
 echo "If any optional component is configured 'no' when you expected 'yes'"