Version 1.0.50.
[libguestfs.git] / configure.ac
index 42cb661..eeaa988 100644 (file)
@@ -15,7 +15,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-AC_INIT([libguestfs],[1.0.17])
+AC_INIT([libguestfs],[1.0.50])
 AM_INIT_AUTOMAKE
 
 AC_CONFIG_MACRO_DIR([m4])
 AM_INIT_AUTOMAKE
 
 AC_CONFIG_MACRO_DIR([m4])
@@ -56,13 +56,14 @@ AC_CHECK_PROG([POD2TEXT],[pod2text],[pod2text],[no])
 test "x$POD2TEXT" = "xno" &&
      AC_MSG_ERROR([pod2text must be installed])
 
 test "x$POD2TEXT" = "xno" &&
      AC_MSG_ERROR([pod2text must be installed])
 
+dnl Check for mksquashfs.
+AC_PATH_PROGS([MKSQUASHFS],[mksquashfs],[no],
+       [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin])
+test "x$MKSQUASHFS" = "xno" && AC_MSG_ERROR([mksquashfs must be installed])
+
 dnl Check for QEMU for running binaries on this $host_cpu, fall
 dnl back to basic 'qemu'.  Allow the user to override it.
 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-system-$host_cpu qemu"
-# On x86-64, try using KVM first.
-if test "x$host_cpu" = "xx86_64"; then
-    default_qemu="qemu-kvm $default_qemu"
-fi
+default_qemu="qemu-kvm qemu-system-$host_cpu qemu"
 AC_ARG_WITH([qemu],
        [AS_HELP_STRING([--with-qemu],
          [set default QEMU binary @<:@default=[qemu-kvm] qemu-system-<host> qemu@:>@])],
 AC_ARG_WITH([qemu],
        [AS_HELP_STRING([--with-qemu],
          [set default QEMU binary @<:@default=[qemu-kvm] qemu-system-<host> qemu@:>@])],
@@ -104,27 +105,63 @@ fi
 dnl Check for febootstrap etc.
 AC_CHECK_PROG([FEBOOTSTRAP],
        [febootstrap],[febootstrap],[no])
 dnl Check for febootstrap etc.
 AC_CHECK_PROG([FEBOOTSTRAP],
        [febootstrap],[febootstrap],[no])
-test "x$FEBOOTSTRAP" = "xno" && \
-     AC_MSG_ERROR([febootstrap must be installed])
-AC_CHECK_PROG([FEBOOTSTRAP_RUN],
+if test "x$FEBOOTSTRAP" != "xno"; then
+  AC_CHECK_PROG([FEBOOTSTRAP_RUN],
        [febootstrap-run],[febootstrap-run],[no])
        [febootstrap-run],[febootstrap-run],[no])
-test "x$FEBOOTSTRAP_RUN" = "xno" && \
+  test "x$FEBOOTSTRAP_RUN" = "xno" && \
      AC_MSG_ERROR([febootstrap-run must be installed])
      AC_MSG_ERROR([febootstrap-run must be installed])
-AC_CHECK_PROG([FEBOOTSTRAP_MINIMIZE],
+  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])
        [febootstrap-minimize],[febootstrap-minimize],[no])
-test "x$FEBOOTSTRAP_MINIMIZE" = "xno" && \
+  test "x$FEBOOTSTRAP_MINIMIZE" = "xno" && \
      AC_MSG_ERROR([febootstrap-minimize must be installed])
      AC_MSG_ERROR([febootstrap-minimize must be installed])
-AC_CHECK_PROG([FEBOOTSTRAP_TO_INITRAMFS],
+  AC_CHECK_PROG([FEBOOTSTRAP_TO_INITRAMFS],
        [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no])
        [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no])
