# major/minor/release must be numbers
m4_define([libguestfs_major], [1])
-m4_define([libguestfs_minor], [11])
-m4_define([libguestfs_release], [2])
+m4_define([libguestfs_minor], [13])
+m4_define([libguestfs_release], [4])
# extra can be any string
m4_define([libguestfs_extra], [])
# 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])
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])
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],
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.
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
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 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
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
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])
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],
],
[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])
[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
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
PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
AC_MSG_RESULT([$PYTHON_VERSION])
- 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])
+ 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],
if test "x$PYTHON_INSTALLDIR" = "xcheck"; then
PYTHON_INSTALLDIR=
- 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_INSTALLDIR=$d
- break
- fi
- AC_MSG_RESULT([not found])
- done
- if test "x$PYTHON_INSTALLDIR" = "x"; then
- AC_MSG_WARN([Python site-packages directory not found])
+ 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
old_LIBS="$LIBS"
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
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([podwrapper.sh],
[chmod +x podwrapper.sh])
AC_CONFIG_FILES([Makefile
- generator/Makefile
- src/Makefile fish/Makefile po/Makefile.in examples/Makefile
appliance/Makefile
- images/Makefile
capitests/Makefile
- regressions/Makefile
- test-tool/Makefile
- ocaml/Makefile ocaml/examples/Makefile
- perl/Makefile perl/examples/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
+ images/Makefile
inspector/Makefile
- tools/Makefile
+ java/Makefile
+ java/examples/Makefile
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/uk/Makefile
- php/Makefile
- csharp/Makefile
- cat/Makefile
- df/Makefile
+ po/Makefile.in
+ python/Makefile
+ python/examples/Makefile
+ regressions/Makefile
rescue/Makefile
- debian/changelog
- ocaml/META perl/Makefile.PL
- resize/Makefile])
+ resize/Makefile
+ ruby/Makefile
+ ruby/Rakefile
+ ruby/examples/Makefile
+ src/Makefile
+ test-tool/Makefile
+ tools/Makefile])
AC_OUTPUT
dnl Produce summary.
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" && 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'"