X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=configure.ac;h=b0661a0d7b5a0f941b0642af9365587244fb2e10;hp=24de0926944ca57ac63dd01bcfaba8d357983c01;hb=cd077b8229731e292798f34dd56892cbfa6f1e0e;hpb=43ab6dfdf38fdafa040b9e9c1665295765f1486c;ds=sidebyside diff --git a/configure.ac b/configure.ac index 24de092..b0661a0 100644 --- a/configure.ac +++ b/configure.ac @@ -13,14 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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], [13]) -m4_define([libguestfs_release], [0]) -# extra can be any string -m4_define([libguestfs_extra], []) +m4_define([libguestfs_minor], [15]) +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,12 +47,30 @@ 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 AC_PROG_LIBTOOL +AC_PROG_SED + dnl Check for basic C environment. AC_PROG_CC_STDC AC_PROG_INSTALL @@ -109,6 +121,9 @@ if test "$gl_gcc_warnings" = yes; then # failures (seen on Ubuntu). nw="$nw -Wmissing-noreturn" # Don't warn about missed noreturn funcs # (seen on Ubuntu). + nw="$nw -Wsuggest-attribute=pure" # Don't suggest pure functions. + nw="$nw -Wsuggest-attribute=const" # Don't suggest const functions. + nw="$nw -Wunsuffixed-float-constants" # Don't care about these. gl_MANYWARN_ALL_GCC([ws]) gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw]) @@ -153,14 +168,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([futimens 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]) @@ -172,6 +245,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], @@ -189,7 +274,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. @@ -212,7 +297,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 @@ -230,6 +315,42 @@ AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[ AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl]) ]) +dnl Check for Augeas (optional). +PKG_CHECK_MODULES([AUGEAS], [augeas], + [AC_SUBST([AUGEAS_CFLAGS]) + AC_SUBST([AUGEAS_LIBS]) + AC_DEFINE([HAVE_AUGEAS],[1],[Define to 1 if you have Augeas]) + + old_LIBS="$LIBS" + LIBS="$LIBS $AUGEAS_LIBS" + dnl Check for functions not available in earlier versions of Augeas. + AC_CHECK_FUNCS([aug_load aug_defvar aug_defnode]) + LIBS="$old_LIBS" + ], + [AC_MSG_WARN([augeas not found, some core features will be disabled])]) + +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" && @@ -253,7 +374,7 @@ test "x$POD2HTML" = "xno" && 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 >/dev/null 2>&1; then +if "$POD2MAN" --stderr >&AS_MESSAGE_LOG_FD 2>&1; then AC_MSG_RESULT([yes]) POD2_STDERR_OPTION="--stderr" else @@ -263,7 +384,7 @@ fi AC_SUBST([POD2_STDERR_OPTION]) AC_MSG_CHECKING([if pod2man takes -u option]) -if "$POD2MAN" -u >/dev/null 2>&1; then +if "$POD2MAN" -u >&AS_MESSAGE_LOG_FD 2>&1; then AC_MSG_RESULT([yes]) POD2_UTF8_OPTION="-u" else @@ -313,7 +434,7 @@ 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 > /dev/null 2>&1; then + if $QEMU -help >&AS_MESSAGE_LOG_FD 2>&1; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) @@ -325,8 +446,53 @@ 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]) else AC_MSG_RESULT([no]) @@ -411,6 +577,9 @@ AS_IF([test "x$with_readline" != xno], dnl For i18n. AM_GNU_GETTEXT([external]) +dnl Check for PCRE (required) +PKG_CHECK_MODULES([PCRE], [libpcre]) + dnl libmagic (highly recommended) AC_CHECK_LIB([magic],[magic_file], [AC_CHECK_HEADER([magic.h], @@ -420,14 +589,6 @@ AC_CHECK_LIB([magic],[magic_file], ], [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]) @@ -491,14 +652,9 @@ 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"]) AM_CONDITIONAL([HAVE_OCAMLDOC], [test "x$OCAMLDOC" != "xno"]) @@ -518,7 +674,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 @@ -548,11 +704,13 @@ 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_MAJOR=`$PYTHON -c "import sys; print (sys.version_info@<:@0@:>@)"` + PYTHON_VERSION_MINOR=`$PYTHON -c "import sys; print (sys.version_info@<:@1@:>@)"` + PYTHON_VERSION="$PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR" AC_MSG_RESULT([$PYTHON_VERSION]) AC_MSG_CHECKING([for Python include path]) @@ -580,9 +738,19 @@ AS_IF([test "x$enable_python" != "xno"], AC_MSG_RESULT([$PYTHON_INSTALLDIR]) fi + dnl Look for libpython and some optional symbols in it. old_LIBS="$LIBS" - LIBS="$LIBS -lpython$PYTHON_VERSION" - AC_CHECK_FUNCS([PyCapsule_New]) + if test "x$PYTHON_VERSION_MAJOR" = "x3"; then + dnl libpython3 is called "libpython3.Xmu.so" + LIBPYTHON="python${PYTHON_VERSION}mu" + else + LIBPYTHON="python$PYTHON_VERSION" + fi + AC_CHECK_LIB([$LIBPYTHON], [PyList_Size], [], + [AC_MSG_FAILURE([$LIBPYTHON is not installed])]) + + AC_CHECK_FUNCS([PyCapsule_New \ + PyString_AsString]) LIBS="$old_LIBS" fi @@ -601,8 +769,10 @@ AC_ARG_ENABLE([ruby], [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([RUBY],[ruby],[ruby],[no]) AC_CHECK_PROG([RAKE],[rake],[rake],[no]) + AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0]) + AC_SUBST([RAKE]) ]) AM_CONDITIONAL([HAVE_RUBY], [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"]) @@ -775,13 +945,32 @@ AS_IF([test "x$enable_php" != "xno"], ]) 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]) +# NB: Don't use AS_IF here: it doesn't work. +if test "x$enable_erlang" != "xno"; then + 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 +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 >/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 @@ -802,28 +991,30 @@ 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. -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([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 + align/Makefile appliance/Makefile - capitests/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 @@ -831,7 +1022,6 @@ AC_CONFIG_FILES([Makefile gnulib/lib/Makefile gnulib/tests/Makefile haskell/Makefile - images/Makefile inspector/Makefile java/Makefile java/examples/Makefile @@ -849,14 +1039,24 @@ AC_CONFIG_FILES([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 + tests/c-api/Makefile + tests/data/Makefile + tests/extra/Makefile + tests/guests/Makefile + tests/luks/Makefile + tests/lvm/Makefile + tests/md/Makefile + tests/protocol/Makefile + tests/qemu/Makefile + tests/regressions/Makefile tools/Makefile]) AC_OUTPUT @@ -885,11 +1085,13 @@ 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 "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 -n "virt-resize ......................... " -if test "x$HAVE_OCAML" = "x" && test "x$HAVE_OCAML_PCRE" = "x"; then echo "yes"; else echo "no"; fi +if test "x$HAVE_OCAML_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'"