-test "x$FEBOOTSTRAP_TO_INITRAMFS" = "xno" && \
+  test "x$FEBOOTSTRAP_TO_INITRAMFS" = "xno" && \
      AC_MSG_ERROR([febootstrap-to-initramfs must be installed])
 
      AC_MSG_ERROR([febootstrap-to-initramfs 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
+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])
+fi
+
+
 dnl --with-repo to specify a Fedora repository.
 AC_ARG_WITH([repo],
        [AS_HELP_STRING([--with-repo],
 dnl --with-repo to specify a Fedora repository.
 AC_ARG_WITH([repo],
        [AS_HELP_STRING([--with-repo],
-         [set name of Fedora repository @<:@default=fedora-10@:>@])],
+         [set name of Fedora repository @<:@default=fedora-11@:>@])],
        [],
        [],
-       [with_repo=fedora-10])
+       [with_repo=fedora-11])
 REPO="$with_repo"
 AC_SUBST(REPO)
 AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.])
 REPO="$with_repo"
 AC_SUBST(REPO)
 AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.])
@@ -134,9 +171,9 @@ AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
 dnl --with-updates to specify a Fedora updates repository.
 AC_ARG_WITH([updates],
        [AS_HELP_STRING([--with-updates],
 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-f10@:>@])],
+         [set name of Fedora updates repository @<:@default=updates-released-f11@:>@])],
        [],
        [],
-       [with_updates=updates-released-f10])
+       [with_updates=updates-released-f11])
 UPDATES="$with_updates"
 AC_SUBST(UPDATES)
 AC_DEFINE_UNQUOTED([UPDATES],["$UPDATES"],[Name of Fedora updates repository.])
 UPDATES="$with_updates"
 AC_SUBST(UPDATES)
 AC_DEFINE_UNQUOTED([UPDATES],["$UPDATES"],[Name of Fedora updates repository.])
@@ -152,6 +189,49 @@ AC_ARG_WITH([mirror],
 MIRROR="$with_mirror"
 AC_SUBST(MIRROR)
 
 MIRROR="$with_mirror"
 AC_SUBST(MIRROR)
 
+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"])
+
+if test "x$enable_supermin" = "xyes"; then
+    dnl Check febootstrap-to-initramfs accepts the --files option
+    dnl (febootstrap >= 2.2).
+    AC_MSG_CHECKING([for --files support in $FEBOOTSTRAP_TO_INITRAMFS])
+    out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:`
+    echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD
+    if ! echo $out | grep -sq -- "--files" ; then
+        AC_MSG_RESULT([no])
+       AC_MSG_FAILURE(
+[febootstrap-to-initramfs does not support the --files option.
+
+To build the supermin appliance, you need to upgrade to the latest
+version of febootstrap.
+])
+    fi
+    AC_MSG_RESULT([yes])
+
+    dnl Check febootstrap-to-initramfs accepts the --nocompress option
+    dnl (febootstrap >= 2.3).
+    AC_MSG_CHECKING([for --nocompress support in $FEBOOTSTRAP_TO_INITRAMFS])
+    out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:`
+    echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD
+    if ! echo $out | grep -sq -- "--nocompress" ; then
+        AC_MSG_RESULT([no])
+       AC_MSG_FAILURE(
+[febootstrap-to-initramfs does not support the --nocompress option.
+
+To build the supermin appliance, you need to upgrade to the latest
+version of febootstrap.
+])
+    fi
+    AC_MSG_RESULT([yes])
+fi
+
 dnl Readline.
 AC_ARG_WITH([readline],
     [AS_HELP_STRING([--with-readline],
 dnl Readline.
 AC_ARG_WITH([readline],
     [AS_HELP_STRING([--with-readline],
@@ -172,6 +252,10 @@ AS_IF([test "x$with_readline" != xno],
          fi
         ], -lncurses)])
 
          fi
         ], -lncurses)])
 
+dnl For i18n.
+AM_GNU_GETTEXT([external])
+AM_GNU_GETTEXT_VERSION([0.14])
+
 dnl Check for OCaml (optional, for OCaml bindings).
 AC_PROG_OCAML
 AC_PROG_FINDLIB
 dnl Check for OCaml (optional, for OCaml bindings).
 AC_PROG_OCAML
 AC_PROG_FINDLIB
