X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=configure.ac;h=2c37457b5a4a1a8fa7c0982c6a20ad6586c33bc4;hp=acc1f8851d4ed58ac8a74f24bf98090dab028c06;hb=787baf1bad89aecf4d01738fb8344e4446eb5ba1;hpb=d8daebf3095aba66ca8d9ba9b9eb10b2eda7d31a diff --git a/configure.ac b/configure.ac index acc1f88..e0bed2f 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], [5]) -m4_define([libguestfs_release], [7]) -# extra can be any string -m4_define([libguestfs_extra], []) +m4_define([libguestfs_minor], [13]) +m4_define([libguestfs_release], [20]) 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,15 +47,21 @@ 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 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 @@ -69,6 +69,8 @@ gl_INIT AC_PROG_LIBTOOL +AC_PROG_SED + dnl Check for basic C environment. AC_PROG_CC_STDC AC_PROG_INSTALL @@ -115,6 +117,10 @@ if test "$gl_gcc_warnings" = yes; then nw="$nw -Wpacked" # Allow attribute((packed)) on structs nw="$nw -Wlong-long" # Allow long long since it's required # 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]) @@ -129,6 +135,9 @@ if test "$gl_gcc_warnings" = yes; then # gcc 4.5.0 20090517, and it provokes warnings in cat.c, dd.c, truncate.c gl_WARN_ADD([-Wno-logical-op]) + # Work around warning in src/inspect.c. This seems to be a bug in gcc 4.5.1. + gl_WARN_ADD([-Wno-strict-overflow]) + gl_WARN_ADD([-fdiagnostics-show-option]) AC_SUBST([WARN_CFLAGS]) @@ -156,14 +165,72 @@ AC_SYS_LARGEFILE 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. -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. -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]) @@ -175,6 +242,18 @@ AC_ARG_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], @@ -185,14 +264,46 @@ 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])]) +if test "x$enable_appliance" = "xyes"; then + dnl Check for febootstrap >= 3.0 + AC_CHECK_PROG([FEBOOTSTRAP], + [febootstrap],[febootstrap],[no]) + test "x$FEBOOTSTRAP" = "xno" && + AC_MSG_ERROR([febootstrap must be installed]) + dnl febootstrap 2.x did not support the --version parameter + $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. + 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 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 + 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 dnl Check for rpcgen and XDR library. rpcgen is optional. AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no]) @@ -201,26 +312,115 @@ AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[ AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl]) ]) -dnl Check for pod2man and pod2text. +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 systemtap/DTrace userspace probes (optional). +dnl http://sourceware.org/systemtap/wiki/AddingUserSpaceProbingToApps +AC_CHECK_HEADERS([sys/sdt.h]) +dnl AC_CHECK_PROG([DTRACE],[dtrace],[dtrace],[no]) + +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 gperf. +AC_CHECK_PROG([GPERF],[gperf],[gperf],[no]) +test "x$GPERF" = "xno" && + AC_MSG_ERROR([gperf must be installed]) + +dnl Check for pod2man, pod2text, pod2html. AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no]) test "x$POD2MAN" = "xno" && AC_MSG_ERROR([pod2man must be installed]) AC_CHECK_PROG([POD2TEXT],[pod2text],[pod2text],[no]) test "x$POD2TEXT" = "xno" && AC_MSG_ERROR([pod2text must be installed]) +AC_CHECK_PROG([POD2HTML],[pod2html],[pod2html],[no]) +test "x$POD2HTML" = "xno" && + AC_MSG_ERROR([pod2html must be installed]) + +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 mkisofs. -AC_PATH_PROGS([MKISOFS],[mkisofs],[no], +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]) AM_CONDITIONAL([HAVE_XMLLINT],[test "x$XMLLINT" != "xno"]) +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 Check for db_dump, db_load (optional). +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_LOAD" != "xno"; then + AC_DEFINE_UNQUOTED([DB_LOAD],["$DB_LOAD"],[Name of db_load program.]) +fi + dnl Check for QEMU for running binaries on this $host_cpu, fall dnl back to basic 'qemu'. Allow the user to override it. -default_qemu="qemu-kvm qemu-system-$host_cpu qemu" +default_qemu="qemu-kvm kvm qemu-system-$host_cpu qemu" AC_ARG_WITH([qemu], [AS_HELP_STRING([--with-qemu], [set default QEMU binary @<:@default=[qemu-kvm] qemu-system- qemu@:>@])], @@ -231,50 +431,36 @@ 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([that $QEMU -help works]) + if $QEMU -help >&AS_MESSAGE_LOG_FD 2>&1; 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 + 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 "-net user" (user mode network) support in $QEMU]) - if $QEMU -nographic --help | grep -sq -- "-net user"; 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_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 @@ -287,7 +473,7 @@ the --with-qemu option. fi fi -dnl Set drive interface used by the guestfs_add_drive{,_ro} calls +dnl Set default drive interface used by the guestfs_add_drive_opts call dnl ('-drive ...,if=...' option to qemu). dnl dnl If you encounter performance problems with virtio (RHBZ#509383) @@ -310,117 +496,6 @@ AC_ARG_WITH([net-if], [with_net_if=virtio-net-pci]) AC_DEFINE_UNQUOTED([NET_IF],["$with_net_if"],[Default network interface.]) -dnl Check for febootstrap etc. -if test "x$enable_appliance" = "xyes"; then - AC_CHECK_PROG([FEBOOTSTRAP], - [febootstrap],[febootstrap],[no]) - if test "x$FEBOOTSTRAP" != "xno"; then - AC_CHECK_PROG([FEBOOTSTRAP_RUN], - [febootstrap-run],[febootstrap-run],[no]) - test "x$FEBOOTSTRAP_RUN" = "xno" && \ - AC_MSG_ERROR([febootstrap-run must be installed]) - AC_CHECK_PROG([FEBOOTSTRAP_INSTALL], - [febootstrap-install],[febootstrap-install],[no]) - test "x$FEBOOTSTRAP_INSTALL" = "xno" && \ - AC_MSG_ERROR([febootstrap-install must be installed]) - AC_CHECK_PROG([FEBOOTSTRAP_MINIMIZE], - [febootstrap-minimize],[febootstrap-minimize],[no]) - test "x$FEBOOTSTRAP_MINIMIZE" = "xno" && \ - AC_MSG_ERROR([febootstrap-minimize must be installed]) - AC_CHECK_PROG([FEBOOTSTRAP_TO_INITRAMFS], - [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). - AC_CHECK_PROG([FAKECHROOT], - [fakechroot],[fakechroot],[no]) - test "x$FAKECHROOT" = "xno" && \ - AC_MSG_ERROR([fakechroot must be installed]) - - AC_MSG_CHECKING([fakechroot version]) - fakechroot_version=`$FAKECHROOT --version | awk '{print $3}'` - if test -z "$fakechroot_version"; then - AC_MSG_RESULT([failed]) - AC_MSG_WARN([fakechroot --version command failed, proceeding anyway]) - else - 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 - AC_MSG_ERROR([fakechroot version must be >= 2.9]) - fi - fi - DIST="REDHAT" - else - # check for debootstrap and debirf - AC_CHECK_PROG([DEBOOTSTRAP], - [debootstrap],[debootstrap],[no]) - test "x$DEBOOTSTRAP" = "xno" && \ - AC_MSG_ERROR([Either febootstrap or debootstrap must be installed]) - AC_CHECK_PROG([DEBIRF],[debirf],[debirf],[no]) - test "x$DEBIRF" = "xno" && - AC_MSG_ERROR([debirf must be installed]) - DIST="DEBIAN" - case "$host_cpu" in - *86) - DEBIAN_KERNEL_ARCH=486 - ;; - x86_64) - DEBIAN_KERNEL_ARCH=amd64 - ;; - *) - DEBIAN_KERNEL_ARCH=$host_cpu - ;; - esac - AC_SUBST(DEBIAN_KERNEL_ARCH) - fi - AC_SUBST(DIST) - - dnl --with-updates to specify a Fedora updates repository. - AC_ARG_WITH([updates], - [AS_HELP_STRING([--with-updates], - [set name of Fedora updates repository @<:@default=updates-released-f12@:>@])], - [], - [with_updates=updates-released-f12]) - UPDATES="$with_updates" - AC_SUBST(UPDATES) - - dnl --with-mirror to specify a local Fedora mirror. - AC_ARG_WITH([mirror], - [AS_HELP_STRING([--with-mirror], - [set URI of a local Fedora mirror])], - [], - [with_mirror=]) - MIRROR="$with_mirror" - AC_SUBST(MIRROR) -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@:>@])], - [], - [with_repo=fedora-12]) -REPO="$with_repo" -AC_SUBST(REPO) -AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.]) - -dnl Build the supermin appliance? Please see README file before -dnl enabling this option. -AC_ARG_ENABLE([supermin], - [AS_HELP_STRING([--enable-supermin], - [enable supermin appliance (see README) @<:@default=no@:>@])], - [], - [enable_supermin=no]) -AM_CONDITIONAL([SUPERMIN],[test "x$enable_supermin" = "xyes"]) - 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], @@ -456,151 +531,197 @@ AS_IF([test "x$with_readline" != xno], dnl For i18n. AM_GNU_GETTEXT([external]) -AM_GNU_GETTEXT_VERSION([0.17]) -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 Check for PCRE (required) +PKG_CHECK_MODULES([PCRE], [libpcre]) -dnl libvirt (required) -PKG_CHECK_MODULES([LIBVIRT], [libvirt]) -AC_SUBST([LIBVIRT_CFLAGS]) -AC_SUBST([LIBVIRT_LIBS]) +dnl libmagic (highly recommended) +AC_CHECK_LIB([magic],[magic_file], + [AC_CHECK_HEADER([magic.h], + [AC_SUBST([MAGIC_LIBS], ["-lmagic"]) + AC_DEFINE([HAVE_LIBMAGIC],[1],[libmagic found at compile time.]) + ], []) + ], + [AC_MSG_WARN([libmagic not found, some core features will be disabled])]) -dnl libxml2 (required) -PKG_CHECK_MODULES([LIBXML2], [libxml-2.0]) -AC_SUBST([LIBXML2_CFLAGS]) -AC_SUBST([LIBXML2_LIBS]) +dnl libvirt (highly recommended) +PKG_CHECK_MODULES([LIBVIRT], [libvirt], + [AC_SUBST([LIBVIRT_CFLAGS]) + AC_SUBST([LIBVIRT_LIBS]) + AC_DEFINE([HAVE_LIBVIRT],[1],[libvirt found at compile time.]) + ], + [AC_MSG_WARN([libvirt not found, some core features will be disabled])]) +AM_CONDITIONAL([HAVE_LIBVIRT],[test "x$LIBVIRT_LIBS" != "x"]) + +dnl libxml2 (highly recommended) +PKG_CHECK_MODULES([LIBXML2], [libxml-2.0], + [AC_SUBST([LIBXML2_CFLAGS]) + AC_SUBST([LIBXML2_LIBS]) + AC_DEFINE([HAVE_LIBXML2],[1],[libxml2 found at compile time.]) + ], + [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 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. -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"]) -AC_SUBST([HIVEX_CFLAGS]) -AC_SUBST([HIVEX_LIBS]) +PKG_CHECK_MODULES([HIVEX], [hivex], + [AC_SUBST([HIVEX_CFLAGS]) + AC_SUBST([HIVEX_LIBS]) + 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. -HAVE_FUSE=yes -PKG_CHECK_MODULES([FUSE],[fuse],,[ - HAVE_FUSE=no - AC_MSG_WARN([FUSE library and headers are missing, so optional FUSE module won't be built])]) -AM_CONDITIONAL([HAVE_FUSE],[test "x$HAVE_FUSE" = "xyes"]) +AC_ARG_ENABLE([fuse], + AS_HELP_STRING([--disable-fuse], [Disable FUSE (guestmount) support]), + [], + [enable_fuse=yes]) +AS_IF([test "x$enable_fuse" != "xno"], + [PKG_CHECK_MODULES([FUSE],[fuse],,[ + enable_fuse=no + AC_MSG_WARN([FUSE library and headers are missing, so optional FUSE module won't be built])])]) +AM_CONDITIONAL([HAVE_FUSE],[test "x$enable_fuse" != "xno"]) 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"]) - -dnl Optional xml-light for running the generator. -OCAML_PKG_xml_light=no -if test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"; then - AC_CHECK_OCAML_PKG([xml-light]) -fi -AM_CONDITIONAL([HAVE_XML_LIGHT],[test "x$OCAML_PKG_xml_light" != "xno"]) - -dnl Build the OCaml viewer example. This has a lengthy list of -dnl dependencies and we don't attempt to detect them all. Read -dnl the top of ocaml/examples/viewer.ml before enabling this. -AC_ARG_ENABLE([ocaml-viewer], - [AS_HELP_STRING([--enable-ocaml-viewer], - [enable OCaml viewer (see ocaml/examples) @<:@default=no@:>@])], +OCAMLC=no +OCAMLFIND=no +AC_ARG_ENABLE([ocaml], + AS_HELP_STRING([--disable-ocaml], [Disable OCaml language bindings]), [], - [enable_ocaml_viewer=no]) -AM_CONDITIONAL([BUILD_OCAML_VIEWER],[test "x$enable_ocaml_viewer" = "xyes"]) + [enable_ocaml=yes]) +AS_IF([test "x$enable_ocaml" != "xno"], + [dnl OCAMLC and OCAMLFIND have to be unset first, otherwise + dnl AC_CHECK_TOOL (inside AC_PROG_OCAML) will not look. + OCAMLC= + 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"]) +AM_CONDITIONAL([HAVE_OCAMLDOC], + [test "x$OCAMLDOC" != "xno"]) dnl Check for Perl (optional, for Perl bindings). -dnl XXX This isn't quite right, we should check for Perl devel library. -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 ExtUtils::MakeMaker; do - AC_MSG_CHECKING([for $pm]) - if ! perl -M$pm -e1 >/dev/null 2>&1; then - AC_MSG_RESULT([no]) - missing_perl_modules=yes - else - AC_MSG_RESULT([yes]) - fi -done -if test "x$missing_perl_modules" = "xyes"; then - AC_MSG_WARN([some Perl modules required to compile or test the Perl bindings are missing]) -fi - +PERL=no +AC_ARG_ENABLE([perl], + AS_HELP_STRING([--disable-perl], [Disable Perl language bindings]), + [], + [enable_perl=yes]) +AS_IF([test "x$enable_perl" != "xno"], + [ + PERL= + 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 ExtUtils::MakeMaker; do + AC_MSG_CHECKING([for $pm]) + if ! perl -M$pm -e1 >&AS_MESSAGE_LOG_FD 2>&1; then + AC_MSG_RESULT([no]) + missing_perl_modules=yes + else + AC_MSG_RESULT([yes]) + fi + done + if test "x$missing_perl_modules" = "xyes"; then + AC_MSG_WARN([some Perl modules required to compile or test the Perl bindings are missing]) + 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]) - PYTHON_PREFIX= PYTHON_VERSION= PYTHON_INCLUDEDIR= -PYTHON_SITE_PACKAGES= - -if test "x$PYTHON" != "xno"; then - PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"` - 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 - 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 - fi - AC_MSG_RESULT([not found]) - done +PYTHON_INSTALLDIR= - old_LIBS="$LIBS" - LIBS="$LIBS -lpython$PYTHON_VERSION" - AC_CHECK_FUNCS([PyCapsule_New]) - LIBS="$old_LIBS" -fi +AC_ARG_ENABLE([python], + AS_HELP_STRING([--disable-python], [Disable Python language bindings]), + [], + [enable_python=yes]) +AS_IF([test "x$enable_python" != "xno"], + [ + 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)"` + AC_MSG_RESULT([$PYTHON_PREFIX]) + + AC_MSG_CHECKING([Python version]) + PYTHON_VERSION=`$PYTHON -c "import sys; print (sys.version[[0:3]])"` + AC_MSG_RESULT([$PYTHON_VERSION]) + + 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 + AC_MSG_RESULT([$PYTHON_INSTALLDIR]) + fi -AC_SUBST(PYTHON_PREFIX) -AC_SUBST(PYTHON_VERSION) -AC_SUBST(PYTHON_INCLUDEDIR) -AC_SUBST(PYTHON_SITE_PACKAGES) + old_LIBS="$LIBS" + LIBS="$LIBS -lpython$PYTHON_VERSION" + AC_CHECK_FUNCS([PyCapsule_New]) + LIBS="$old_LIBS" + fi + AC_SUBST(PYTHON_PREFIX) + AC_SUBST(PYTHON_VERSION) + AC_SUBST(PYTHON_INCLUDEDIR) + AC_SUBST(PYTHON_INSTALLDIR) + ]) AM_CONDITIONAL([HAVE_PYTHON], - [test "x$PYTHON_INCLUDEDIR" != "x" -a "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_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0]) -AC_CHECK_PROG([RAKE],[rake],[rake],[no]) - +AC_ARG_ENABLE([ruby], + AS_HELP_STRING([--disable-ruby], [Disable Ruby language bindings]), + [], + [enable_ruby=yes]) +AS_IF([test "x$enable_ruby" != "xno"], + [ + 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, @@ -610,7 +731,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=' @@ -632,7 +753,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 @@ -743,66 +864,140 @@ AC_SUBST(JNI_VERSION_INFO) AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"]) dnl Check for Haskell (GHC). -AC_CHECK_PROG([GHC],[ghc],[ghc],[no]) - +GHC=no +AC_ARG_ENABLE([haskell], + AS_HELP_STRING([--disable-haskell], [Disable Haskell language bindings]), + [], + [enable_haskell=yes]) +AS_IF([test "x$enable_haskell" != "xno"], + [ + GHC= + AC_CHECK_PROG([GHC],[ghc],[ghc],[no]) + ]) AM_CONDITIONAL([HAVE_HASKELL], [test "x$GHC" != "xno"]) -dnl Check for Perl modules needed by virt-df, inspector, etc. -missing_perl_modules=no -for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper XML::Writer Locale::TextDomain Win::Hivex Win::Hivex::Regedit; do - AC_MSG_CHECKING([for $pm]) - if ! perl -M$pm -e1 >/dev/null 2>&1; then - AC_MSG_RESULT([no]) - missing_perl_modules=yes - else - AC_MSG_RESULT([yes]) - fi -done -if test "x$missing_perl_modules" = "xyes"; then - AC_MSG_WARN([some Perl modules required to compile virt-inspector and the other virt-* tools are missing]) -fi +dnl PHP +PHP=no +AC_ARG_ENABLE([php], + AS_HELP_STRING([--disable-php], [Disable PHP language bindings]), + [], + [enable_php=yes]) +AS_IF([test "x$enable_php" != "xno"], + [ + 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 Erlang +ERLANG=no +AC_ARG_ENABLE([erlang], + AS_HELP_STRING([--disable-erlang], [Disable Erlang language bindings]), + [], + [enable_erlang=yes]) +AS_IF([test "x$enable_erlang" != "xno"], + [ + ERLANG= + AC_ERLANG_PATH_ERLC([no]) + + if test "x$ERLC" != "xno"; then + AC_ERLANG_CHECK_LIB([erl_interface], [], + [AC_MSG_FAILURE([Erlang erl_interface library not installed. Use --disable-erlang to disable.])]) + AC_ERLANG_SUBST_LIB_DIR + fi + ]) +AM_CONDITIONAL([HAVE_ERLANG], [test "x$ERLANG" != "xno" && test "x$ERLC" != "xno"]) + +dnl Check for Perl modules needed by Perl virt tools (virt-df, etc.) +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 >&AS_MESSAGE_LOG_FD 2>&1; then + AC_MSG_RESULT([no]) + missing_perl_modules=yes + else + AC_MSG_RESULT([yes]) + fi + done + if test "x$missing_perl_modules" = "xyes"; then + AC_MSG_WARN([some Perl modules required to compile the Perl virt-* tools are missing]) + fi + ]) -AM_CONDITIONAL([HAVE_INSPECTOR], - [test "x$PERL" != "xno" -a "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 Library versioning. MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR` AC_SUBST(MAX_PROC_NR) -dnl Run in subdirs. -if test "x$enable_daemon" = "xyes"; then - AC_CONFIG_SUBDIRS([daemon]) -fi +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='bash $(top_srcdir)/libtool-kill-dependency_libs.sh $(top_builddir)/libtool' +AC_SUBST([LIBTOOL]) dnl Produce output files. 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([clone/virt-sysprep], + [chmod +x clone/virt-sysprep]) +AC_CONFIG_FILES([podwrapper.sh], + [chmod +x podwrapper.sh]) +AC_CONFIG_FILES([run], + [chmod +x run]) AC_CONFIG_FILES([Makefile - src/Makefile fish/Makefile po/Makefile.in examples/Makefile + align/Makefile appliance/Makefile - appliance/debian/debirf.conf - images/Makefile capitests/Makefile - regressions/Makefile - test-tool/Makefile - ocaml/Makefile ocaml/examples/Makefile - perl/Makefile - python/Makefile - ruby/Makefile ruby/Rakefile - java/Makefile + cat/Makefile + caution/Makefile + clone/Makefile + csharp/Makefile + daemon/Makefile + debian/changelog + df/Makefile + edit/Makefile + erlang/Makefile + erlang/examples/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 + java/examples/Makefile libguestfs.pc - gnulib/lib/Makefile - gnulib/tests/Makefile - fuse/Makefile - ocaml/META perl/Makefile.PL]) + 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/uk/Makefile + po/Makefile.in + python/Makefile + python/examples/Makefile + regressions/Makefile + rescue/Makefile + resize/Makefile + ruby/Makefile + ruby/Rakefile + ruby/examples/Makefile + sparsify/Makefile + src/Makefile + test-tool/Makefile + tools/Makefile]) AC_OUTPUT dnl Produce summary. @@ -828,12 +1023,16 @@ 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 "virt-inspector ...................... " -if test "x$HAVE_INSPECTOR_TRUE" = "x"; then echo "yes"; else echo "no"; fi -echo -n "virt-* tools ........................ " +echo -n "PHP bindings ........................ " +if test "x$HAVE_PHP_TRUE" = "x"; then echo "yes"; else echo "no"; fi +echo -n "Erlang bindings ..................... " +if test "x$HAVE_ERLANG_TRUE" = "x"; then echo "yes"; else echo "no"; fi +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 "supermin appliance .................. $enable_supermin" -echo "FUSE filesystem ..................... $HAVE_FUSE" +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 "then you should check the preceeding messages."