mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
40ed782077
The new option "--fs String" for lvresize/lvreduce/lvextend controls the handling of file systems before/after resizing the LV. --resizefs is the same as --fs resize. Possible --fs values: checksize Only used when reducing the size, does nothing when exending. Check the fs size, and reduce the LV if the fs is not using the affected space, i.e. the fs does not need to be shrunk. Fail the command without reducing the fs or LV if the fs is using the affected space. resize_remount | resize Resize the fs if needed. Mounts or unmounts the fs as required (avoids mounting/unmounting when possible.) Attempts to restore the original mount state when finished. resize_keepmount Resize the fs if needed, only if it can be done without changing the current mount state. Fail the command without resizing the fs or LV if an fs resize requires mounting or unmounting. resize_unmount Resize the fs if needed, only while unmounted. Unmount the fs if needed. Fail the command without resizing the fs or LV if an fs resize is needed that requires the the fs to be mounted. resize_fsadm Use the old method of calling fsadm to do handle the fs (deprecated). ignore Resize the LV without checking for or handling a file system. Notes on lvreduce: When no --fs or --resizefs option is specified: . lvextend default behavior is fs ignore. . lvreduce default behavior is fs checksize (includes activating the LV.) With the exception of --fs resize_fsadm|ignore, lvreduce requires the recent libblkid fields FSLASTBLOCK and FSBLOCKSIZE. FSLASTBLOCK*FSBLOCKSIZE is the last byte used by the fs on the LV, which determines if reducing the fs is necessary.
2091 lines
76 KiB
Plaintext
2091 lines
76 KiB
Plaintext
###############################################################################
|
|
## Copyright (C) 2000-2004 Sistina Software, Inc. All rights reserved.
|
|
## Copyright (C) 2004-2016 Red Hat, Inc. All rights reserved.
|
|
##
|
|
## This copyrighted material is made available to anyone wishing to use,
|
|
## modify, copy, or redistribute it subject to the terms and conditions
|
|
## of the GNU General Public License v.2.
|
|
##
|
|
## 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
################################################################################
|
|
|
|
AC_PREREQ(2.69)
|
|
################################################################################
|
|
dnl -- Process this file with autoconf to produce a configure script.
|
|
AC_INIT
|
|
CONFIGURE_LINE="$0 $@"
|
|
AC_CONFIG_SRCDIR([lib/device/dev-cache.h])
|
|
AC_CONFIG_HEADERS([include/configure.h])
|
|
|
|
################################################################################
|
|
dnl -- Setup the directory where autoconf has auxilary files
|
|
AC_CONFIG_AUX_DIR(autoconf)
|
|
|
|
################################################################################
|
|
dnl -- Get system type
|
|
AC_CANONICAL_TARGET([])
|
|
|
|
AS_IF([test -z "$CFLAGS"], [COPTIMISE_FLAG="-O2"])
|
|
case "$host_os" in
|
|
linux*)
|
|
# equivalent to -rdynamic
|
|
ELDFLAGS="-Wl,--export-dynamic"
|
|
# FIXME Generate list and use --dynamic-list=.dlopen.sym
|
|
CLDWHOLEARCHIVE="-Wl,-whole-archive"
|
|
CLDNOWHOLEARCHIVE="-Wl,-no-whole-archive"
|
|
LIB_SUFFIX=so
|
|
DEVMAPPER=yes
|
|
BUILD_LVMPOLLD=no
|
|
ODIRECT=yes
|
|
DM_IOCTLS=yes
|
|
SELINUX=yes
|
|
FSADM=yes
|
|
LVMIMPORTVDO=yes
|
|
BLKDEACTIVATE=yes
|
|
;;
|
|
darwin*)
|
|
CFLAGS="$CFLAGS -no-cpp-precomp -fno-common"
|
|
ELDFLAGS=
|
|
CLDWHOLEARCHIVE="-all_load"
|
|
CLDNOWHOLEARCHIVE=
|
|
LIB_SUFFIX=dylib
|
|
DEVMAPPER=yes
|
|
ODIRECT=no
|
|
DM_IOCTLS=no
|
|
SELINUX=no
|
|
FSADM=no
|
|
LVMIMPORTVDO=no
|
|
BLKDEACTIVATE=no
|
|
;;
|
|
*)
|
|
CLDFLAGS="${CLDFLAGS-"$LDFLAGS"}"
|
|
;;
|
|
esac
|
|
|
|
################################################################################
|
|
dnl -- Checks for programs.
|
|
AC_PROG_SED
|
|
AC_PROG_AWK
|
|
save_CFLAGS=$CFLAGS
|
|
save_CXXFLAGS=$CXXFLAGS
|
|
AC_PROG_CC
|
|
AC_PROG_CXX
|
|
CFLAGS=$save_CFLAGS
|
|
CXXFLAGS=$save_CXXFLAGS
|
|
PATH_SBIN="$PATH:/usr/sbin:/sbin"
|
|
|
|
dnl probably no longer needed in 2008, but...
|
|
AC_PROG_GCC_TRADITIONAL
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
AC_PROG_MAKE_SET
|
|
AC_PROG_MKDIR_P
|
|
AC_PROG_RANLIB
|
|
AC_CHECK_TOOL(AR, ar)
|
|
AC_PATH_TOOL(CFLOW_CMD, cflow)
|
|
AC_PATH_TOOL(CSCOPE_CMD, cscope)
|
|
AC_PATH_TOOL(CHMOD, chmod)
|
|
AC_PATH_TOOL(WC, wc)
|
|
AC_PATH_TOOL(SORT, sort)
|
|
|
|
################################################################################
|
|
dnl -- Check for header files.
|
|
AC_HEADER_DIRENT
|
|
AC_HEADER_MAJOR
|
|
AC_HEADER_STDBOOL
|
|
AC_HEADER_STDC
|
|
AC_HEADER_SYS_WAIT
|
|
AC_HEADER_TIME
|
|
|
|
AC_CHECK_HEADERS([assert.h ctype.h dirent.h errno.h fcntl.h float.h \
|
|
getopt.h inttypes.h langinfo.h libgen.h limits.h locale.h paths.h \
|
|
signal.h stdarg.h stddef.h stdio.h stdlib.h string.h sys/file.h \
|
|
sys/ioctl.h syslog.h sys/mman.h sys/param.h sys/resource.h sys/stat.h \
|
|
sys/time.h sys/types.h sys/utsname.h sys/wait.h time.h \
|
|
unistd.h], , [AC_MSG_ERROR(bailing out)])
|
|
|
|
AC_CHECK_HEADERS(termios.h sys/statvfs.h sys/timerfd.h sys/vfs.h linux/magic.h linux/fiemap.h)
|
|
AC_CHECK_HEADERS(libaio.h,LVM_NEEDS_LIBAIO_WARN=,LVM_NEEDS_LIBAIO_WARN=y)
|
|
case "$host_os" in
|
|
linux*)
|
|
AC_CHECK_HEADERS(asm/byteorder.h linux/fs.h malloc.h,,AC_MSG_ERROR(bailing out)) ;;
|
|
darwin*)
|
|
AC_CHECK_HEADERS(machine/endian.h sys/disk.h,,AC_MSG_ERROR(bailing out)) ;;
|
|
esac
|
|
|
|
################################################################################
|
|
dnl -- Check for typedefs, structures, and compiler characteristics.
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
AC_CHECK_MEMBERS([struct stat.st_rdev])
|
|
AC_CHECK_TYPES([ptrdiff_t])
|
|
AC_STRUCT_ST_BLOCKS
|
|
AC_STRUCT_TM
|
|
AC_TYPE_OFF_T
|
|
AC_TYPE_PID_T
|
|
AC_TYPE_SIGNAL
|
|
AC_TYPE_SIZE_T
|
|
AC_TYPE_MODE_T
|
|
AC_TYPE_INT8_T
|
|
AC_TYPE_INT16_T
|
|
AC_TYPE_INT32_T
|
|
AC_TYPE_INT64_T
|
|
AC_TYPE_SSIZE_T
|
|
AC_TYPE_UID_T
|
|
AC_TYPE_UINT8_T
|
|
AC_TYPE_UINT16_T
|
|
AC_TYPE_UINT32_T
|
|
AC_TYPE_UINT64_T
|
|
AX_GCC_BUILTIN([__builtin_clz])
|
|
AX_GCC_BUILTIN([__builtin_clzll])
|
|
AX_GCC_BUILTIN([__builtin_ffs])
|
|
|
|
|
|
AC_DEFINE([_GNU_SOURCE], 1, [Define to get access to GNU/Linux extension])
|
|
AC_DEFINE([_REENTRANT], 1, [Define to use re-entrant thread safe versions])
|
|
|
|
|
|
################################################################################
|
|
dnl -- Check for functions
|
|
AC_CHECK_FUNCS([ftruncate gethostname getpagesize gettimeofday localtime_r \
|
|
memchr memset mkdir mkfifo munmap nl_langinfo pselect realpath rmdir setenv \
|
|
setlocale strcasecmp strchr strcspn strdup strerror strncasecmp strndup \
|
|
strrchr strspn strstr strtol strtoul uname], , [AC_MSG_ERROR(bailing out)])
|
|
AC_CHECK_FUNCS([ffs prlimit versionsort])
|
|
AC_FUNC_ALLOCA
|
|
AC_FUNC_CLOSEDIR_VOID
|
|
AC_FUNC_CHOWN
|
|
AC_FUNC_FORK
|
|
AC_FUNC_LSTAT
|
|
AC_FUNC_MALLOC
|
|
AC_FUNC_MEMCMP
|
|
AC_FUNC_MKTIME
|
|
AC_FUNC_MMAP
|
|
AC_FUNC_REALLOC
|
|
AC_FUNC_STAT
|
|
AC_FUNC_STRTOD
|
|
AC_FUNC_VPRINTF
|
|
|
|
################################################################################
|
|
dnl -- Disable dependency tracking
|
|
AC_MSG_CHECKING(whether to enable dependency tracking)
|
|
AC_ARG_ENABLE(dependency-tracking,
|
|
AS_HELP_STRING([--disable-dependency-tracking],
|
|
[speeds up one-time build.]),
|
|
USE_TRACKING=$enableval, USE_TRACKING=yes)
|
|
AC_MSG_RESULT($USE_TRACKING)
|
|
|
|
################################################################################
|
|
dnl -- Disable silence rules
|
|
AC_MSG_CHECKING(whether to build silently)
|
|
AC_ARG_ENABLE(silent-rules,
|
|
AS_HELP_STRING([--disable-silent-rules], [disable silent building]),
|
|
SILENT_RULES=$enableval, SILENT_RULES=yes)
|
|
AC_MSG_RESULT($SILENT_RULES)
|
|
|
|
|
|
################################################################################
|
|
dnl -- Enables statically-linked tools
|
|
AC_MSG_CHECKING(whether to use static linking)
|
|
AC_ARG_ENABLE(static_link,
|
|
AS_HELP_STRING([--enable-static_link],
|
|
[use this to link the tools to their libraries
|
|
statically (default is dynamic linking]),
|
|
STATIC_LINK=$enableval, STATIC_LINK=no)
|
|
AC_MSG_RESULT($STATIC_LINK)
|
|
|
|
################################################################################
|
|
dnl -- Check if compiler/linker supports PIE and RELRO
|
|
AC_TRY_CCFLAG([-pie], [HAVE_PIE], [], [])
|
|
AC_SUBST(HAVE_PIE)
|
|
AC_TRY_LDFLAGS([-Wl,-z,relro,-z,now], [HAVE_FULL_RELRO], [], [])
|
|
AC_SUBST(HAVE_FULL_RELRO)
|
|
|
|
################################################################################
|
|
dnl -- Prefix is /usr by default, the exec_prefix default is setup later
|
|
AC_PREFIX_DEFAULT(/usr)
|
|
|
|
################################################################################
|
|
dnl -- Clear default exec_prefix - install into /sbin rather than /usr/sbin
|
|
test "$exec_prefix" = NONE -a "$prefix" = NONE && exec_prefix=""
|
|
|
|
test "x$prefix" = xNONE && prefix=$ac_default_prefix
|
|
# Let make expand exec_prefix.
|
|
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
|
|
|
|
################################################################################
|
|
dnl -- Setup the ownership of the files
|
|
AC_MSG_CHECKING(file owner)
|
|
AC_ARG_WITH(user,
|
|
AS_HELP_STRING([--with-user=USER],
|
|
[set the owner of installed files [USER=]]),
|
|
OWNER=$withval)
|
|
AC_MSG_RESULT($OWNER)
|
|
test -n "$OWNER" && INSTALL="$INSTALL -o $OWNER"
|
|
|
|
################################################################################
|
|
dnl -- Setup the group ownership of the files
|
|
AC_MSG_CHECKING(group owner)
|
|
AC_ARG_WITH(group,
|
|
AS_HELP_STRING([--with-group=GROUP],
|
|
[set the group owner of installed files [GROUP=]]),
|
|
GROUP=$withval)
|
|
AC_MSG_RESULT($GROUP)
|
|
test -n "$GROUP" && INSTALL="$INSTALL -g $GROUP"
|
|
|
|
################################################################################
|
|
dnl -- Setup device node ownership
|
|
AC_MSG_CHECKING(device node uid)
|
|
|
|
AC_ARG_WITH(device-uid,
|
|
AS_HELP_STRING([--with-device-uid=UID],
|
|
[set the owner used for new device nodes [UID=0]]),
|
|
DM_DEVICE_UID=$withval, DM_DEVICE_UID=0)
|
|
AC_MSG_RESULT($DM_DEVICE_UID)
|
|
AC_DEFINE_UNQUOTED([DM_DEVICE_UID], [$DM_DEVICE_UID], [Define default owner for device node])
|
|
|
|
################################################################################
|
|
dnl -- Setup device group ownership
|
|
AC_MSG_CHECKING(device node gid)
|
|
|
|
AC_ARG_WITH(device-gid,
|
|
AS_HELP_STRING([--with-device-gid=GID],
|
|
[set the group used for new device nodes [GID=0]]),
|
|
DM_DEVICE_GID=$withval, DM_DEVICE_GID=0)
|
|
AC_MSG_RESULT($DM_DEVICE_GID)
|
|
AC_DEFINE_UNQUOTED([DM_DEVICE_GID], [$DM_DEVICE_GID], [Define default group for device node])
|
|
|
|
################################################################################
|
|
dnl -- Setup device mode
|
|
AC_MSG_CHECKING(device node mode)
|
|
|
|
AC_ARG_WITH(device-mode,
|
|
AS_HELP_STRING([--with-device-mode=MODE],
|
|
[set the mode used for new device nodes [MODE=0600]]),
|
|
DM_DEVICE_MODE=$withval, DM_DEVICE_MODE=0600)
|
|
AC_MSG_RESULT($DM_DEVICE_MODE)
|
|
AC_DEFINE_UNQUOTED([DM_DEVICE_MODE], [$DM_DEVICE_MODE], [Define default mode for device node])
|
|
|
|
AC_MSG_CHECKING(when to create device nodes)
|
|
AC_ARG_WITH(device-nodes-on,
|
|
AS_HELP_STRING([--with-device-nodes-on=ON],
|
|
[create nodes on resume or create [ON=resume]]),
|
|
ADD_NODE=$withval, ADD_NODE=resume)
|
|
case "$ADD_NODE" in
|
|
resume) add_on=DM_ADD_NODE_ON_RESUME;;
|
|
create) add_on=DM_ADD_NODE_ON_CREATE;;
|
|
*) AC_MSG_ERROR([--with-device-nodes-on parameter invalid]);;
|
|
esac
|
|
AC_MSG_RESULT(on $ADD_NODE)
|
|
AC_DEFINE_UNQUOTED([DEFAULT_DM_ADD_NODE], $add_on, [Define default node creation behavior with dmsetup create])
|
|
|
|
|
|
dnl -- Default settings for lvm.conf { devices/use_devicesfile }
|
|
AC_MSG_CHECKING(default for use_devicesfile)
|
|
AC_ARG_WITH(default-use-devices-file,
|
|
AS_HELP_STRING([--with-default-use-devices-file], [default for lvm.conf devices/use_devicesfile = [0]]),
|
|
DEFAULT_USE_DEVICES_FILE=$withval, DEFAULT_USE_DEVICES_FILE=0)
|
|
case "$DEFAULT_USE_DEVICES_FILE" in
|
|
0|1);;
|
|
*) AC_MSG_ERROR([--with-default-use-devices-file parameter invalid]);;
|
|
esac
|
|
AC_MSG_RESULT($DEFAULT_USE_DEVICES_FILE)
|
|
AC_DEFINE_UNQUOTED(DEFAULT_USE_DEVICES_FILE, [$DEFAULT_USE_DEVICES_FILE],
|
|
[Default for lvm.conf use_devicefile.])
|
|
|
|
AC_MSG_CHECKING(default name mangling)
|
|
AC_ARG_WITH(default-name-mangling,
|
|
AS_HELP_STRING([--with-default-name-mangling=MANGLING],
|
|
[default name mangling: auto/none/hex [auto]]),
|
|
MANGLING=$withval, MANGLING=auto)
|
|
case "$MANGLING" in
|
|
auto) mangling=DM_STRING_MANGLING_AUTO;;
|
|
no|none|disabled) mangling=DM_STRING_MANGLING_NONE;;
|
|
hex) mangling=DM_STRING_MANGLING_HEX;;
|
|
*) AC_MSG_ERROR([--with-default-name-mangling parameter invalid]);;
|
|
esac
|
|
AC_MSG_RESULT($MANGLING)
|
|
AC_DEFINE_UNQUOTED([DEFAULT_DM_NAME_MANGLING], $mangling, [Define default name mangling behaviour])
|
|
|
|
################################################################################
|
|
dnl -- snapshots inclusion type
|
|
AC_MSG_CHECKING(whether to include snapshots)
|
|
AC_ARG_WITH(snapshots,
|
|
AS_HELP_STRING([--with-snapshots=TYPE],
|
|
[snapshot support: internal/none [internal]]),
|
|
SNAPSHOTS=$withval, SNAPSHOTS=internal)
|
|
AC_MSG_RESULT($SNAPSHOTS)
|
|
|
|
case "$SNAPSHOTS" in
|
|
no|none|shared) ;;
|
|
internal) AC_DEFINE([SNAPSHOT_INTERNAL], 1,
|
|
[Define to 1 to include built-in support for snapshots.]) ;;
|
|
*) AC_MSG_ERROR([--with-snapshots parameter invalid]) ;;
|
|
esac
|
|
|
|
################################################################################
|
|
dnl -- mirrors inclusion type
|
|
AC_MSG_CHECKING(whether to include mirrors)
|
|
AC_ARG_WITH(mirrors,
|
|
AS_HELP_STRING([--with-mirrors=TYPE],
|
|
[mirror support: internal/none [internal]]),
|
|
MIRRORS=$withval, MIRRORS=internal)
|
|
AC_MSG_RESULT($MIRRORS)
|
|
|
|
case "$MIRRORS" in
|
|
no|none|shared) ;;
|
|
internal) AC_DEFINE([MIRRORED_INTERNAL], 1,
|
|
[Define to 1 to include built-in support for mirrors.]) ;;
|
|
*) AC_MSG_ERROR([--with-mirrors parameter invalid]) ;;
|
|
esac
|
|
|
|
################################################################################
|
|
dnl -- raid inclusion type
|
|
AC_ARG_WITH(default-mirror-segtype,
|
|
AS_HELP_STRING([--with-default-mirror-segtype=TYPE],
|
|
[default mirror segtype: raid1/mirror [raid1]]),
|
|
DEFAULT_MIRROR_SEGTYPE=$withval, DEFAULT_MIRROR_SEGTYPE="raid1")
|
|
AC_ARG_WITH(default-raid10-segtype,
|
|
AS_HELP_STRING([--with-default-raid10-segtype=TYPE],
|
|
[default mirror segtype: raid10/mirror [raid10]]),
|
|
DEFAULT_RAID10_SEGTYPE=$withval, DEFAULT_RAID10_SEGTYPE="raid10")
|
|
|
|
AC_DEFINE([RAID_INTERNAL], 1,
|
|
[Define to 1 to include built-in support for raid.])
|
|
|
|
AC_DEFINE_UNQUOTED([DEFAULT_MIRROR_SEGTYPE], ["$DEFAULT_MIRROR_SEGTYPE"],
|
|
[Default segtype used for mirror volumes.])
|
|
|
|
AC_DEFINE_UNQUOTED([DEFAULT_RAID10_SEGTYPE], ["$DEFAULT_RAID10_SEGTYPE"],
|
|
[Default segtype used for raid10 volumes.])
|
|
|
|
################################################################################
|
|
AC_ARG_WITH(default-sparse-segtype,
|
|
AS_HELP_STRING([--with-default-sparse-segtype=TYPE],
|
|
[default sparse segtype: thin/snapshot [thin]]),
|
|
[ case "$withval" in
|
|
thin|snapshot) DEFAULT_SPARSE_SEGTYPE=$withval ;;
|
|
*) AC_MSG_ERROR(--with-default-sparse-segtype parameter invalid) ;;
|
|
esac], DEFAULT_SPARSE_SEGTYPE="thin")
|
|
|
|
################################################################################
|
|
dnl -- thin provisioning
|
|
AC_MSG_CHECKING(whether to include thin provisioning)
|
|
AC_ARG_WITH(thin,
|
|
AS_HELP_STRING([--with-thin=TYPE],
|
|
[thin provisioning support: internal/none [internal]]),
|
|
THIN=$withval, THIN=internal)
|
|
AC_ARG_WITH(thin-check,
|
|
AS_HELP_STRING([--with-thin-check=PATH],
|
|
[thin_check tool: [autodetect]]),
|
|
THIN_CHECK_CMD=$withval, THIN_CHECK_CMD="autodetect")
|
|
AC_ARG_WITH(thin-dump,
|
|
AS_HELP_STRING([--with-thin-dump=PATH],
|
|
[thin_dump tool: [autodetect]]),
|
|
THIN_DUMP_CMD=$withval, THIN_DUMP_CMD="autodetect")
|
|
AC_ARG_WITH(thin-repair,
|
|
AS_HELP_STRING([--with-thin-repair=PATH],
|
|
[thin_repair tool: [autodetect]]),
|
|
THIN_REPAIR_CMD=$withval, THIN_REPAIR_CMD="autodetect")
|
|
AC_ARG_WITH(thin-restore,
|
|
AS_HELP_STRING([--with-thin-restore=PATH],
|
|
[thin_restore tool: [autodetect]]),
|
|
THIN_RESTORE_CMD=$withval, THIN_RESTORE_CMD="autodetect")
|
|
|
|
AC_MSG_RESULT($THIN)
|
|
|
|
case "$THIN" in
|
|
no|none) test "$DEFAULT_SPARSE_SEGTYPE" = "thin" && DEFAULT_SPARSE_SEGTYPE="snapshot" ;;
|
|
shared) ;;
|
|
internal) AC_DEFINE([THIN_INTERNAL], 1,
|
|
[Define to 1 to include built-in support for thin provisioning.]) ;;
|
|
*) AC_MSG_ERROR([--with-thin parameter invalid ($THIN)]) ;;
|
|
esac
|
|
|
|
AC_DEFINE_UNQUOTED([DEFAULT_SPARSE_SEGTYPE], ["$DEFAULT_SPARSE_SEGTYPE"],
|
|
[Default segtype used for sparse volumes.])
|
|
|
|
dnl -- thin_check needs-check flag
|
|
AC_ARG_ENABLE(thin_check_needs_check,
|
|
AS_HELP_STRING([--disable-thin_check_needs_check],
|
|
[required if thin_check version is < 0.3.0]),
|
|
THIN_CHECK_NEEDS_CHECK=$enableval, THIN_CHECK_NEEDS_CHECK=yes)
|
|
|
|
# Test if necessary thin tools are available
|
|
# if not - use plain defaults and warn user
|
|
case "$THIN" in
|
|
internal|shared)
|
|
# Empty means a config way to ignore thin checking
|
|
if test "$THIN_CHECK_CMD" = "autodetect"; then
|
|
AC_PATH_TOOL(THIN_CHECK_CMD, thin_check, [], [$PATH_SBIN])
|
|
if test -z "$THIN_CHECK_CMD"; then
|
|
AC_MSG_WARN([thin_check not found in path $PATH])
|
|
THIN_CHECK_CMD=/usr/sbin/thin_check
|
|
THIN_CONFIGURE_WARN=y
|
|
fi
|
|
fi
|
|
if test "$THIN_CHECK_NEEDS_CHECK" = yes && test "$THIN_CONFIGURE_WARN" != y ; then
|
|
THIN_CHECK_VSN=`"$THIN_CHECK_CMD" -V 2>/dev/null`
|
|
THIN_CHECK_VSN_MAJOR=`echo "$THIN_CHECK_VSN" | $AWK -F '.' '{print $1}'`
|
|
THIN_CHECK_VSN_MINOR=`echo "$THIN_CHECK_VSN" | $AWK -F '.' '{print $2}'`
|
|
|
|
if test -z "$THIN_CHECK_VSN_MAJOR" -o -z "$THIN_CHECK_VSN_MINOR"; then
|
|
AC_MSG_WARN([$THIN_CHECK_CMD: Bad version "$THIN_CHECK_VSN" found])
|
|
THIN_CHECK_VERSION_WARN=y
|
|
THIN_CHECK_NEEDS_CHECK=no
|
|
elif test "$THIN_CHECK_VSN_MAJOR" -eq 0 -a "$THIN_CHECK_VSN_MINOR" -lt 3; then
|
|
AC_MSG_WARN([$THIN_CHECK_CMD: Old version "$THIN_CHECK_VSN" found])
|
|
THIN_CHECK_VERSION_WARN=y
|
|
THIN_CHECK_NEEDS_CHECK=no
|
|
fi
|
|
fi
|
|
# Empty means a config way to ignore thin dumping
|
|
if test "$THIN_DUMP_CMD" = "autodetect"; then
|
|
AC_PATH_TOOL(THIN_DUMP_CMD, thin_dump, [], [$PATH_SBIN])
|
|
test -z "$THIN_DUMP_CMD" && {
|
|
AC_MSG_WARN(thin_dump not found in path $PATH)
|
|
THIN_DUMP_CMD=/usr/sbin/thin_dump
|
|
THIN_CONFIGURE_WARN=y
|
|
}
|
|
fi
|
|
# Empty means a config way to ignore thin repairing
|
|
if test "$THIN_REPAIR_CMD" = "autodetect"; then
|
|
AC_PATH_TOOL(THIN_REPAIR_CMD, thin_repair, [], [$PATH_SBIN])
|
|
test -z "$THIN_REPAIR_CMD" && {
|
|
AC_MSG_WARN(thin_repair not found in path $PATH)
|
|
THIN_REPAIR_CMD=/usr/sbin/thin_repair
|
|
THIN_CONFIGURE_WARN=y
|
|
}
|
|
fi
|
|
# Empty means a config way to ignore thin restoring
|
|
if test "$THIN_RESTORE_CMD" = "autodetect"; then
|
|
AC_PATH_TOOL(THIN_RESTORE_CMD, thin_restore, [], [$PATH_SBIN])
|
|
test -z "$THIN_RESTORE_CMD" && {
|
|
AC_MSG_WARN(thin_restore not found in path $PATH)
|
|
THIN_RESTORE_CMD=/usr/sbin/thin_restore
|
|
THIN_CONFIGURE_WARN=y
|
|
}
|
|
fi
|
|
|
|
AC_MSG_CHECKING([whether thin_check supports the needs-check flag])
|
|
AC_MSG_RESULT([$THIN_CHECK_NEEDS_CHECK])
|
|
if test "$THIN_CHECK_NEEDS_CHECK" = yes; then
|
|
AC_DEFINE([THIN_CHECK_NEEDS_CHECK], 1, [Define to 1 if the external 'thin_check' tool requires the --clear-needs-check-flag option])
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
AC_DEFINE_UNQUOTED([THIN_CHECK_CMD], ["$THIN_CHECK_CMD"],
|
|
[The path to 'thin_check', if available.])
|
|
|
|
AC_DEFINE_UNQUOTED([THIN_DUMP_CMD], ["$THIN_DUMP_CMD"],
|
|
[The path to 'thin_dump', if available.])
|
|
|
|
AC_DEFINE_UNQUOTED([THIN_REPAIR_CMD], ["$THIN_REPAIR_CMD"],
|
|
[The path to 'thin_repair', if available.])
|
|
|
|
AC_DEFINE_UNQUOTED([THIN_RESTORE_CMD], ["$THIN_RESTORE_CMD"],
|
|
[The path to 'thin_restore', if available.])
|
|
|
|
################################################################################
|
|
dnl -- cache inclusion type
|
|
AC_MSG_CHECKING(whether to include cache)
|
|
AC_ARG_WITH(cache,
|
|
AS_HELP_STRING([--with-cache=TYPE],
|
|
[cache support: internal/none [internal]]),
|
|
CACHE=$withval, CACHE="internal")
|
|
AC_ARG_WITH(cache-check,
|
|
AS_HELP_STRING([--with-cache-check=PATH],
|
|
[cache_check tool: [autodetect]]),
|
|
CACHE_CHECK_CMD=$withval, CACHE_CHECK_CMD="autodetect")
|
|
AC_ARG_WITH(cache-dump,
|
|
AS_HELP_STRING([--with-cache-dump=PATH],
|
|
[cache_dump tool: [autodetect]]),
|
|
CACHE_DUMP_CMD=$withval, CACHE_DUMP_CMD="autodetect")
|
|
AC_ARG_WITH(cache-repair,
|
|
AS_HELP_STRING([--with-cache-repair=PATH],
|
|
[cache_repair tool: [autodetect]]),
|
|
CACHE_REPAIR_CMD=$withval, CACHE_REPAIR_CMD="autodetect")
|
|
AC_ARG_WITH(cache-restore,
|
|
AS_HELP_STRING([--with-cache-restore=PATH],
|
|
[cache_restore tool: [autodetect]]),
|
|
CACHE_RESTORE_CMD=$withval, CACHE_RESTORE_CMD="autodetect")
|
|
AC_MSG_RESULT($CACHE)
|
|
|
|
case "$CACHE" in
|
|
no|none|shared) ;;
|
|
internal) AC_DEFINE([CACHE_INTERNAL], 1, [Define to 1 to include built-in support for cache.]) ;;
|
|
*) AC_MSG_ERROR([--with-cache parameter invalid]) ;;
|
|
esac
|
|
|
|
dnl -- cache_check needs-check flag
|
|
AC_ARG_ENABLE(cache_check_needs_check,
|
|
AS_HELP_STRING([--disable-cache_check_needs_check],
|
|
[required if cache_check version is < 0.5]),
|
|
CACHE_CHECK_NEEDS_CHECK=$enableval, CACHE_CHECK_NEEDS_CHECK=yes)
|
|
|
|
# Test if necessary cache tools are available
|
|
# if not - use plain defaults and warn user
|
|
case "$CACHE" in
|
|
internal|shared)
|
|
# Empty means a config way to ignore cache checking
|
|
if test "$CACHE_CHECK_CMD" = "autodetect"; then
|
|
AC_PATH_TOOL(CACHE_CHECK_CMD, cache_check, [], [$PATH_SBIN])
|
|
if test -z "$CACHE_CHECK_CMD"; then
|
|
AC_MSG_WARN([cache_check not found in path $PATH])
|
|
CACHE_CHECK_CMD=/usr/sbin/cache_check
|
|
CACHE_CONFIGURE_WARN=y
|
|
fi
|
|
fi
|
|
if test "$CACHE_CHECK_NEEDS_CHECK" = yes && test "$CACHE_CONFIGURE_WARN" != y ; then
|
|
$CACHE_CHECK_CMD -V 2>/dev/null >conftest.tmp
|
|
read -r CACHE_CHECK_VSN < conftest.tmp
|
|
IFS=.- read -r CACHE_CHECK_VSN_MAJOR CACHE_CHECK_VSN_MINOR CACHE_CHECK_VSN_PATCH LEFTOVER < conftest.tmp
|
|
rm -f conftest.tmp
|
|
|
|
# Require version >= 0.5.4 for --clear-needs-check-flag
|
|
if test -z "$CACHE_CHECK_VSN_MAJOR" \
|
|
|| test -z "$CACHE_CHECK_VSN_MINOR" \
|
|
|| test -z "$CACHE_CHECK_VSN_PATCH"; then
|
|
AC_MSG_WARN([$CACHE_CHECK_CMD: Bad version "$CACHE_CHECK_VSN" found])
|
|
CACHE_CHECK_VERSION_WARN=y
|
|
CACHE_CHECK_NEEDS_CHECK=no
|
|
elif test "$CACHE_CHECK_VSN_MAJOR" -eq 0 ; then
|
|
if test "$CACHE_CHECK_VSN_MINOR" -lt 5 \
|
|
|| test "$CACHE_CHECK_VSN_MINOR" -eq 5 -a "$CACHE_CHECK_VSN_PATCH" -lt 4; then
|
|
AC_MSG_WARN([$CACHE_CHECK_CMD: Old version "$CACHE_CHECK_VSN" found])
|
|
CACHE_CHECK_VERSION_WARN=y
|
|
CACHE_CHECK_NEEDS_CHECK=no
|
|
fi
|
|
if test "$CACHE_CHECK_VSN_MINOR" -lt 7 ; then
|
|
AC_MSG_WARN([$CACHE_CHECK_CMD: Old version "$CACHE_CHECK_VSN" does not support new cache format V2])
|
|
CACHE_CHECK_VERSION_WARN=y
|
|
fi
|
|
fi
|
|
fi
|
|
# Empty means a config way to ignore cache dumping
|
|
if test "$CACHE_DUMP_CMD" = "autodetect"; then
|
|
AC_PATH_TOOL(CACHE_DUMP_CMD, cache_dump, [], [$PATH_SBIN])
|
|
test -z "$CACHE_DUMP_CMD" && {
|
|
AC_MSG_WARN(cache_dump not found in path $PATH)
|
|
CACHE_DUMP_CMD=/usr/sbin/cache_dump
|
|
CACHE_CONFIGURE_WARN=y
|
|
}
|
|
fi
|
|
# Empty means a config way to ignore cache repairing
|
|
if test "$CACHE_REPAIR_CMD" = "autodetect"; then
|
|
AC_PATH_TOOL(CACHE_REPAIR_CMD, cache_repair, [], [$PATH_SBIN])
|
|
test -z "$CACHE_REPAIR_CMD" && {
|
|
AC_MSG_WARN(cache_repair not found in path $PATH)
|
|
CACHE_REPAIR_CMD=/usr/sbin/cache_repair
|
|
CACHE_CONFIGURE_WARN=y
|
|
}
|
|
fi
|
|
# Empty means a config way to ignore cache restoring
|
|
if test "$CACHE_RESTORE_CMD" = "autodetect"; then
|
|
AC_PATH_TOOL(CACHE_RESTORE_CMD, cache_restore, [], [$PATH_SBIN])
|
|
test -z "$CACHE_RESTORE_CMD" && {
|
|
AC_MSG_WARN(cache_restore not found in path $PATH)
|
|
CACHE_RESTORE_CMD=/usr/sbin/cache_restore
|
|
CACHE_CONFIGURE_WARN=y
|
|
}
|
|
fi
|
|
|
|
AC_MSG_CHECKING([whether cache_check supports the needs-check flag])
|
|
AC_MSG_RESULT([$CACHE_CHECK_NEEDS_CHECK])
|
|
if test "$CACHE_CHECK_NEEDS_CHECK" = yes; then
|
|
AC_DEFINE([CACHE_CHECK_NEEDS_CHECK], 1, [Define to 1 if the external 'cache_check' tool requires the --clear-needs-check-flag option])
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
AC_DEFINE_UNQUOTED([CACHE_CHECK_CMD], ["$CACHE_CHECK_CMD"],
|
|
[The path to 'cache_check', if available.])
|
|
|
|
AC_DEFINE_UNQUOTED([CACHE_DUMP_CMD], ["$CACHE_DUMP_CMD"],
|
|
[The path to 'cache_dump', if available.])
|
|
|
|
AC_DEFINE_UNQUOTED([CACHE_REPAIR_CMD], ["$CACHE_REPAIR_CMD"],
|
|
[The path to 'cache_repair', if available.])
|
|
|
|
AC_DEFINE_UNQUOTED([CACHE_RESTORE_CMD], ["$CACHE_RESTORE_CMD"],
|
|
[The path to 'cache_restore', if available.])
|
|
|
|
################################################################################
|
|
dnl -- cache inclusion type
|
|
AC_MSG_CHECKING(whether to include vdo)
|
|
AC_ARG_WITH(vdo,
|
|
AS_HELP_STRING([--with-vdo=TYPE],
|
|
[vdo support: internal/none [internal]]),
|
|
VDO=$withval, VDO="internal")
|
|
|
|
AC_MSG_RESULT($VDO)
|
|
|
|
AC_ARG_WITH(vdo-format,
|
|
AS_HELP_STRING([--with-vdo-format=PATH],
|
|
[vdoformat tool: [autodetect]]),
|
|
VDO_FORMAT_CMD=$withval, VDO_FORMAT_CMD="autodetect")
|
|
case "$VDO" in
|
|
no|none) ;;
|
|
internal)
|
|
AC_DEFINE([VDO_INTERNAL], 1, [Define to 1 to include built-in support for vdo.])
|
|
if test "$VDO_FORMAT_CMD" = "autodetect"; then
|
|
AC_PATH_TOOL(VDO_FORMAT_CMD, vdoformat, [], [$PATH])
|
|
if test -z "$VDO_FORMAT_CMD"; then
|
|
AC_MSG_WARN([vdoformat not found in path $PATH])
|
|
VDO_FORMAT_CMD=/usr/bin/vdoformat
|
|
VDO_CONFIGURE_WARN=y
|
|
fi
|
|
fi
|
|
;;
|
|
*) AC_MSG_ERROR([--with-vdo parameter invalid]) ;;
|
|
esac
|
|
|
|
AC_DEFINE_UNQUOTED([VDO_FORMAT_CMD], ["$VDO_FORMAT_CMD"],
|
|
[The path to 'vdoformat', if available.])
|
|
#
|
|
# Do we need to use the API??
|
|
# Do we want to link lvm2 with a big library for vdoformating ?
|
|
#
|
|
#AC_ARG_WITH(vdo-include,
|
|
# AS_HELP_STRING([--with-vdo-include=PATH],
|
|
# [vdo support: Path to utils headers: [/usr/include/vdo/utils]]),
|
|
# VDO_INCLUDE=$withval, VDO_INCLUDE="/usr/include/vdo/utils")
|
|
#AC_MSG_RESULT($VDO_INCLUDE)
|
|
#
|
|
#AC_ARG_WITH(vdo-lib,
|
|
# AS_HELP_STRING([--with-vdo-lib=PATH],
|
|
# [vdo support: Path to utils lib: [/usr/lib]]),
|
|
# VDO_LIB=$withval, VDO_LIB="/usr/lib")
|
|
#AC_MSG_RESULT($VDO_LIB)
|
|
|
|
################################################################################
|
|
dnl -- writecache inclusion type
|
|
AC_MSG_CHECKING(whether to include writecache)
|
|
AC_ARG_WITH(writecache,
|
|
AS_HELP_STRING([--with-writecache=TYPE],
|
|
[writecache support: internal/none [internal]]),
|
|
WRITECACHE=$withval, WRITECACHE="internal")
|
|
|
|
AC_MSG_RESULT($WRITECACHE)
|
|
|
|
case "$WRITECACHE" in
|
|
no|none) ;;
|
|
internal)
|
|
AC_DEFINE([WRITECACHE_INTERNAL], 1, [Define to 1 to include built-in support for writecache.])
|
|
;;
|
|
*) AC_MSG_ERROR([--with-writecache parameter invalid]) ;;
|
|
esac
|
|
|
|
################################################################################
|
|
dnl -- integrity inclusion type
|
|
AC_MSG_CHECKING(whether to include integrity)
|
|
AC_ARG_WITH(integrity,
|
|
AS_HELP_STRING([--with-integrity=TYPE],
|
|
[integrity support: internal/none [internal]]),
|
|
INTEGRITY=$withval, INTEGRITY="internal")
|
|
|
|
AC_MSG_RESULT($INTEGRITY)
|
|
|
|
case "$INTEGRITY" in
|
|
no|none) ;;
|
|
internal)
|
|
AC_DEFINE([INTEGRITY_INTERNAL], 1, [Define to 1 to include built-in support for integrity.])
|
|
;;
|
|
*) AC_MSG_ERROR([--with-integrity parameter invalid]) ;;
|
|
esac
|
|
|
|
################################################################################
|
|
# Allow users to override default location for libaio
|
|
# there seems to be no pkg-config support available
|
|
AIO_CFLAGS=
|
|
AIO_LIBS=${AIO_LIBS:--laio}
|
|
AC_ARG_VAR([AIO_CFLAGS], [C compiler flags for AIO])
|
|
AC_ARG_VAR([AIO_LIBS], [linker flags for AIO])
|
|
|
|
################################################################################
|
|
dnl -- Disable readline
|
|
AC_ARG_ENABLE([readline],
|
|
AS_HELP_STRING([--disable-readline], [disable readline support]),
|
|
READLINE=$enableval, READLINE=maybe)
|
|
|
|
################################################################################
|
|
dnl -- Disable editline
|
|
AC_ARG_ENABLE([editline],
|
|
AS_HELP_STRING([--enable-editline], [enable editline support]),
|
|
EDITLINE=$enableval, EDITLINE=no)
|
|
|
|
################################################################################
|
|
dnl -- Disable realtime clock support
|
|
AC_MSG_CHECKING(whether to enable realtime support)
|
|
AC_ARG_ENABLE(realtime,
|
|
AS_HELP_STRING([--disable-realtime], [disable realtime clock support]),
|
|
REALTIME=$enableval, REALTIME=yes)
|
|
AC_MSG_RESULT($REALTIME)
|
|
|
|
################################################################################
|
|
dnl -- disable OCF resource agents
|
|
AC_MSG_CHECKING(whether to enable OCF resource agents)
|
|
AC_ARG_ENABLE(ocf,
|
|
AS_HELP_STRING([--enable-ocf],
|
|
[enable Open Cluster Framework (OCF) compliant resource agents]),
|
|
OCF=$enableval, OCF=no)
|
|
AC_MSG_RESULT($OCF)
|
|
AC_ARG_WITH(ocfdir,
|
|
AS_HELP_STRING([--with-ocfdir=DIR],
|
|
[install OCF files in [PREFIX/lib/ocf/resource.d/lvm2]]),
|
|
OCFDIR=$withval, OCFDIR='${prefix}/lib/ocf/resource.d/lvm2')
|
|
|
|
################################################################################
|
|
dnl -- Init pkg-config with dummy invokation:
|
|
dnl -- this is required because PKG_CHECK_MODULES macro is expanded
|
|
dnl -- to initialize the pkg-config environment only at the first invokation,
|
|
dnl -- that would be conditional in this configure.in.
|
|
pkg_config_init() {
|
|
if test "$PKGCONFIG_INIT" != 1; then
|
|
PKG_CHECK_MODULES(PKGCONFIGINIT, pkgconfiginit, [],
|
|
[AC_MSG_RESULT([pkg-config initialized])])
|
|
PKGCONFIG_INIT=1
|
|
fi
|
|
}
|
|
|
|
################################################################################
|
|
AC_MSG_CHECKING(for default run directory)
|
|
RUN_DIR="/run"
|
|
test -d "/run" || RUN_DIR="/var/run"
|
|
AC_MSG_RESULT($RUN_DIR)
|
|
dnl -- Set up pidfile and run directory
|
|
AH_TEMPLATE(DEFAULT_PID_DIR)
|
|
AC_ARG_WITH(default-pid-dir,
|
|
AS_HELP_STRING([--with-default-pid-dir=PID_DIR],
|
|
[default directory to keep PID files in [autodetect]]),
|
|
DEFAULT_PID_DIR="$withval", DEFAULT_PID_DIR=$RUN_DIR)
|
|
AC_DEFINE_UNQUOTED(DEFAULT_PID_DIR, ["$DEFAULT_PID_DIR"],
|
|
[Default directory to keep PID files in.])
|
|
|
|
AH_TEMPLATE(DEFAULT_DM_RUN_DIR, [Name of default DM run directory.])
|
|
AC_ARG_WITH(default-dm-run-dir,
|
|
AS_HELP_STRING([--with-default-dm-run-dir=DM_RUN_DIR],
|
|
[default DM run directory [autodetect]]),
|
|
DEFAULT_DM_RUN_DIR="$withval", DEFAULT_DM_RUN_DIR=$RUN_DIR)
|
|
AC_DEFINE_UNQUOTED(DEFAULT_DM_RUN_DIR, ["$DEFAULT_DM_RUN_DIR"],
|
|
[Default DM run directory.])
|
|
|
|
AH_TEMPLATE(DEFAULT_RUN_DIR, [Name of default LVM run directory.])
|
|
AC_ARG_WITH(default-run-dir,
|
|
AS_HELP_STRING([--with-default-run-dir=RUN_DIR],
|
|
[default LVM run directory [autodetect_run_dir/lvm]]),
|
|
DEFAULT_RUN_DIR="$withval", DEFAULT_RUN_DIR="$RUN_DIR/lvm")
|
|
AC_DEFINE_UNQUOTED(DEFAULT_RUN_DIR, ["$DEFAULT_RUN_DIR"],
|
|
[Default LVM run directory.])
|
|
|
|
################################################################################
|
|
dnl -- Build cluster mirror log daemon
|
|
AC_MSG_CHECKING(whether to build cluster mirror log daemon)
|
|
AC_ARG_ENABLE(cmirrord,
|
|
AS_HELP_STRING([--enable-cmirrord],
|
|
[enable the cluster mirror log daemon]),
|
|
CMIRRORD=$enableval, CMIRRORD=no)
|
|
AC_MSG_RESULT($CMIRRORD)
|
|
|
|
BUILD_CMIRRORD=$CMIRRORD
|
|
|
|
################################################################################
|
|
dnl -- cmirrord pidfile
|
|
if test "$BUILD_CMIRRORD" = yes; then
|
|
AC_ARG_WITH(cmirrord-pidfile,
|
|
AS_HELP_STRING([--with-cmirrord-pidfile=PATH],
|
|
[cmirrord pidfile [PID_DIR/cmirrord.pid]]),
|
|
CMIRRORD_PIDFILE=$withval,
|
|
CMIRRORD_PIDFILE="$DEFAULT_PID_DIR/cmirrord.pid")
|
|
AC_DEFINE_UNQUOTED(CMIRRORD_PIDFILE, ["$CMIRRORD_PIDFILE"],
|
|
[Path to cmirrord pidfile.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Look for corosync libraries if required.
|
|
if [[ "$BUILD_CMIRRORD" = yes ]]; then
|
|
pkg_config_init
|
|
|
|
if test "$HAVE_CPG" != yes; then
|
|
PKG_CHECK_MODULES(CPG, libcpg)
|
|
fi
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Enable debugging
|
|
AC_MSG_CHECKING(whether to enable debugging)
|
|
AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug], [enable debugging]),
|
|
DEBUG=$enableval, DEBUG=no)
|
|
AC_MSG_RESULT($DEBUG)
|
|
|
|
dnl -- Normally turn off optimisation for debug builds
|
|
if test "$DEBUG" = yes; then
|
|
COPTIMISE_FLAG=
|
|
else
|
|
CSCOPE_CMD=
|
|
fi
|
|
|
|
dnl -- Check if compiler supports -Wjump-misses-init
|
|
AC_TRY_CCFLAG([-Wjump-misses-init], [HAVE_WJUMP], [], [])
|
|
AC_SUBST(HAVE_WJUMP)
|
|
AC_TRY_CCFLAG([-Wclobbered], [HAVE_WCLOBBERED], [], [])
|
|
AC_SUBST(HAVE_WCLOBBERED)
|
|
AC_TRY_CCFLAG([-Wsync-nand], [HAVE_WSYNCNAND], [], [])
|
|
AC_SUBST(HAVE_WSYNCNAND)
|
|
|
|
################################################################################
|
|
dnl -- Override optimisation
|
|
AC_MSG_CHECKING(for C optimisation flag)
|
|
AC_ARG_WITH(optimisation,
|
|
AS_HELP_STRING([--with-optimisation=OPT],
|
|
[C optimisation flag [OPT=-O2]]),
|
|
COPTIMISE_FLAG=$withval)
|
|
AC_MSG_RESULT($COPTIMISE_FLAG)
|
|
|
|
################################################################################
|
|
dnl -- Symbol versioning
|
|
AC_MSG_CHECKING(whether to use symbol versioning)
|
|
AC_ARG_WITH(symvers,
|
|
AS_HELP_STRING([--with-symvers=STYLE],
|
|
[use symbol versioning of the shared library [default=gnu]]),
|
|
[ case "$withval" in
|
|
gnu|no) symvers=$withval ;;
|
|
*) AC_MSG_ERROR(--with-symvers parameter invalid) ;;
|
|
esac], symvers=gnu)
|
|
AC_MSG_RESULT($symvers)
|
|
|
|
if test "$GCC" = "yes" && test "$symvers" = "gnu" ; then
|
|
AC_DEFINE(GNU_SYMVER, 1,
|
|
[Define to use GNU versioning in the shared library.])
|
|
case "$host_os" in
|
|
linux*)
|
|
CLDFLAGS="${CLDFLAGS-"$LDFLAGS"} -Wl,--version-script,.export.sym"
|
|
LDDEPS="$LDDEPS .export.sym"
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Enable profiling
|
|
AC_MSG_CHECKING(whether to gather gcov profiling data)
|
|
AC_ARG_ENABLE(profiling,
|
|
AS_HELP_STRING([--enable-profiling],
|
|
[gather gcov profiling data]),
|
|
PROFILING=$enableval, PROFILING=no)
|
|
AC_MSG_RESULT($PROFILING)
|
|
|
|
if test "$PROFILING" = yes; then
|
|
COPTIMISE_FLAG="$COPTIMISE_FLAG -fprofile-arcs -ftest-coverage"
|
|
AC_PATH_TOOL(LCOV, lcov)
|
|
AC_PATH_TOOL(GENHTML, genhtml)
|
|
test -z "$LCOV" -o -z "$GENHTML" && AC_MSG_ERROR([lcov and genhtml are required for profiling])
|
|
AC_PATH_TOOL(GENPNG, genpng)
|
|
if test -n "$GENPNG"; then
|
|
AC_MSG_CHECKING([whether $GENPNG has all required modules])
|
|
if "$GENPNG" --help > /dev/null 2>&1 ; then
|
|
AC_MSG_RESULT(ok)
|
|
GENHTML="$GENHTML --frames"
|
|
else
|
|
AC_MSG_RESULT([not supported])
|
|
AC_MSG_WARN([GD.pm perl module is not installed])
|
|
GENPNG=
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Set LVM2 testsuite data
|
|
TESTSUITE_DATA='${datarootdir}/lvm2-testsuite'
|
|
# double eval needed ${datarootdir} -> ${prefix}/share -> real path
|
|
AC_DEFINE_UNQUOTED(TESTSUITE_DATA, ["$(eval echo $(eval echo $TESTSUITE_DATA))"], [Path to testsuite data])
|
|
|
|
################################################################################
|
|
dnl -- Enable valgrind awareness of memory pools
|
|
AC_MSG_CHECKING(whether to enable valgrind awareness of pools)
|
|
AC_ARG_ENABLE(valgrind_pool,
|
|
AS_HELP_STRING([--enable-valgrind-pool],
|
|
[enable valgrind awareness of pools]),
|
|
VALGRIND_POOL=$enableval, VALGRIND_POOL=no)
|
|
AC_MSG_RESULT($VALGRIND_POOL)
|
|
|
|
pkg_config_init
|
|
PKG_CHECK_MODULES(VALGRIND, valgrind, [HAVE_VALGRIND=yes], [if test x$VALGRIND_POOL = xyes; then AC_MSG_ERROR(bailing out); fi])
|
|
AC_SUBST(VALGRIND_CFLAGS)
|
|
|
|
if test x$HAVE_VALGRIND = xyes; then
|
|
AC_DEFINE([HAVE_VALGRIND], 1, [valgrind.h found])
|
|
fi
|
|
|
|
if test x$VALGRIND_POOL = xyes; then
|
|
AC_DEFINE([VALGRIND_POOL], 1, [Enable a valgrind aware build of pool])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Disable devmapper
|
|
AC_MSG_CHECKING(whether to use device-mapper)
|
|
AC_ARG_ENABLE(devmapper,
|
|
AS_HELP_STRING([--disable-devmapper],
|
|
[disable LVM2 device-mapper interaction]),
|
|
DEVMAPPER=$enableval)
|
|
AC_MSG_RESULT($DEVMAPPER)
|
|
|
|
if test "$DEVMAPPER" = yes; then
|
|
AC_DEFINE([DEVMAPPER_SUPPORT], 1, [Define to 1 to enable LVM2 device-mapper interaction.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Build lvmpolld
|
|
AC_MSG_CHECKING(whether to build lvmpolld)
|
|
AC_ARG_ENABLE(lvmpolld,
|
|
AS_HELP_STRING([--enable-lvmpolld],
|
|
[enable the LVM Polling Daemon]),
|
|
LVMPOLLD=$enableval, LVMPOLLD=no)
|
|
test -n "$LVMPOLLD" && BUILD_LVMPOLLD=$LVMPOLLD
|
|
AC_MSG_RESULT($BUILD_LVMPOLLD)
|
|
|
|
################################################################################
|
|
BUILD_LVMLOCKD=no
|
|
|
|
dnl -- Build lvmlockdsanlock
|
|
AC_MSG_CHECKING(whether to build lvmlockdsanlock)
|
|
AC_ARG_ENABLE(lvmlockd-sanlock,
|
|
AS_HELP_STRING([--enable-lvmlockd-sanlock],
|
|
[enable the LVM lock daemon using sanlock]),
|
|
LOCKDSANLOCK=$enableval, LOCKDSANLOCK=no)
|
|
AC_MSG_RESULT($LOCKDSANLOCK)
|
|
|
|
BUILD_LOCKDSANLOCK=$LOCKDSANLOCK
|
|
|
|
dnl -- Look for sanlock libraries
|
|
if test "$BUILD_LOCKDSANLOCK" = yes; then
|
|
PKG_CHECK_MODULES(LOCKD_SANLOCK, libsanlock_client >= 3.3.0, [HAVE_LOCKD_SANLOCK=yes], $bailout)
|
|
AC_DEFINE([LOCKDSANLOCK_SUPPORT], 1, [Define to 1 to include code that uses lvmlockd sanlock option.])
|
|
BUILD_LVMLOCKD=yes
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Build lvmlockddlm
|
|
AC_MSG_CHECKING(whether to build lvmlockddlm)
|
|
AC_ARG_ENABLE(lvmlockd-dlm,
|
|
AS_HELP_STRING([--enable-lvmlockd-dlm],
|
|
[enable the LVM lock daemon using dlm]),
|
|
LOCKDDLM=$enableval, LOCKDDLM=no)
|
|
AC_MSG_RESULT($LOCKDDLM)
|
|
|
|
BUILD_LOCKDDLM=$LOCKDDLM
|
|
|
|
dnl -- Look for dlm libraries
|
|
if test "$BUILD_LOCKDDLM" = yes; then
|
|
PKG_CHECK_MODULES(LOCKD_DLM, libdlm, [HAVE_LOCKD_DLM=yes], $bailout)
|
|
AC_DEFINE([LOCKDDLM_SUPPORT], 1, [Define to 1 to include code that uses lvmlockd dlm option.])
|
|
BUILD_LVMLOCKD=yes
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Build lvmlockddlmcontrol
|
|
AC_MSG_CHECKING(whether to build lvmlockddlmcontrol)
|
|
AC_ARG_ENABLE(lvmlockd-dlmcontrol,
|
|
AS_HELP_STRING([--enable-lvmlockd-dlmcontrol],
|
|
[enable lvmlockd remote refresh using libdlmcontrol]),
|
|
LOCKDDLM_CONTROL=$enableval, LOCKDDLM_CONTROL=no)
|
|
AC_MSG_RESULT($LOCKDDLM_CONTROL)
|
|
|
|
BUILD_LOCKDDLM_CONTROL=$LOCKDDLM_CONTROL
|
|
|
|
dnl -- Look for libdlmcontrol libraries
|
|
if test "$BUILD_LOCKDDLM_CONTROL" = yes; then
|
|
PKG_CHECK_MODULES(LOCKD_DLM_CONTROL, libdlmcontrol >= 3.2, [HAVE_LOCKD_DLM_CONTROL=yes], $bailout)
|
|
AC_DEFINE([LOCKDDLM_CONTROL_SUPPORT], 1, [Define to 1 to include code that uses lvmlockd dlm control option.])
|
|
BUILD_LVMLOCKD=yes
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Build lvmlockdidm
|
|
AC_MSG_CHECKING(whether to build lvmlockdidm)
|
|
AC_ARG_ENABLE(lvmlockd-idm,
|
|
AS_HELP_STRING([--enable-lvmlockd-idm],
|
|
[enable the LVM lock daemon using idm]),
|
|
LOCKDIDM=$enableval, LOCKDIDM=no)
|
|
AC_MSG_RESULT($LOCKDIDM)
|
|
|
|
BUILD_LOCKDIDM=$LOCKDIDM
|
|
|
|
dnl -- Look for Seagate IDM libraries
|
|
if test "$BUILD_LOCKDIDM" = yes; then
|
|
PKG_CHECK_MODULES(LOCKD_IDM, libseagate_ilm >= 0.1.0, [HAVE_LOCKD_IDM=yes], $bailout)
|
|
PKG_CHECK_EXISTS(blkid >= 2.24, [HAVE_LOCKD_IDM=yes], $bailout)
|
|
AC_DEFINE([LOCKDIDM_SUPPORT], 1, [Define to 1 to include code that uses lvmlockd IDM option.])
|
|
BUILD_LVMLOCKD=yes
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Build lvmlockd
|
|
AC_MSG_CHECKING(whether to build lvmlockd)
|
|
AC_MSG_RESULT($BUILD_LVMLOCKD)
|
|
|
|
if test "$BUILD_LVMLOCKD" = yes; then
|
|
AS_IF([test "$LVMPOLLD" = no], [AC_MSG_ERROR([cannot build lvmlockd with --disable-lvmpolld.])])
|
|
AS_IF([test "$BUILD_LVMPOLLD" = no], [BUILD_LVMPOLLD=yes; AC_MSG_WARN([Enabling lvmpolld - required by lvmlockd.])])
|
|
AC_MSG_CHECKING([defaults for use_lvmlockd])
|
|
AC_ARG_ENABLE(use_lvmlockd,
|
|
AS_HELP_STRING([--disable-use-lvmlockd],
|
|
[disable usage of LVM lock daemon]),
|
|
[case ${enableval} in
|
|
yes) DEFAULT_USE_LVMLOCKD=1 ;;
|
|
*) DEFAULT_USE_LVMLOCKD=0 ;;
|
|
esac], DEFAULT_USE_LVMLOCKD=1)
|
|
AC_MSG_RESULT($DEFAULT_USE_LVMLOCKD)
|
|
AC_DEFINE([LVMLOCKD_SUPPORT], 1, [Define to 1 to include code that uses lvmlockd.])
|
|
|
|
AC_ARG_WITH(lvmlockd-pidfile,
|
|
AS_HELP_STRING([--with-lvmlockd-pidfile=PATH],
|
|
[lvmlockd pidfile [PID_DIR/lvmlockd.pid]]),
|
|
LVMLOCKD_PIDFILE=$withval,
|
|
LVMLOCKD_PIDFILE="$DEFAULT_PID_DIR/lvmlockd.pid")
|
|
AC_DEFINE_UNQUOTED(LVMLOCKD_PIDFILE, ["$LVMLOCKD_PIDFILE"],
|
|
[Path to lvmlockd pidfile.])
|
|
else
|
|
DEFAULT_USE_LVMLOCKD=0
|
|
fi
|
|
AC_DEFINE_UNQUOTED(DEFAULT_USE_LVMLOCKD, [$DEFAULT_USE_LVMLOCKD],
|
|
[Use lvmlockd by default.])
|
|
|
|
################################################################################
|
|
dnl -- Check lvmpolld
|
|
if test "$BUILD_LVMPOLLD" = yes; then
|
|
AC_MSG_CHECKING([defaults for use_lvmpolld])
|
|
AC_ARG_ENABLE(use_lvmpolld,
|
|
AS_HELP_STRING([--disable-use-lvmpolld],
|
|
[disable usage of LVM Poll Daemon]),
|
|
[case ${enableval} in
|
|
yes) DEFAULT_USE_LVMPOLLD=1 ;;
|
|
*) DEFAULT_USE_LVMPOLLD=0 ;;
|
|
esac], DEFAULT_USE_LVMPOLLD=1)
|
|
AC_MSG_RESULT($DEFAULT_USE_LVMPOLLD)
|
|
AC_DEFINE([LVMPOLLD_SUPPORT], 1, [Define to 1 to include code that uses lvmpolld.])
|
|
|
|
AC_ARG_WITH(lvmpolld-pidfile,
|
|
AS_HELP_STRING([--with-lvmpolld-pidfile=PATH],
|
|
[lvmpolld pidfile [PID_DIR/lvmpolld.pid]]),
|
|
LVMPOLLD_PIDFILE=$withval,
|
|
LVMPOLLD_PIDFILE="$DEFAULT_PID_DIR/lvmpolld.pid")
|
|
AC_DEFINE_UNQUOTED(LVMPOLLD_PIDFILE, ["$LVMPOLLD_PIDFILE"],
|
|
[Path to lvmpolld pidfile.])
|
|
else
|
|
DEFAULT_USE_LVMPOLLD=0
|
|
fi
|
|
AC_DEFINE_UNQUOTED(DEFAULT_USE_LVMPOLLD, [$DEFAULT_USE_LVMPOLLD],
|
|
[Use lvmpolld by default.])
|
|
|
|
################################################################################
|
|
dnl -- Check dmfilemapd
|
|
AC_MSG_CHECKING(whether to build dmfilemapd)
|
|
AC_ARG_ENABLE(dmfilemapd, AS_HELP_STRING([--enable-dmfilemapd],
|
|
[enable the dmstats filemap daemon]),
|
|
BUILD_DMFILEMAPD=$enableval, BUILD_DMFILEMAPD=no)
|
|
AC_MSG_RESULT($BUILD_DMFILEMAPD)
|
|
AC_DEFINE([DMFILEMAPD], $BUILD_DMFILEMAPD, [Define to 1 to enable the device-mapper filemap daemon.])
|
|
|
|
dnl -- dmfilemapd requires FIEMAP
|
|
if test "$BUILD_DMFILEMAPD" = yes; then
|
|
AC_CHECK_HEADER([linux/fiemap.h], , [AC_MSG_ERROR(--enable-dmfilemapd requires fiemap.h)])
|
|
fi
|
|
|
|
SYSTEMD_MIN_VERSION=0
|
|
pkg_config_init
|
|
PKG_CHECK_EXISTS(systemd >= 205, [SYSTEMD_MIN_VERSION=205], [])
|
|
|
|
################################################################################
|
|
dnl -- Build notifydbus
|
|
PKG_CHECK_EXISTS(systemd >= 221, [SYSTEMD_MIN_VERSION=221], [])
|
|
AC_MSG_CHECKING(whether to build notifydbus)
|
|
AC_ARG_ENABLE(notify-dbus,
|
|
AS_HELP_STRING([--enable-notify-dbus],
|
|
[enable LVM notification using dbus]),
|
|
AS_IF([test "$enableval" = yes && test "$SYSTEMD_MIN_VERSION" -lt 221],
|
|
AC_MSG_ERROR([Enabling notify-dbus requires systemd >= 221]))
|
|
NOTIFYDBUS_SUPPORT=$enableval, NOTIFYDBUS_SUPPORT=no)
|
|
AC_MSG_RESULT($NOTIFYDBUS_SUPPORT)
|
|
|
|
AS_IF([test "$NOTIFYDBUS_SUPPORT" = yes],
|
|
AC_DEFINE([NOTIFYDBUS_SUPPORT], 1, [Define to 1 to include code that uses dbus notification.]))
|
|
|
|
################################################################################
|
|
dnl -- Build with systemd journaling when the header file is present
|
|
AS_IF([test "$SYSTEMD_MIN_VERSION" -ge 221], [SYSTEMD_JOURNAL_SUPPORT=maybe], [SYSTEMD_JOURNAL_SUPPORT=no])
|
|
AC_CHECK_HEADER([systemd/sd-journal.h],
|
|
[AS_IF([test "$SYSTEMD_JOURNAL_SUPPORT" != no], [SYSTEMD_JOURNAL_SUPPORT=yes])],
|
|
[SYSTEMD_JOURNAL_SUPPORT=no])
|
|
AC_MSG_CHECKING(whether to log to systemd journal)
|
|
AC_ARG_ENABLE(systemd-journal,
|
|
AS_HELP_STRING([--disable-systemd-journal],
|
|
[disable LVM systemd journaling]),
|
|
AS_IF([test "$enableval" = yes && test "$SYSTEMD_JOURNAL_SUPPORT" = no],
|
|
AC_MSG_ERROR([Enabling systemd journal requires systemd/sd-journal.h and systemd >= 221.]))
|
|
SYSTEMD_JOURNAL_SUPPORT=$enableval, [])
|
|
AC_MSG_RESULT($SYSTEMD_JOURNAL_SUPPORT)
|
|
|
|
AS_IF([test "$SYSTEMD_JOURNAL_SUPPORT" = yes],
|
|
AC_DEFINE([SYSTEMD_JOURNAL_SUPPORT], 1, [Define to 1 to include code that uses systemd journal.]))
|
|
|
|
################################################################################
|
|
dnl -- Build appmachineid when header file sd-id128.h is present
|
|
PKG_CHECK_EXISTS(systemd >= 234, [SYSTEMD_MIN_VERSION=234 APP_MACHINEID_SUPPORT=maybe], [APP_MACHINEID_SUPPORT=no])
|
|
AC_CHECK_HEADER([systemd/sd-id128.h],
|
|
[AS_IF([test "$APP_MACHINEID_SUPPORT" != no], [APP_MACHINEID_SUPPORT=yes])],
|
|
[APP_MACHINEID_SUPPORT=no])
|
|
AC_MSG_CHECKING(whether to support systemd appmachineid)
|
|
AC_ARG_ENABLE(app-machineid,
|
|
AC_HELP_STRING([--disable-app-machineid],
|
|
[disable LVM system ID using app-specific machine-id]),
|
|
AS_IF([test "$enableval" = yes && test "$APP_MACHINEID_SUPPORT" = no],
|
|
AC_MSG_ERROR([Enabling app machineid requires systemd/sd-id128.h and systemd >= 234.]))
|
|
APP_MACHINEID_SUPPORT=$enableval, [])
|
|
AC_MSG_RESULT($APP_MACHINEID_SUPPORT)
|
|
|
|
AS_IF([test "$APP_MACHINEID_SUPPORT" = yes],
|
|
AC_DEFINE([APP_MACHINEID_SUPPORT], 1, [Define to 1 to include code that uses libsystemd machine-id apis.]))
|
|
|
|
dnl -- Look for libsystemd libraries if needed
|
|
AS_IF([test "$NOTIFYDBUS_SUPPORT" = yes || test "$SYSTEMD_JOURNAL_SUPPORT" = yes || test "$APP_MACHINEID_SUPPORT" = yes ] ,[
|
|
pkg_config_init
|
|
PKG_CHECK_MODULES(SYSTEMD, [systemd], [SYSTEMD_LIBS="-lsystemd"], $bailout) ])
|
|
|
|
################################################################################
|
|
|
|
dnl -- Enable blkid wiping functionality
|
|
AC_ARG_ENABLE(blkid_wiping,
|
|
AS_HELP_STRING([--disable-blkid_wiping],
|
|
[disable libblkid detection of signatures when wiping and use native code instead]),
|
|
BLKID_WIPING=$enableval, BLKID_WIPING=maybe)
|
|
|
|
DEFAULT_USE_BLKID_WIPING=0
|
|
if test "$BLKID_WIPING" != no; then
|
|
pkg_config_init
|
|
PKG_CHECK_MODULES(BLKID, blkid >= 2.24,
|
|
[ BLKID_WIPING=yes
|
|
BLKID_PC="blkid"
|
|
DEFAULT_USE_BLKID_WIPING=1
|
|
AC_DEFINE([BLKID_WIPING_SUPPORT], 1, [Define to 1 to use libblkid detection of signatures when wiping.])
|
|
], [if test "$BLKID_WIPING" = maybe; then
|
|
BLKID_WIPING=no
|
|
else
|
|
AC_MSG_ERROR([bailing out... blkid library >= 2.24 is required])
|
|
fi])
|
|
fi
|
|
AC_MSG_CHECKING([whether to enable libblkid detection of signatures when wiping])
|
|
AC_MSG_RESULT($BLKID_WIPING)
|
|
AC_DEFINE_UNQUOTED(DEFAULT_USE_BLKID_WIPING, [$DEFAULT_USE_BLKID_WIPING],
|
|
[Use blkid wiping by default.])
|
|
|
|
################################################################################
|
|
dnl -- Enable udev-systemd protocol to instantiate a service for background jobs
|
|
dnl -- Requires systemd version 205 at least (including support for systemd-run)
|
|
AC_ARG_ENABLE(udev-systemd-background-jobs,
|
|
AS_HELP_STRING([--disable-udev-systemd-background-jobs],
|
|
[disable udev-systemd protocol to instantiate a service for background job]),
|
|
UDEV_SYSTEMD_BACKGROUND_JOBS=$enableval,
|
|
UDEV_SYSTEMD_BACKGROUND_JOBS=maybe)
|
|
|
|
if test "$UDEV_SYSTEMD_BACKGROUND_JOBS" != no; then
|
|
AS_IF([test "$SYSTEMD_MIN_VERSION" -ge 205],
|
|
UDEV_SYSTEMD_BACKGROUND_JOBS=yes,
|
|
AS_IF([test "$UDEV_SYSTEMD_BACKGROUND_JOBS" = maybe],
|
|
[UDEV_SYSTEMD_BACKGROUND_JOBS=no],
|
|
[AC_MSG_ERROR([bailing out... systemd >= 205 is required])]))
|
|
fi
|
|
|
|
AC_MSG_CHECKING(whether to use udev-systemd protocol for jobs in background)
|
|
AC_MSG_RESULT($UDEV_SYSTEMD_BACKGROUND_JOBS)
|
|
|
|
################################################################################
|
|
dnl -- Enable udev synchronisation
|
|
AC_MSG_CHECKING(whether to enable synchronisation with udev processing)
|
|
AC_ARG_ENABLE(udev_sync,
|
|
AS_HELP_STRING([--enable-udev_sync],
|
|
[enable synchronisation with udev processing]),
|
|
UDEV_SYNC=$enableval, UDEV_SYNC=no)
|
|
AC_MSG_RESULT($UDEV_SYNC)
|
|
|
|
if test "$UDEV_SYNC" = yes; then
|
|
pkg_config_init
|
|
PKG_CHECK_MODULES(UDEV, libudev >= 143, [UDEV_PC="libudev"])
|
|
AC_DEFINE([UDEV_SYNC_SUPPORT], 1, [Define to 1 to enable synchronisation with udev processing.])
|
|
|
|
AC_CHECK_LIB(udev, udev_device_get_is_initialized, AC_DEFINE([HAVE_LIBUDEV_UDEV_DEVICE_GET_IS_INITIALIZED], 1,
|
|
[Define to 1 if udev_device_get_is_initialized is available.]))
|
|
LIBS=$ac_check_lib_save_LIBS
|
|
fi
|
|
|
|
dnl -- Enable udev rules
|
|
AC_MSG_CHECKING(whether to enable installation of udev rules required for synchronisation)
|
|
AC_ARG_ENABLE(udev_rules,
|
|
AS_HELP_STRING([--enable-udev_rules],
|
|
[install rule files needed for udev synchronisation]),
|
|
UDEV_RULES=$enableval, UDEV_RULES=$UDEV_SYNC)
|
|
AC_MSG_RESULT($UDEV_RULES)
|
|
|
|
AC_MSG_CHECKING(whether to enable executable path detection in udev rules)
|
|
AC_ARG_ENABLE(udev_rule_exec_detection,
|
|
AS_HELP_STRING([--enable-udev-rule-exec-detection],
|
|
[enable executable path detection in udev rules]),
|
|
UDEV_RULE_EXEC_DETECTION=$enableval, UDEV_RULE_EXEC_DETECTION=no)
|
|
AC_MSG_RESULT($UDEV_RULE_EXEC_DETECTION)
|
|
|
|
dnl -- Check support for built-in blkid against target udev version
|
|
if test "$UDEV_RULE" != no ; then
|
|
AC_MSG_CHECKING(whether udev supports built-in blkid)
|
|
pkg_config_init
|
|
if $("$PKG_CONFIG" --atleast-version=176 libudev); then
|
|
UDEV_HAS_BUILTIN_BLKID=yes
|
|
else
|
|
UDEV_HAS_BUILTIN_BLKID=no
|
|
fi
|
|
AC_MSG_RESULT($UDEV_HAS_BUILTIN_BLKID)
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Compatible units suffix mode
|
|
AC_ARG_ENABLE(units-compat,
|
|
AS_HELP_STRING([--enable-units-compat],
|
|
[enable output compatibility with old versions that
|
|
that do not use KiB-style unit suffixes]),
|
|
UNITS_COMPAT=$enableval, UNITS_COMPAT=no)
|
|
|
|
if test "$UNITS_COMPAT" = yes; then
|
|
AC_DEFINE([DEFAULT_SI_UNIT_CONSISTENCY], 0, [Define to 0 to reinstate the pre-2.02.54 handling of unit suffixes.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Disable ioctl
|
|
AC_ARG_ENABLE(ioctl,
|
|
AS_HELP_STRING([--disable-ioctl],
|
|
[disable ioctl calls to device-mapper in the kernel]),
|
|
DM_IOCTLS=$enableval)
|
|
AS_IF([test "$DM_IOCTLS" = yes],
|
|
[AC_DEFINE([DM_IOCTLS], 1, [Define to enable ioctls calls to kernel])])
|
|
|
|
################################################################################
|
|
dnl -- Disable O_DIRECT
|
|
AC_MSG_CHECKING(whether to enable O_DIRECT)
|
|
AC_ARG_ENABLE(o_direct,
|
|
AS_HELP_STRING([--disable-o_direct], [disable O_DIRECT]),
|
|
ODIRECT=$enableval)
|
|
AC_MSG_RESULT($ODIRECT)
|
|
|
|
if test "$ODIRECT" = yes; then
|
|
AC_DEFINE([O_DIRECT_SUPPORT], 1, [Define to 1 to enable O_DIRECT support.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Enable cmdlib
|
|
AC_MSG_CHECKING(whether to compile liblvm2cmd.so)
|
|
AC_ARG_ENABLE(cmdlib,
|
|
AS_HELP_STRING([--enable-cmdlib], [build shared command library]),
|
|
CMDLIB=$enableval, CMDLIB=no)
|
|
AC_MSG_RESULT($CMDLIB)
|
|
AC_SUBST([LVM2CMD_LIB])
|
|
test "$CMDLIB" = yes \
|
|
&& LVM2CMD_LIB=-llvm2cmd \
|
|
|| LVM2CMD_LIB=
|
|
|
|
################################################################################
|
|
dnl -- Enable D-Bus service
|
|
AC_MSG_CHECKING(whether to include Python D-Bus support)
|
|
AC_ARG_ENABLE(dbus-service,
|
|
AS_HELP_STRING([--enable-dbus-service], [install D-Bus support]),
|
|
BUILD_LVMDBUSD=$enableval, BUILD_LVMDBUSD=no)
|
|
AC_MSG_RESULT($BUILD_LVMDBUSD)
|
|
AS_IF([test "$NOTIFYDBUS_SUPPORT" = yes && test "BUILD_LVMDBUSD" = yes],
|
|
[AC_MSG_WARN([Building D-Bus support without D-Bus notifications.])])
|
|
|
|
################################################################################
|
|
dnl -- Enable Python dbus library
|
|
|
|
if test "$BUILD_LVMDBUSD" = yes; then
|
|
unset am_cv_pathless_PYTHON ac_cv_path_PYTHON am_cv_python_platform
|
|
unset am_cv_python_pythondir am_cv_python_version am_cv_python_pyexecdir
|
|
unset ac_cv_path_PYTHON_CONFIG ac_cv_path_ac_pt_PYTHON_CONFIG
|
|
m4_define_default([_AM_PYTHON_INTERPRETER_LIST],[ python3 python2 python dnl
|
|
python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 dnl
|
|
python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 ])
|
|
AM_PATH_PYTHON([3])
|
|
PYTHON3=$PYTHON
|
|
test -z "$PYTHON3" && AC_MSG_ERROR([python3 is required for --enable-python3_bindings or --enable-dbus-service but cannot be found])
|
|
AC_PATH_TOOL(PYTHON3_CONFIG, python3-config)
|
|
test -z "$PYTHON3_CONFIG" && AC_MSG_ERROR([python3 headers are required for --enable-python3_bindings or --enable-dbus-service but cannot be found])
|
|
PYTHON3_INCDIRS=`"$PYTHON3_CONFIG" --includes`
|
|
PYTHON3_LIBDIRS=`"$PYTHON3_CONFIG" --libs`
|
|
PYTHON3DIR=$pythondir
|
|
test "$PYTHON3_BINDINGS" = yes && PYTHON_BINDINGS=yes
|
|
|
|
# To get this macro, install autoconf-archive package then run autoreconf
|
|
AC_PYTHON_MODULE([pyudev], [Required], python3)
|
|
AC_PYTHON_MODULE([dbus], [Required], python3)
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Enable pkg-config
|
|
AC_ARG_ENABLE(pkgconfig,
|
|
AS_HELP_STRING([--enable-pkgconfig], [install pkgconfig support]),
|
|
PKGCONFIG=$enableval, PKGCONFIG=no)
|
|
|
|
################################################################################
|
|
dnl -- Enable installation of writable files by user
|
|
AC_ARG_ENABLE(write_install,
|
|
AS_HELP_STRING([--enable-write_install],
|
|
[install user writable files]),
|
|
WRITE_INSTALL=$enableval, WRITE_INSTALL=no)
|
|
|
|
################################################################################
|
|
dnl -- Enable fsadm
|
|
AC_MSG_CHECKING(whether to install fsadm)
|
|
AC_ARG_ENABLE(fsadm, AS_HELP_STRING([--disable-fsadm], [disable fsadm]),
|
|
FSADM=$enableval)
|
|
AC_MSG_RESULT($FSADM)
|
|
|
|
|
|
################################################################################
|
|
dnl -- Enable lvm_import_vdo
|
|
AC_MSG_CHECKING(whether to install lvm_import_vdo)
|
|
AC_ARG_ENABLE(lvmimportvdo, AS_HELP_STRING([--disable-lvmimportvdo], [disable lvm_import_vdo]),
|
|
LVMIMPORTVDO=$enableval)
|
|
AC_MSG_RESULT($LVMIMPORTVDO)
|
|
|
|
################################################################################
|
|
dnl -- Enable blkdeactivate
|
|
AC_MSG_CHECKING(whether to install blkdeactivate)
|
|
AC_ARG_ENABLE(blkdeactivate, AS_HELP_STRING([--disable-blkdeactivate], [disable blkdeactivate]),
|
|
BLKDEACTIVATE=$enableval)
|
|
AC_MSG_RESULT($BLKDEACTIVATE)
|
|
|
|
################################################################################
|
|
dnl -- enable dmeventd handling
|
|
AC_MSG_CHECKING(whether to use dmeventd)
|
|
AC_ARG_ENABLE(dmeventd, AS_HELP_STRING([--enable-dmeventd],
|
|
[enable the device-mapper event daemon]),
|
|
BUILD_DMEVENTD=$enableval, BUILD_DMEVENTD=no)
|
|
AC_MSG_RESULT($BUILD_DMEVENTD)
|
|
|
|
dnl -- dmeventd currently requires internal mirror support
|
|
if test "$BUILD_DMEVENTD" = yes; then
|
|
if test "$MIRRORS" != internal; then
|
|
AC_MSG_ERROR([--enable-dmeventd currently requires --with-mirrors=internal])
|
|
fi
|
|
if test "$CMDLIB" = no; then
|
|
AC_MSG_ERROR([--enable-dmeventd requires --enable-cmdlib to be used as well])
|
|
fi
|
|
|
|
AC_DEFINE([DMEVENTD], 1, [Define to 1 to enable the device-mapper event daemon.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- getline included in recent libc
|
|
|
|
AC_CHECK_LIB(c, getline, AC_DEFINE([HAVE_GETLINE], 1,
|
|
[Define to 1 if getline is available.]))
|
|
|
|
################################################################################
|
|
dnl -- canonicalize_file_name included in recent libc
|
|
|
|
AC_CHECK_LIB(c, canonicalize_file_name,
|
|
AC_DEFINE([HAVE_CANONICALIZE_FILE_NAME], 1,
|
|
[Define to 1 if canonicalize_file_name is available.]))
|
|
|
|
################################################################################
|
|
dnl -- Check for dlopen
|
|
AC_CHECK_LIB(dl, dlopen,
|
|
[AC_DEFINE([HAVE_LIBDL], 1, [Define to 1 if dynamic libraries are available.])
|
|
DL_LIBS="-ldl"
|
|
HAVE_LIBDL=yes],
|
|
[DL_LIBS=
|
|
HAVE_LIBDL=no ])
|
|
|
|
################################################################################
|
|
dnl -- Check for shared/static conflicts
|
|
if [[ \( "$LVM1" = shared -o "$POOL" = shared \
|
|
\) -a "$STATIC_LINK" = yes ]]; then
|
|
AC_MSG_ERROR([Features cannot be 'shared' when building statically])
|
|
fi
|
|
|
|
################################################################################
|
|
AC_CHECK_LIB(m, log10,
|
|
[M_LIBS="-lm"], hard_bailout)
|
|
|
|
################################################################################
|
|
AC_CHECK_LIB([pthread], [pthread_mutex_lock],
|
|
[PTHREAD_LIBS="-lpthread"], hard_bailout)
|
|
|
|
################################################################################
|
|
dnl -- Disable selinux
|
|
AC_MSG_CHECKING(whether to enable selinux support)
|
|
AC_ARG_ENABLE(selinux,
|
|
AS_HELP_STRING([--disable-selinux], [disable selinux support]),
|
|
SELINUX=$enableval)
|
|
AC_MSG_RESULT($SELINUX)
|
|
|
|
################################################################################
|
|
dnl -- Check for selinux
|
|
if test "$SELINUX" = yes; then
|
|
AC_CHECK_LIB([sepol], [sepol_check_context], [
|
|
AC_DEFINE([HAVE_SEPOL], 1, [Define to 1 if sepol_check_context is available.])
|
|
SELINUX_LIBS="-lsepol"])
|
|
|
|
AC_CHECK_LIB([selinux], [is_selinux_enabled], [
|
|
AC_CHECK_HEADERS([selinux/selinux.h],, hard_bailout)
|
|
AC_CHECK_HEADERS([selinux/label.h])
|
|
AC_DEFINE([HAVE_SELINUX], 1, [Define to 1 to include support for selinux.])
|
|
SELINUX_LIBS="-lselinux $SELINUX_LIBS"
|
|
SELINUX_PC="libselinux"
|
|
HAVE_SELINUX=yes ], [
|
|
AC_MSG_WARN(Disabling selinux)
|
|
SELINUX_LIBS=
|
|
SELINUX_PC=
|
|
HAVE_SELINUX=no ])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Check BLKZEROOUT support
|
|
|
|
AC_CACHE_CHECK([for BLKZEROOUT in sys/ioctl.h.],
|
|
[ac_cv_have_blkzeroout],
|
|
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
|
[#include <sys/ioctl.h>
|
|
#include <linux/fs.h>
|
|
int bar(void) { return ioctl(0, BLKZEROOUT, 0); }]
|
|
)], [ac_cv_have_blkzeroout=yes], [ac_cv_have_blkzeroout=no])])
|
|
|
|
|
|
AC_ARG_ENABLE(blkzeroout,
|
|
AS_HELP_STRING([--disable-blkzeroout],
|
|
[do not use BLKZEROOUT for device zeroing]),
|
|
BLKZEROOUT=$enableval, BLKZEROOUT=yes)
|
|
|
|
AC_MSG_CHECKING(whether to use BLKZEROOUT for device zeroing)
|
|
if test "$BLKZEROOUT" = yes; then
|
|
AC_IF_YES(ac_cv_have_blkzeroout,
|
|
AC_DEFINE(HAVE_BLKZEROOUT, 1,
|
|
[Define if ioctl BLKZEROOUT can be used for device zeroing.]),
|
|
BLKZEROOUT=no)
|
|
fi
|
|
AC_MSG_RESULT($BLKZEROOUT)
|
|
|
|
|
|
################################################################################
|
|
dnl -- Check for realtime clock support
|
|
RT_LIBS=
|
|
HAVE_REALTIME=no
|
|
if test "$REALTIME" = yes; then
|
|
AC_CHECK_FUNCS([clock_gettime], HAVE_REALTIME=yes)
|
|
|
|
AS_IF([test "$HAVE_REALTIME" != yes], [ # try again with -lrt
|
|
AC_CHECK_LIB([rt], [clock_gettime], RT_LIBS="-lrt"; HAVE_REALTIME=yes)])
|
|
|
|
if test "$HAVE_REALTIME" = yes; then
|
|
AC_DEFINE([HAVE_REALTIME], 1, [Define to 1 to include support for realtime clock.])
|
|
else
|
|
AC_MSG_WARN(Disabling realtime clock)
|
|
fi
|
|
fi
|
|
|
|
dnl Check if the system has struct stat st_ctim.
|
|
AC_CACHE_CHECK([for struct stat has st_ctim.],
|
|
[ac_cv_stat_st_ctim],
|
|
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
|
[#include <sys/stat.h>
|
|
long bar(void) { struct stat s; return (long)(s.st_ctim.tv_sec + s.st_ctim.tv_nsec);}]
|
|
)], [ac_cv_stat_st_ctim=yes], [ac_cv_stat_st_ctim=no])])
|
|
|
|
AC_IF_YES(ac_cv_stat_st_ctim,
|
|
AC_DEFINE(HAVE_STAT_ST_CTIM, 1,
|
|
[Define if struct stat has a field st_ctim with timespec for ctime]))
|
|
|
|
################################################################################
|
|
dnl -- Check for getopt
|
|
AC_CHECK_HEADERS(getopt.h, AC_DEFINE([HAVE_GETOPTLONG], 1, [Define to 1 if getopt_long is available.]))
|
|
|
|
################################################################################
|
|
dnl -- Check for editline
|
|
if test "$EDITLINE" == yes; then
|
|
PKG_CHECK_MODULES([EDITLINE], [libedit], [
|
|
AC_DEFINE([EDITLINE_SUPPORT], 1,
|
|
[Define to 1 to include the LVM editline shell.])], AC_MSG_ERROR(
|
|
[libedit could not be found which is required for the --enable-editline option.])
|
|
)
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Check for readline (Shamelessly copied from parted 1.4.17)
|
|
if test "$READLINE" != no; then
|
|
lvm_saved_libs=$LIBS
|
|
AC_SEARCH_LIBS([tgetent], [tinfo ncurses curses termcap termlib],
|
|
READLINE_LIBS=$ac_cv_search_tgetent, [
|
|
if test "$READLINE" = yes; then
|
|
AC_MSG_ERROR(
|
|
[termcap could not be found which is required for the
|
|
--enable-readline option (which is enabled by default). Either disable readline
|
|
support with --disable-readline or download and install termcap from:
|
|
ftp.gnu.org/gnu/termcap
|
|
Note: if you are using precompiled packages you will also need the development
|
|
package as well (which may be called termcap-devel or something similar).
|
|
Note: (n)curses also seems to work as a substitute for termcap. This was
|
|
not found either - but you could try installing that as well.])
|
|
fi])
|
|
dnl -- Old systems may need extra termcap dependency explicitly in LIBS
|
|
AC_CHECK_LIB([readline], [readline], [
|
|
AC_DEFINE([READLINE_SUPPORT], 1,
|
|
[Define to 1 to include the LVM readline shell.])
|
|
dnl -- Try only with -lreadline and check for different symbol
|
|
READLINE=yes
|
|
LIBS=$lvm_saved_libs
|
|
AC_CHECK_LIB([readline], [rl_line_buffer],
|
|
[ READLINE_LIBS="-lreadline" ], [
|
|
AC_MSG_RESULT([linking -lreadline with $READLINE_LIBS needed])
|
|
READLINE_LIBS="-lreadline $READLINE_LIBS"
|
|
]) ], [
|
|
READLINE_LIBS=
|
|
if test "$READLINE" = yes; then
|
|
AC_MSG_ERROR(
|
|
[GNU Readline could not be found which is required for the
|
|
--enable-readline option (which is enabled by default). Either disable readline
|
|
support with --disable-readline or download and install readline from:
|
|
ftp.gnu.org/gnu/readline
|
|
Note: if you are using precompiled packages you will also need the development
|
|
package as well (which may be called readline-devel or something similar).])
|
|
fi ])
|
|
LIBS="$READLINE_LIBS $lvm_saved_libs"
|
|
AC_CHECK_FUNCS([rl_completion_matches])
|
|
LIBS=$lvm_saved_libs
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Internationalisation stuff
|
|
AC_MSG_CHECKING(whether to enable internationalisation)
|
|
AC_ARG_ENABLE(nls,
|
|
AS_HELP_STRING([--enable-nls], [enable Native Language Support]),
|
|
INTL=$enableval, INTL=no)
|
|
AC_MSG_RESULT($INTL)
|
|
|
|
if test "$INTL" = yes; then
|
|
# FIXME - Move this - can be device-mapper too
|
|
INTL_PACKAGE="lvm2"
|
|
AC_PATH_TOOL(MSGFMT, msgfmt)
|
|
|
|
AS_IF([test -z "$MSGFMT"], [AC_MSG_ERROR([msgfmt not found in path $PATH])])
|
|
|
|
AC_ARG_WITH(localedir,
|
|
AS_HELP_STRING([--with-localedir=DIR],
|
|
[locale-dependent data [DATAROOTDIR/locale]]),
|
|
localedir=$withval, localedir=${localedir-'${datarootdir}/locale'})
|
|
AC_DEFINE_UNQUOTED([INTL_PACKAGE], ["$INTL_PACKAGE"], [Internalization package])
|
|
# double eval needed ${datarootdir} -> ${prefix}/share -> real path
|
|
AC_DEFINE_UNQUOTED([LOCALEDIR], ["$(eval echo $(eval echo $localedir))"], [Locale-dependent data])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- FIXME: need to switch to regular option here --sysconfdir
|
|
AC_ARG_WITH(confdir,
|
|
AS_HELP_STRING([--with-confdir=DIR],
|
|
[configuration files in DIR [/etc]]),
|
|
CONFDIR=$withval, CONFDIR='/etc')
|
|
AC_DEFINE_UNQUOTED(DEFAULT_ETC_DIR, ["$CONFDIR"],
|
|
[Default system configuration directory.])
|
|
|
|
AC_ARG_WITH(staticdir,
|
|
AS_HELP_STRING([--with-staticdir=DIR],
|
|
[static binaries in DIR [EPREFIX/sbin]]),
|
|
STATICDIR=$withval, STATICDIR='${exec_prefix}/sbin')
|
|
|
|
AC_ARG_WITH(usrlibdir,
|
|
AS_HELP_STRING([--with-usrlibdir=DIR],
|
|
[usrlib in DIR [PREFIX/lib]]),
|
|
usrlibdir=$withval, usrlibdir='${prefix}/lib')
|
|
|
|
AC_ARG_WITH(usrsbindir,
|
|
AS_HELP_STRING([--with-usrsbindir=DIR],
|
|
[usrsbin executables in DIR [PREFIX/sbin]]),
|
|
usrsbindir=$withval, usrsbindir='${prefix}/sbin')
|
|
|
|
################################################################################
|
|
AC_ARG_WITH(udev_prefix,
|
|
AS_HELP_STRING([--with-udev-prefix=UPREFIX],
|
|
[install udev rule files in UPREFIX [EPREFIX]]),
|
|
udev_prefix=$withval, udev_prefix='${exec_prefix}')
|
|
|
|
AC_ARG_WITH(udevdir,
|
|
AS_HELP_STRING([--with-udevdir=DIR],
|
|
[udev rules in DIR [UPREFIX/lib/udev/rules.d]]),
|
|
udevdir=$withval, udevdir='${udev_prefix}/lib/udev/rules.d')
|
|
|
|
################################################################################
|
|
dnl -- Get the systemd system unit dir value from pkg_config automatically if value not given explicitly.
|
|
dnl -- This follows the recommendation for systemd integration best practices mentioned in daemon(7) manpage.
|
|
AC_ARG_WITH(systemdsystemunitdir,
|
|
AS_HELP_STRING([--with-systemdsystemunitdir=DIR],
|
|
[systemd service files in DIR]),
|
|
systemdsystemunitdir=$withval,
|
|
pkg_config_init
|
|
pkg_systemdsystemunitdir=$("$PKG_CONFIG" --variable=systemdsystemunitdir systemd))
|
|
|
|
test -n "$pkg_systemdsystemunitdir" && systemdsystemunitdir=$pkg_systemdsystemunitdir
|
|
test -z "$systemdsystemunitdir" && systemdsystemunitdir='${exec_prefix}/lib/systemd/system';
|
|
|
|
systemdutildir=$("$PKG_CONFIG" --variable=systemdutildir systemd)
|
|
test -z "$systemdutildir" && systemdutildir='${exec_prefix}/lib/systemd';
|
|
|
|
################################################################################
|
|
AC_ARG_WITH(tmpfilesdir,
|
|
AS_HELP_STRING([--with-tmpfilesdir=DIR],
|
|
[install configuration files for management of volatile files and directories in DIR [PREFIX/lib/tmpfiles.d]]),
|
|
tmpfilesdir=$withval, tmpfilesdir='${prefix}/lib/tmpfiles.d')
|
|
################################################################################
|
|
dnl -- Ensure additional headers required
|
|
if test "$READLINE" = yes; then
|
|
AC_CHECK_HEADERS(readline/readline.h readline/history.h,,hard_bailout)
|
|
fi
|
|
AC_MSG_CHECKING(whether to enable readline)
|
|
AC_MSG_RESULT($READLINE)
|
|
|
|
if test "$EDITLINE" = yes; then
|
|
AC_CHECK_HEADERS(editline/readline.h,,hard_bailout)
|
|
fi
|
|
AC_MSG_CHECKING(whether to enable editline)
|
|
AC_MSG_RESULT($EDITLINE)
|
|
|
|
if test "$BUILD_CMIRRORD" = yes; then
|
|
AC_CHECK_FUNCS(atexit,,hard_bailout)
|
|
fi
|
|
|
|
if test "$BUILD_LVMLOCKD" = yes; then
|
|
AS_IF([test "$HAVE_REALTIME" != yes], [AC_MSG_ERROR([Realtime clock support is mandatory for lvmlockd.])])
|
|
AC_CHECK_FUNCS(strtoull,,hard_bailout)
|
|
fi
|
|
|
|
if test "$BUILD_LVMPOLLD" = yes; then
|
|
AC_CHECK_FUNCS(strpbrk,,hard_bailout)
|
|
AC_FUNC_STRERROR_R
|
|
fi
|
|
|
|
if test "$BUILD_DMEVENTD" = yes; then
|
|
AC_CHECK_HEADERS(arpa/inet.h,,hard_bailout)
|
|
fi
|
|
|
|
if test "$HAVE_LIBDL" = yes; then
|
|
AC_CHECK_HEADERS(dlfcn.h,,hard_bailout)
|
|
fi
|
|
|
|
if test "$INTL" = yes; then
|
|
AC_CHECK_HEADERS(libintl.h,,hard_bailout)
|
|
fi
|
|
|
|
if test "$UDEV_SYNC" = yes; then
|
|
AC_CHECK_HEADERS(sys/ipc.h sys/sem.h,,hard_bailout)
|
|
fi
|
|
|
|
if test "$BUILD_DMFILEMAPD" = yes; then
|
|
AC_CHECK_HEADERS([sys/inotify.h],,hard_bailout)
|
|
fi
|
|
|
|
################################################################################
|
|
AC_PATH_TOOL(MODPROBE_CMD, modprobe, [], [$PATH_SBIN])
|
|
|
|
if test -n "$MODPROBE_CMD"; then
|
|
AC_DEFINE_UNQUOTED([MODPROBE_CMD], ["$MODPROBE_CMD"], [The path to 'modprobe', if available.])
|
|
fi
|
|
|
|
SYSCONFDIR="$(eval echo $(eval echo $sysconfdir))"
|
|
|
|
SBINDIR="$(eval echo $(eval echo $sbindir))"
|
|
LVM_PATH="$SBINDIR/lvm"
|
|
AC_DEFINE_UNQUOTED(LVM_PATH, ["$LVM_PATH"], [Path to lvm binary.])
|
|
|
|
LVMCONFIG_PATH="$SBINDIR/lvmconfig"
|
|
AC_DEFINE_UNQUOTED(LVMCONFIG_PATH, ["$LVMCONFIG_PATH"], [Path to lvmconfig binary.])
|
|
|
|
USRSBINDIR="$(eval echo $(eval echo $usrsbindir))"
|
|
|
|
FSADM_PATH="$SBINDIR/fsadm"
|
|
AC_DEFINE_UNQUOTED(FSADM_PATH, ["$FSADM_PATH"], [Path to fsadm binary.])
|
|
|
|
LVMIMPORTVDO_PATH="$SBINDIR/lvm_import_vdo"
|
|
AC_DEFINE_UNQUOTED(LVMIMPORTVDO_PATH, ["$LVMIMPORTVDO_PATH"], [Path to lvm_import_vdo script.])
|
|
|
|
MOUNT_PATH="/usr/bin/mount"
|
|
AC_DEFINE_UNQUOTED(MOUNT_PATH, ["$MOUNT_PATH"], [Path to mount binary.])
|
|
|
|
UMOUNT_PATH="/usr/bin/umount"
|
|
AC_DEFINE_UNQUOTED(UMOUNT_PATH, ["$UMOUNT_PATH"], [Path to umount binary.])
|
|
|
|
E2FSCK_PATH="$SBINDIR/e2fsck"
|
|
AC_DEFINE_UNQUOTED(E2FSCK_PATH, ["$E2FSCK_PATH"], [Path to e2fsck binary.])
|
|
|
|
RESIZE2FS_PATH="$SBINDIR/resize2fs"
|
|
AC_DEFINE_UNQUOTED(RESIZE2FS_PATH, ["$RESIZE2FS_PATH"], [Path to resize2fs binary.])
|
|
|
|
XFS_GROWFS_PATH="$SBINDIR/xfs_growfs"
|
|
AC_DEFINE_UNQUOTED(XFS_GROWFS_PATH, ["$XFS_GROWFS_PATH"], [Path to xfs_growfs binary.])
|
|
|
|
################################################################################
|
|
dnl -- dmeventd pidfile and executable path
|
|
if test "$BUILD_DMEVENTD" = yes; then
|
|
AC_ARG_WITH(dmeventd-pidfile,
|
|
AS_HELP_STRING([--with-dmeventd-pidfile=PATH],
|
|
[dmeventd pidfile [PID_DIR/dmeventd.pid]]),
|
|
DMEVENTD_PIDFILE=$withval,
|
|
DMEVENTD_PIDFILE="$DEFAULT_PID_DIR/dmeventd.pid")
|
|
AC_DEFINE_UNQUOTED(DMEVENTD_PIDFILE, ["$DMEVENTD_PIDFILE"],
|
|
[Path to dmeventd pidfile.])
|
|
fi
|
|
|
|
if test "$BUILD_DMEVENTD" = yes; then
|
|
AC_ARG_WITH(dmeventd-path,
|
|
AS_HELP_STRING([--with-dmeventd-path=PATH],
|
|
[dmeventd path [EPREFIX/sbin/dmeventd]]),
|
|
DMEVENTD_PATH=$withval,
|
|
DMEVENTD_PATH="$SBINDIR/dmeventd")
|
|
AC_DEFINE_UNQUOTED(DMEVENTD_PATH, ["$DMEVENTD_PATH"],
|
|
[Path to dmeventd binary.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- various defaults
|
|
dnl -- FIXME: need to switch to regular option here --sysconfdir
|
|
AC_ARG_WITH(default-system-dir,
|
|
AS_HELP_STRING([--with-default-system-dir=DIR],
|
|
[default LVM system directory [/etc/lvm]]),
|
|
DEFAULT_SYS_DIR=$withval, DEFAULT_SYS_DIR="/etc/lvm")
|
|
AC_DEFINE_UNQUOTED(DEFAULT_SYS_DIR, ["$DEFAULT_SYS_DIR"],
|
|
[Path to LVM system directory.])
|
|
|
|
AC_ARG_WITH(default-profile-subdir,
|
|
AS_HELP_STRING([--with-default-profile-subdir=SUBDIR],
|
|
[default configuration profile subdir [profile]]),
|
|
DEFAULT_PROFILE_SUBDIR=$withval, DEFAULT_PROFILE_SUBDIR=profile)
|
|
AC_DEFINE_UNQUOTED(DEFAULT_PROFILE_SUBDIR, ["$DEFAULT_PROFILE_SUBDIR"],
|
|
[Name of default configuration profile subdirectory.])
|
|
|
|
AC_ARG_WITH(default-archive-subdir,
|
|
AS_HELP_STRING([--with-default-archive-subdir=SUBDIR],
|
|
[default metadata archive subdir [archive]]),
|
|
DEFAULT_ARCHIVE_SUBDIR=$withval, DEFAULT_ARCHIVE_SUBDIR=archive)
|
|
AC_DEFINE_UNQUOTED(DEFAULT_ARCHIVE_SUBDIR, ["$DEFAULT_ARCHIVE_SUBDIR"],
|
|
[Name of default metadata archive subdirectory.])
|
|
|
|
AC_ARG_WITH(default-backup-subdir,
|
|
AS_HELP_STRING([--with-default-backup-subdir=SUBDIR],
|
|
[default metadata backup subdir [backup]]),
|
|
DEFAULT_BACKUP_SUBDIR=$withval, DEFAULT_BACKUP_SUBDIR=backup)
|
|
AC_DEFINE_UNQUOTED(DEFAULT_BACKUP_SUBDIR, ["$DEFAULT_BACKUP_SUBDIR"],
|
|
[Name of default metadata backup subdirectory.])
|
|
|
|
AC_ARG_WITH(default-cache-subdir,
|
|
AS_HELP_STRING([--with-default-cache-subdir=SUBDIR],
|
|
[default metadata cache subdir [cache]]),
|
|
DEFAULT_CACHE_SUBDIR=$withval, DEFAULT_CACHE_SUBDIR=cache)
|
|
AC_DEFINE_UNQUOTED(DEFAULT_CACHE_SUBDIR, ["$DEFAULT_CACHE_SUBDIR"],
|
|
[Name of default metadata cache subdirectory.])
|
|
|
|
# Select default system locking dir, prefer /run/lock over /var/lock
|
|
DEFAULT_SYS_LOCK_DIR="$RUN_DIR/lock"
|
|
test -d "$DEFAULT_SYS_LOCK_DIR" || DEFAULT_SYS_LOCK_DIR="/var/lock"
|
|
|
|
# Support configurable locking subdir for lvm
|
|
AC_ARG_WITH(default-locking-dir,
|
|
AS_HELP_STRING([--with-default-locking-dir=DIR],
|
|
[default locking directory [autodetect_lock_dir/lvm]]),
|
|
DEFAULT_LOCK_DIR=$withval,
|
|
[AC_MSG_CHECKING(for default lock directory)
|
|
DEFAULT_LOCK_DIR="$DEFAULT_SYS_LOCK_DIR/lvm"
|
|
AC_MSG_RESULT($DEFAULT_LOCK_DIR)])
|
|
AC_DEFINE_UNQUOTED(DEFAULT_LOCK_DIR, ["$DEFAULT_LOCK_DIR"],
|
|
[Name of default locking directory.])
|
|
|
|
################################################################################
|
|
dnl -- which kernel interface to use (ioctl only)
|
|
AC_MSG_CHECKING(for kernel interface choice)
|
|
AC_ARG_WITH(interface,
|
|
AS_HELP_STRING([--with-interface=IFACE],
|
|
[choose kernel interface (ioctl) [ioctl]]),
|
|
interface=$withval, interface=ioctl)
|
|
test "$interface" != ioctl && AC_MSG_ERROR([--with-interface=ioctl required. fs no longer supported.])
|
|
AC_MSG_RESULT($interface)
|
|
|
|
################################################################################
|
|
read DM_LIB_VERSION < "$srcdir"/VERSION_DM 2>/dev/null || DM_LIB_VERSION=Unknown
|
|
AC_DEFINE_UNQUOTED(DM_LIB_VERSION, "$DM_LIB_VERSION", [Library version])
|
|
|
|
DM_LIB_PATCHLEVEL=`cat "$srcdir"/VERSION_DM | $AWK -F '[[-. ]]' '{printf "%s.%s.%s",$1,$2,$3}'`
|
|
|
|
read VER < "$srcdir"/VERSION 2>/dev/null || VER=Unknown
|
|
|
|
LVM_VERSION=\"$VER\"
|
|
LVM_RELEASE_DATE="\"`echo $VER | $SED 's/.* (//;s/).*//'`\""
|
|
VER=`echo "$VER" | $AWK '{print $1}'`
|
|
LVM_RELEASE="\"`echo "$VER" | $AWK -F '-' '{print $2}'`\""
|
|
VER=`echo "$VER" | $AWK -F '-' '{print $1}'`
|
|
LVM_MAJOR=`echo "$VER" | $AWK -F '.' '{print $1}'`
|
|
LVM_MINOR=`echo "$VER" | $AWK -F '.' '{print $2}'`
|
|
LVM_PATCHLEVEL=`echo "$VER" | $AWK -F '[[(.]]' '{print $3}'`
|
|
LVM_LIBAPI=`echo "$VER" | $AWK -F '[[()]]' '{print $2}'`
|
|
|
|
AC_DEFINE_UNQUOTED(LVM_CONFIGURE_LINE, "$CONFIGURE_LINE", [configure command line used])
|
|
|
|
AC_ARG_VAR([BLKID_CFLAGS], [C compiler flags for blkid])
|
|
AC_ARG_VAR([BLKID_LIBS], [linker flags for blkid])
|
|
AC_ARG_VAR([CPG_CFLAGS], [C compiler flags for cpg])
|
|
AC_ARG_VAR([CPG_LIBS], [linker flags for cpg])
|
|
AC_ARG_VAR([EDITLINE_CFLAGS], [C compiler flags for editline])
|
|
AC_ARG_VAR([EDITLINE_LIBS], [linker flags for editline])
|
|
AC_ARG_VAR([READLINE_CFLAGS], [C compiler flags for readline])
|
|
AC_ARG_VAR([READLINE_LIBS], [linker flags for readline])
|
|
AC_ARG_VAR([SYSTEMD_CFLAGS], [C compiler flags for systemd])
|
|
AC_ARG_VAR([SYSTEMD_LIBS], [linker flags for systemd])
|
|
AC_ARG_VAR([UDEV_CFLAGS], [C compiler flags for udev])
|
|
AC_ARG_VAR([UDEV_LIBS], [linker flags for udev])
|
|
|
|
################################################################################
|
|
AC_SUBST(AWK)
|
|
AC_SUBST(BLKID_PC)
|
|
AC_SUBST(BUILD_CMIRRORD)
|
|
AC_SUBST(BUILD_DMEVENTD)
|
|
AC_SUBST(BUILD_LVMDBUSD)
|
|
AC_SUBST(BUILD_LVMPOLLD)
|
|
AC_SUBST(BUILD_LVMLOCKD)
|
|
AC_SUBST(BUILD_LOCKDSANLOCK)
|
|
AC_SUBST(BUILD_LOCKDDLM)
|
|
AC_SUBST(BUILD_LOCKDDLM_CONTROL)
|
|
AC_SUBST(BUILD_DMFILEMAPD)
|
|
AC_SUBST(CACHE)
|
|
AC_SUBST(CFLAGS)
|
|
AC_SUBST(CFLOW_CMD)
|
|
AC_SUBST(CHMOD)
|
|
AC_SUBST(CLDFLAGS)
|
|
AC_SUBST(CLDNOWHOLEARCHIVE)
|
|
AC_SUBST(CLDWHOLEARCHIVE)
|
|
AC_SUBST(CMDLIB)
|
|
AC_SUBST(CONFDB_CFLAGS)
|
|
AC_SUBST(CONFDB_LIBS)
|
|
AC_SUBST(CONFDIR)
|
|
AC_SUBST(COPTIMISE_FLAG)
|
|
AC_SUBST(CSCOPE_CMD)
|
|
AC_SUBST(DEBUG)
|
|
AC_SUBST(DEFAULT_ARCHIVE_SUBDIR)
|
|
AC_SUBST(DEFAULT_BACKUP_SUBDIR)
|
|
AC_SUBST(DEFAULT_CACHE_SUBDIR)
|
|
AC_SUBST(DEFAULT_DM_RUN_DIR)
|
|
AC_SUBST(DEFAULT_LOCK_DIR)
|
|
AC_SUBST(DEFAULT_MIRROR_SEGTYPE)
|
|
AC_SUBST(DEFAULT_PID_DIR)
|
|
AC_SUBST(DEFAULT_PROFILE_SUBDIR)
|
|
AC_SUBST(DEFAULT_RAID10_SEGTYPE)
|
|
AC_SUBST(DEFAULT_RUN_DIR)
|
|
AC_SUBST(DEFAULT_SPARSE_SEGTYPE)
|
|
AC_SUBST(DEFAULT_SYS_DIR)
|
|
AC_SUBST(DEFAULT_SYS_LOCK_DIR)
|
|
AC_SUBST(DEFAULT_USE_BLKID_WIPING)
|
|
AC_SUBST(DEFAULT_USE_LVMPOLLD)
|
|
AC_SUBST(DEFAULT_USE_LVMLOCKD)
|
|
AC_SUBST(DEVMAPPER)
|
|
AC_SUBST(DLM_CFLAGS)
|
|
AC_SUBST(DLM_LIBS)
|
|
AC_SUBST(DL_LIBS)
|
|
AC_SUBST(DMEVENTD_PATH)
|
|
AC_SUBST(DM_LIB_PATCHLEVEL)
|
|
AC_SUBST(ELDFLAGS)
|
|
AC_SUBST(FSADM)
|
|
AC_SUBST(FSADM_PATH)
|
|
AC_SUBST(MOUNT_PATH)
|
|
AC_SUBST(UMOUNT_PATH)
|
|
AC_SUBST(E2FSCK_PATH)
|
|
AC_SUBST(RESIZE2FS_PATH)
|
|
AC_SUBST(XFS_GROWFS_PATH)
|
|
AC_SUBST(BLKDEACTIVATE)
|
|
AC_SUBST(HAVE_LIBDL)
|
|
AC_SUBST(HAVE_REALTIME)
|
|
AC_SUBST(HAVE_VALGRIND)
|
|
AC_SUBST(INTEGRITY)
|
|
AC_SUBST(INTL)
|
|
AC_SUBST(JOBS)
|
|
AC_SUBST(LDDEPS)
|
|
AC_SUBST(LIBS)
|
|
AC_SUBST(LIB_SUFFIX)
|
|
AC_SUBST(LVM_VERSION)
|
|
AC_SUBST(LVM_LIBAPI)
|
|
AC_SUBST(LVM_MAJOR)
|
|
AC_SUBST(LVM_MINOR)
|
|
AC_SUBST(LVM_PATCHLEVEL)
|
|
AC_SUBST(LVM_PATH)
|
|
AC_SUBST(LVM_RELEASE)
|
|
AC_SUBST(LVM_RELEASE_DATE)
|
|
AC_SUBST(LVMIMPORTVDO)
|
|
AC_SUBST(LVMIMPORTVDO_PATH)
|
|
AC_SUBST(localedir)
|
|
AC_SUBST(MANGLING)
|
|
AC_SUBST(MIRRORS)
|
|
AC_SUBST(MSGFMT)
|
|
AC_SUBST(OCF)
|
|
AC_SUBST(OCFDIR)
|
|
AC_SUBST(ODIRECT)
|
|
AC_SUBST(PKGCONFIG)
|
|
AC_SUBST(M_LIBS)
|
|
AC_SUBST(PTHREAD_LIBS)
|
|
AC_SUBST(PYTHON2)
|
|
AC_SUBST(PYTHON3)
|
|
AC_SUBST(PYTHON_BINDINGS)
|
|
AC_SUBST(PYTHON2_BINDINGS)
|
|
AC_SUBST(PYTHON3_BINDINGS)
|
|
AC_SUBST(PYTHON2_INCDIRS)
|
|
AC_SUBST(PYTHON3_INCDIRS)
|
|
AC_SUBST(PYTHON2_LIBDIRS)
|
|
AC_SUBST(PYTHON3_LIBDIRS)
|
|
AC_SUBST(PYTHON2DIR)
|
|
AC_SUBST(PYTHON3DIR)
|
|
AC_SUBST(QUORUM_CFLAGS)
|
|
AC_SUBST(QUORUM_LIBS)
|
|
AC_SUBST(RT_LIBS)
|
|
AC_SUBST(REPLICATORS)
|
|
AC_SUBST(SACKPT_CFLAGS)
|
|
AC_SUBST(SACKPT_LIBS)
|
|
AC_SUBST(SALCK_CFLAGS)
|
|
AC_SUBST(SALCK_LIBS)
|
|
AC_SUBST(SBINDIR)
|
|
AC_SUBST(SELINUX_LIBS)
|
|
AC_SUBST(SELINUX_PC)
|
|
AC_SUBST(SYSCONFDIR)
|
|
AC_SUBST(SNAPSHOTS)
|
|
AC_SUBST(STATICDIR)
|
|
AC_SUBST(STATIC_LINK)
|
|
AC_SUBST(TESTSUITE_DATA)
|
|
AC_SUBST(THIN)
|
|
AC_SUBST(THIN_CHECK_CMD)
|
|
AC_SUBST(THIN_DUMP_CMD)
|
|
AC_SUBST(THIN_REPAIR_CMD)
|
|
AC_SUBST(THIN_RESTORE_CMD)
|
|
AC_SUBST(CACHE_CHECK_CMD)
|
|
AC_SUBST(CACHE_DUMP_CMD)
|
|
AC_SUBST(CACHE_REPAIR_CMD)
|
|
AC_SUBST(CACHE_RESTORE_CMD)
|
|
AC_SUBST(UDEV_PC)
|
|
AC_SUBST(UDEV_RULES)
|
|
AC_SUBST(UDEV_SYNC)
|
|
AC_SUBST(UDEV_SYSTEMD_BACKGROUND_JOBS)
|
|
AC_SUBST(UDEV_RULE_EXEC_DETECTION)
|
|
AC_SUBST(UDEV_HAS_BUILTIN_BLKID)
|
|
AC_SUBST(USE_TRACKING)
|
|
AC_SUBST(SILENT_RULES)
|
|
AC_SUBST(USRSBINDIR)
|
|
AC_SUBST(VALGRIND_POOL)
|
|
AC_SUBST(VDO)
|
|
AC_SUBST(VDO_FORMAT_CMD)
|
|
AC_SUBST(VDO_INCLUDE)
|
|
AC_SUBST(VDO_LIB)
|
|
AC_SUBST(WRITECACHE)
|
|
AC_SUBST(WRITE_INSTALL)
|
|
AC_SUBST(DMEVENTD_PIDFILE)
|
|
AC_SUBST(LVMPOLLD_PIDFILE)
|
|
AC_SUBST(LVMLOCKD_PIDFILE)
|
|
AC_SUBST(CMIRRORD_PIDFILE)
|
|
AC_SUBST(interface)
|
|
AC_SUBST(kerneldir)
|
|
AC_SUBST(missingkernel)
|
|
AC_SUBST(kernelvsn)
|
|
AC_SUBST(tmpdir)
|
|
AC_SUBST(udev_prefix)
|
|
AC_SUBST(udevdir)
|
|
AC_SUBST(systemdsystemunitdir)
|
|
AC_SUBST(systemdutildir)
|
|
AC_SUBST(tmpfilesdir)
|
|
AC_SUBST(usrlibdir)
|
|
AC_SUBST(usrsbindir)
|
|
|
|
################################################################################
|
|
dnl -- First and last lines should not contain files to generate in order to
|
|
dnl -- keep utility scripts running properly
|
|
AC_CONFIG_FILES([
|
|
Makefile
|
|
make.tmpl
|
|
libdm/make.tmpl
|
|
daemons/Makefile
|
|
daemons/cmirrord/Makefile
|
|
daemons/dmeventd/Makefile
|
|
daemons/dmeventd/libdevmapper-event.pc
|
|
daemons/dmeventd/plugins/Makefile
|
|
daemons/dmeventd/plugins/lvm2/Makefile
|
|
daemons/dmeventd/plugins/raid/Makefile
|
|
daemons/dmeventd/plugins/mirror/Makefile
|
|
daemons/dmeventd/plugins/snapshot/Makefile
|
|
daemons/dmeventd/plugins/thin/Makefile
|
|
daemons/dmeventd/plugins/vdo/Makefile
|
|
daemons/lvmdbusd/Makefile
|
|
daemons/lvmdbusd/lvmdbusd
|
|
daemons/lvmdbusd/lvmdb.py
|
|
daemons/lvmdbusd/lvm_shell_proxy.py
|
|
daemons/lvmdbusd/path.py
|
|
daemons/lvmpolld/Makefile
|
|
daemons/lvmlockd/Makefile
|
|
conf/Makefile
|
|
conf/example.conf
|
|
conf/lvmlocal.conf
|
|
conf/command_profile_template.profile
|
|
conf/metadata_profile_template.profile
|
|
include/Makefile
|
|
lib/Makefile
|
|
include/lvm-version.h
|
|
libdaemon/Makefile
|
|
libdaemon/client/Makefile
|
|
libdaemon/server/Makefile
|
|
libdm/Makefile
|
|
libdm/dm-tools/Makefile
|
|
libdm/libdevmapper.pc
|
|
man/Makefile
|
|
po/Makefile
|
|
scripts/lvm2-pvscan.service
|
|
scripts/blkdeactivate.sh
|
|
scripts/blk_availability_init_red_hat
|
|
scripts/blk_availability_systemd_red_hat.service
|
|
scripts/cmirrord_init_red_hat
|
|
scripts/com.redhat.lvmdbus1.service
|
|
scripts/dm_event_systemd_red_hat.service
|
|
scripts/dm_event_systemd_red_hat.socket
|
|
scripts/lvm2_cmirrord_systemd_red_hat.service
|
|
scripts/lvm2_lvmdbusd_systemd_red_hat.service
|
|
scripts/lvm2_lvmpolld_init_red_hat
|
|
scripts/lvm2_lvmpolld_systemd_red_hat.service
|
|
scripts/lvm2_lvmpolld_systemd_red_hat.socket
|
|
scripts/lvmlockd.service
|
|
scripts/lvmlocks.service
|
|
scripts/lvm2_monitoring_init_red_hat
|
|
scripts/lvm2_monitoring_systemd_red_hat.service
|
|
scripts/lvm2_tmpfiles_red_hat.conf
|
|
scripts/lvmdump.sh
|
|
scripts/Makefile
|
|
test/Makefile
|
|
tools/Makefile
|
|
udev/Makefile
|
|
])
|
|
AC_OUTPUT
|
|
|
|
AS_IF([test -n "$THIN_CONFIGURE_WARN"],
|
|
[AC_MSG_WARN([Support for thin provisioning is limited since some thin provisioning tools are missing!])])
|
|
|
|
AS_IF([test -n "$THIN_CHECK_VERSION_WARN"],
|
|
[AC_MSG_WARN([You should also install latest thin_check vsn 0.7.0 (or later) for lvm2 thin provisioning])])
|
|
|
|
AS_IF([test -n "$CACHE_CONFIGURE_WARN"],
|
|
[AC_MSG_WARN([Support for cache is limited since some cache tools are missing!])])
|
|
|
|
AS_IF([test -n "$CACHE_CHECK_VERSION_WARN"],
|
|
[AC_MSG_WARN([You should install latest cache_check vsn 0.7.0 to use lvm2 cache metadata format 2])])
|
|
|
|
AS_IF([test -n "$VDO_CONFIGURE_WARN"],
|
|
[AC_MSG_WARN([Unrecognized 'vdoformat' tool is REQUIRED for VDO logical volume creation!])])
|
|
|
|
AS_IF([test -n "$LVM_NEEDS_LIBAIO_WARN"],
|
|
[AC_MSG_WARN([Only libdm part can be build without libaio: make [[install_]]device-mapper])])
|
|
|
|
AS_IF([test "$ODIRECT" != yes],
|
|
[AC_MSG_WARN([O_DIRECT disabled: low-memory pvmove may lock up])])
|