@@ -272,94 +356,107 @@ if test "x$with_java_home" != "xno"; then
             AC_MSG_FAILURE([$with_java_home is not a directory (use --with-java-home=no to disable Java support)])
        fi
     fi
             AC_MSG_FAILURE([$with_java_home is not a directory (use --with-java-home=no to disable Java support)])
        fi
     fi
+
     if test "x$JAVA_HOME" = "x"; then
     if test "x$JAVA_HOME" = "x"; then
-        JAVA_HOME=/usr/lib/jvm/java
-    fi
-    AC_MSG_CHECKING(for JDK in $JAVA_HOME)
-    if test ! -x "$JAVA_HOME/bin/java"; then
-        AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to disable Java support)])
-    else
-        JAVA="$JAVA_HOME/bin/java"
-    fi
-    if test ! -x "$JAVA_HOME/bin/javac"; then
-        AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary])
-    else
-        JAVAC="$JAVA_HOME/bin/javac"
-    fi
-    if test ! -x "$JAVA_HOME/bin/javah"; then
-        AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary])
-    else
-        JAVAH="$JAVA_HOME/bin/javah"
-    fi
-    if test ! -x "$JAVA_HOME/bin/javadoc"; then
-        AC_MSG_ERROR([missing $JAVA_HOME/bin/javadoc binary])
-    else
-        JAVADOC="$JAVA_HOME/bin/javadoc"
-    fi
-    if test ! -x "$JAVA_HOME/bin/jar"; then
-        AC_MSG_ERROR([missing $JAVA_HOME/bin/jar binary])
-    else
-        JAR="$JAVA_HOME/bin/jar"
+        # Look for Java in some likely locations.
+       for d in \
+           /usr/lib/jvm/java \
+           /usr/lib/jvm/java-6-openjdk
+       do
+           if test -d $d -a -f $d/bin/java; then
+                JAVA_HOME=$d
+               break
+           fi
+       done
     fi
     fi
