# libguestfs
-# Copyright (C) 2009 Red Hat Inc.
+# Copyright (C) 2009-2010 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
# major/minor/release must be numbers
m4_define([libguestfs_major], [1])
-m4_define([libguestfs_minor], [0])
-m4_define([libguestfs_release], [86])
+m4_define([libguestfs_minor], [5])
+m4_define([libguestfs_release], [3])
# extra can be any string
m4_define([libguestfs_extra], [])
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 ],[
+ AC_MSG_RESULT([stable])
+ ],[
+ AC_MSG_RESULT([unstable])
+ AC_MSG_NOTICE([
+***
+This is a development version of libguestfs. Some APIs may be unstable
+until they appear in a stable release of libguestfs (at which point
+the C API and ABI is guaranteed to remain stable forever). For
+more information about stable and development branches of libguestfs
+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
nw="$nw -Wmissing-format-attribute" # daemon.h's asprintf_nowarn
nw="$nw -Winline" # daemon.h's asprintf_nowarn
nw="$nw -Wshadow" # numerous, plus we're not unanimous
- # ?? -Wstrict-overflow
nw="$nw -Wunsafe-loop-optimizations" # just a warning that an optimization
# was not possible, safe to ignore
nw="$nw -Wpacked" # Allow attribute((packed)) on structs
+ nw="$nw -Wlong-long" # Allow long long since it's required
+ # by Python, Ruby and xstrtoll.
gl_MANYWARN_ALL_GCC([ws])
gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
dnl Check sizeof long.
AC_CHECK_SIZEOF([long])
+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])
+dnl Functions.
+AC_CHECK_FUNCS([posix_fallocate])
+
+dnl Build the daemon?
+AC_MSG_CHECKING([if we should build the daemon])
+AC_ARG_ENABLE([daemon],
+ [AS_HELP_STRING([--enable-daemon],
+ [enable building the daemon @<:@default=yes@:>@])],
+ [],
+ [enable_daemon=yes])
+AM_CONDITIONAL([ENABLE_DAEMON],[test "x$enable_daemon" = "xyes"])
+AC_MSG_RESULT([$enable_daemon])
+
+dnl Build the appliance?
+AC_MSG_CHECKING([if we should build the appliance])
+AC_ARG_ENABLE([appliance],
+ [AS_HELP_STRING([--enable-appliance],
+ [enable building the appliance @<:@default=yes@:>@])],
+ [],
+ [enable_appliance=yes])
+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])])
+
dnl Check for rpcgen and XDR library. rpcgen is optional.
AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no])
AM_CONDITIONAL([HAVE_RPCGEN],[test "x$RPCGEN" != "xno"])
dnl discussion in the README file.
if test "x$vmchannel_test" != "xno"; then
AC_MSG_CHECKING([for guestfwd support in $QEMU])
- if $QEMU --help | grep -sq guestfwd; then
+ if $QEMU -nographic --help | grep -sq guestfwd; then
AC_MSG_RESULT([yes])
vmchannel_guestfwd=guestfwd
else
# 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 -net channel /dev/zero 2>&1 ||:`
+ 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])
fi
AC_MSG_CHECKING([for "-net user" (user mode network) support in $QEMU])
- if $QEMU --help | grep -sq -- "-net user"; then
+ if $QEMU -nographic --help | grep -sq -- "-net user"; then
AC_MSG_RESULT([yes])
vmchannel_net_user=yes
else
AC_DEFINE_UNQUOTED([NET_IF],["$with_net_if"],[Default network interface.])
dnl Check for febootstrap etc.
-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])
-
- 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 \
+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
+ 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
;;
*)
DEBIAN_KERNEL_ARCH=$host_cpu
;;
- esac
- AC_SUBST(DEBIAN_KERNEL_ARCH)
-fi
-AC_SUBST(DIST)
+ 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-11@:>@])],
+ [set name of Fedora repository @<:@default=fedora-12@:>@])],
[],
- [with_repo=fedora-11])
+ [with_repo=fedora-12])
REPO="$with_repo"
AC_SUBST(REPO)
AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.])
-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-f11@:>@])],
- [],
- [with_updates=updates-released-f11])
-UPDATES="$with_updates"
-AC_SUBST(UPDATES)
-
-dnl Define a symbol for the host CPU architecture.
-AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
-
-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)
-
dnl Build the supermin appliance? Please see README file before
dnl enabling this option.
AC_ARG_ENABLE([supermin],
[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 -e --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 -e --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 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],
AC_MSG_FAILURE(
[--with-readline was given, but test for readline failed])
fi
- ], -lncurses)])
+ ], -lncurses)
+ old_LIBS="$LIBS"
+ LIBS="$LIBS $LIBREADLINE"
+ AC_CHECK_FUNCS([append_history completion_matches rl_completion_matches])
+ LIBS="$old_LIBS"
+ ])
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 libvirt (required)
+PKG_CHECK_MODULES([LIBVIRT], [libvirt])
+AC_SUBST([LIBVIRT_CFLAGS])
+AC_SUBST([LIBVIRT_LIBS])
+
+dnl libxml2 (required)
+PKG_CHECK_MODULES([LIBXML2], [libxml-2.0])
+AC_SUBST([LIBXML2_CFLAGS])
+AC_SUBST([LIBXML2_LIBS])
+
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 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 Test::Pod Test::Pod::Coverage ExtUtils::MakeMaker; do
+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])
fi
AC_MSG_RESULT([not found])
done
+
+ old_LIBS="$LIBS"
+ LIBS="$LIBS -lpython$PYTHON_VERSION"
+ AC_CHECK_FUNCS([PyCapsule_New])
+ LIBS="$old_LIBS"
fi
AC_SUBST(PYTHON_PREFIX)
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; do
+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])
AC_SUBST(MAX_PROC_NR)
dnl Run in subdirs.
-AC_CONFIG_SUBDIRS([daemon])
+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([appliance/update.sh],
[chmod +x appliance/update.sh])
-AC_CONFIG_FILES([appliance/supermin-split.sh],
- [chmod +x appliance/supermin-split.sh])
-AC_CONFIG_FILES([appliance/supermin-make.sh],
- [chmod +x appliance/supermin-make.sh])
AC_CONFIG_FILES([Makefile
src/Makefile fish/Makefile po/Makefile.in examples/Makefile
appliance/Makefile
echo
echo "This is how we have configured the optional components for you today:"
echo
+echo "Daemon .............................. $enable_daemon"
+echo "Appliance ........................... $enable_appliance"
echo "QEMU ................................ $QEMU"
echo -n "OCaml bindings ...................... "
if test "x$HAVE_OCAML_TRUE" = "x"; then echo "yes"; else echo "no"; fi