-    java_version=`$JAVA -version 2>&1 | grep "java version"`
-    AC_MSG_RESULT(found $java_version in $JAVA_HOME)
 
 
-    dnl Find jni.h.
-    AC_MSG_CHECKING([for jni.h])
-    if test -f "$JAVA_HOME/include/jni.h"; then
-        JNI_CFLAGS="-I$JAVA_HOME/include"
-    else
-    if test "`find $JAVA_HOME -name jni.h`" != ""; then
-        head=`find $JAVA_HOME -name jni.h | tail -1`
-       dir=`dirname $head`
-       JNI_CFLAGS="-I$dir"
-    else
-       AC_MSG_FAILURE([missing jni.h header file])
-    fi
-    fi
-    AC_MSG_RESULT([$JNI_CFLAGS])
-
-    dnl Find jni_md.h.
-    AC_MSG_CHECKING([for jni_md.h])
-    case "$build_os" in
-    *linux*) system="linux" ;;
-    *SunOS*) system="solaris" ;;
-    *cygwin*) system="win32" ;;
-    *) system="$build_os" ;;
-    esac
-    if test -f "$JAVA_HOME/include/$system/jni_md.h"; then
-        JNI_CFLAGS="$JNI_CFLAGS -I$JAVA_HOME/include/$system"
-    else
-    if test "`find $JAVA_HOME -name jni_md.h`" != ""; then
-        head=`find $JAVA_HOME -name jni_md.h | tail -1`
-       dir=`dirname $head`
-       JNI_CFLAGS="$JNI_CFLAGS -I$dir"
-    else
-       AC_MSG_FAILURE([missing jni_md.h header file])
-    fi
+    if test "x$JAVA_HOME" != "x"; then
+        AC_MSG_CHECKING(for JDK in $JAVA_HOME)
+       if test ! -x "$JAVA_HOME/bin/java"; then
+            AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to disable Java support)])
+       else
+           JAVA="$JAVA_HOME/bin/java"
+       fi
+       if test ! -x "$JAVA_HOME/bin/javac"; then
+            AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary])
+       else
+           JAVAC="$JAVA_HOME/bin/javac"
+        fi
+       if test ! -x "$JAVA_HOME/bin/javah"; then
+            AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary])
+        else
+            JAVAH="$JAVA_HOME/bin/javah"
+        fi
+        if test ! -x "$JAVA_HOME/bin/javadoc"; then
+            AC_MSG_ERROR([missing $JAVA_HOME/bin/javadoc binary])
+        else
+            JAVADOC="$JAVA_HOME/bin/javadoc"
+        fi
+        if test ! -x "$JAVA_HOME/bin/jar"; then
+            AC_MSG_ERROR([missing $JAVA_HOME/bin/jar binary])
+        else
+            JAR="$JAVA_HOME/bin/jar"
+        fi
+        java_version=`$JAVA -version 2>&1 | grep "java version"`
+        AC_MSG_RESULT(found $java_version in $JAVA_HOME)
+
+        dnl Find jni.h.
+        AC_MSG_CHECKING([for jni.h])
+        if test -f "$JAVA_HOME/include/jni.h"; then
+            JNI_CFLAGS="-I$JAVA_HOME/include"
+        else
+            if test "`find $JAVA_HOME -name jni.h`" != ""; then
+                head=`find $JAVA_HOME -name jni.h | tail -1`
+               dir=`dirname $head`
+               JNI_CFLAGS="-I$dir"
+            else
+               AC_MSG_FAILURE([missing jni.h header file])
+            fi
+        fi
+        AC_MSG_RESULT([$JNI_CFLAGS])
+
+        dnl Find jni_md.h.
+        AC_MSG_CHECKING([for jni_md.h])
+        case "$build_os" in
+        *linux*) system="linux" ;;
+        *SunOS*) system="solaris" ;;
+        *cygwin*) system="win32" ;;
+        *) system="$build_os" ;;
+        esac
+        if test -f "$JAVA_HOME/include/$system/jni_md.h"; then
+            JNI_CFLAGS="$JNI_CFLAGS -I$JAVA_HOME/include/$system"
+        else
+            if test "`find $JAVA_HOME -name jni_md.h`" != ""; then
+                head=`find $JAVA_HOME -name jni_md.h | tail -1`
+               dir=`dirname $head`
+                JNI_CFLAGS="$JNI_CFLAGS -I$dir"
+            else
+                AC_MSG_FAILURE([missing jni_md.h header file])
+            fi
+        fi
+        AC_MSG_RESULT([$JNI_CFLAGS])
+
+        dnl Need extra version flag?
+        AC_MSG_CHECKING([extra javac flags])
+        JAVAC_FLAGS=
+        javac_version=`$JAVAC -version 2>&1`
+        case "$javac_version" in
+        *Eclipse*)
+            JAVAC_FLAGS="-source 1.5" ;;
+        esac
+        AC_MSG_RESULT([$JAVAC_FLAGS])
+
+        dnl Where to install jarfiles.
+        dnl XXX How to make it configurable?
+        JAR_INSTALL_DIR=\${prefix}/share/java
+        JNI_INSTALL_DIR=\${libdir}
+
+        dnl JNI version.
+        jni_major_version=`echo $VERSION | awk -F. '{print $1}'`
+        jni_minor_version=`echo $VERSION | awk -F. '{print $2}'`
+        jni_micro_version=`echo $VERSION | awk -F. '{print $3}'`
+        JNI_VERSION_INFO=`expr $jni_major_version + $jni_minor_version`:$jni_micro_version:$jni_minor_version
     fi
     fi
-    AC_MSG_RESULT([$JNI_CFLAGS])
-
-    dnl Need extra version flag?
-    AC_MSG_CHECKING([extra javac flags])
-    JAVAC_FLAGS=
-    javac_version=`$JAVAC -version 2>&1`
-    case "$javac_version" in
-    *Eclipse*)
-       JAVAC_FLAGS="-source 1.5" ;;
-    esac
-    AC_MSG_RESULT([$JAVAC_FLAGS])
-
-    dnl Where to install jarfiles.
-    dnl XXX How to make it configurable?
-    JAR_INSTALL_DIR=\${prefix}/share/java
-    JNI_INSTALL_DIR=\${libdir}
-
-    dnl JNI version.
-    jni_major_version=`echo $VERSION | awk -F. '{print $1}'`
-    jni_minor_version=`echo $VERSION | awk -F. '{print $2}'`
-    jni_micro_version=`echo $VERSION | awk -F. '{print $3}'`
-    JNI_VERSION_INFO=`expr $jni_major_version + $jni_minor_version`:$jni_micro_version:$jni_minor_version
 fi
 
 AC_SUBST(JAVA_HOME)
 fi
 
 AC_SUBST(JAVA_HOME)
@@ -376,6 +473,12 @@ AC_SUBST(JNI_VERSION_INFO)
 
 AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"])
 
 
 AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"])
 
+dnl Check for Haskell (GHC).
+AC_CHECK_PROG([GHC],[ghc],[ghc],[no])
+
+AM_CONDITIONAL([HAVE_HASKELL],
+    [test "x$GHC" != "xno"])
+
 dnl Check for Perl modules needed by the inspector.
 missing_perl_modules=no
 for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper; do
 dnl Check for Perl modules needed by the inspector.
 missing_perl_modules=no
 for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper; do
@@ -399,21 +502,28 @@ AC_CONFIG_SUBDIRS([daemon])
 
 dnl Produce output files.
 AC_CONFIG_HEADERS([config.h])
 
 dnl Produce output files.
 AC_CONFIG_HEADERS([config.h])
-AC_CONFIG_FILES([Makefile src/Makefile fish/Makefile examples/Makefile
+AC_CONFIG_FILES([Makefile
+                src/Makefile fish/Makefile po/Makefile.in examples/Makefile
+                appliance/Makefile
+                appliance/make.sh appliance/update.sh
+                appliance/supermin-split.sh appliance/supermin-make.sh
+                appliance/libguestfs-supermin-helper
                 images/Makefile
                 images/Makefile
+                capitests/Makefile
+                regressions/Makefile
                 ocaml/Makefile ocaml/examples/Makefile
                 perl/Makefile
                 python/Makefile
                 ruby/Makefile ruby/Rakefile
                 java/Makefile
                 ocaml/Makefile ocaml/examples/Makefile
                 perl/Makefile
                 python/Makefile
                 ruby/Makefile ruby/Rakefile
                 java/Makefile
+                haskell/Makefile
                 inspector/Makefile
                 inspector/Makefile
-                make-initramfs.sh update-initramfs.sh
-                libguestfs.spec libguestfs.pc
+                libguestfs.pc
                 ocaml/META perl/Makefile.PL])
 AC_OUTPUT
 
 dnl WTF?
                 ocaml/META perl/Makefile.PL])
 AC_OUTPUT
 
 dnl WTF?
-chmod +x make-initramfs.sh update-initramfs.sh
+chmod +x appliance/*.sh appliance/libguestfs-supermin-helper
 
 dnl Produce summary.
 echo
 
 dnl Produce summary.
 echo
@@ -434,8 +544,11 @@ echo -n "Ruby bindings ....................... "
 if test "x$HAVE_RUBY_TRUE" = "x"; then echo "yes"; else echo "no"; fi
 echo -n "Java bindings ....................... "
 if test "x$HAVE_JAVA_TRUE" = "x"; then echo "yes"; else echo "no"; fi
 if test "x$HAVE_RUBY_TRUE" = "x"; then echo "yes"; else echo "no"; fi
 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" = "x"; then echo "yes"; else echo "no"; fi
 echo -n "virt-inspector ...................... "
 if test "x$HAVE_INSPECTOR" = "x"; then echo "yes"; else echo "no"; fi
 echo -n "virt-inspector ...................... "
 if test "x$HAVE_INSPECTOR" = "x"; then echo "yes"; else echo "no"; fi
+echo "supermin appliance .................. $enable_supermin"
 echo
 echo "If any optional component is configured 'no' when you expected 'yes'"
 echo "then you should check the preceeding messages."
 echo
 echo "If any optional component is configured 'no' when you expected 'yes'"
 echo "then you should check the preceeding messages."