mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 11:19:32 +03:00
e69ade32e1
Certain Linux distributions (Debian/Ubuntu at least) expect
bash-completion snippets to be installed in
/usr/share/bash-completion/completions instead of
/etc/bash_completion.d.
This patch sets the bashcompletiondir variable based on the vendor,
inspired by similar settings for initdir and initconfdir.
It seems that commit 612b8dff5b
caused the file to be installed in the first-place (thus the error
when building debian packages only became apparent when testing a
2.2.0-rc4 build)
The change only sets the variable in Makefile context - the
rpm/zfs.spec.in file has the path hardcoded as
%{_sysconfdir}/bash_completion.d/zfs, but since running
```
./configure --sysconfdir=/myetc ; make rpm
```
also results in all relevant files to be installed in /etc instead of
/myetc I assume this can remain as is.
Reviewed-by: Umer Saleem <usaleem@ixsystems.com>
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Closes #15304
644 lines
19 KiB
Plaintext
644 lines
19 KiB
Plaintext
AC_DEFUN([ZFS_AC_LICENSE], [
|
|
AC_MSG_CHECKING([zfs author])
|
|
AC_MSG_RESULT([$ZFS_META_AUTHOR])
|
|
|
|
AC_MSG_CHECKING([zfs license])
|
|
AC_MSG_RESULT([$ZFS_META_LICENSE])
|
|
])
|
|
|
|
AC_DEFUN([ZFS_AC_DEBUG_ENABLE], [
|
|
DEBUG_CFLAGS="-Werror"
|
|
DEBUG_CPPFLAGS="-DDEBUG -UNDEBUG"
|
|
DEBUG_LDFLAGS=""
|
|
DEBUG_ZFS="_with_debug"
|
|
WITH_DEBUG="true"
|
|
AC_DEFINE(ZFS_DEBUG, 1, [zfs debugging enabled])
|
|
|
|
KERNEL_DEBUG_CFLAGS="-Werror"
|
|
KERNEL_DEBUG_CPPFLAGS="-DDEBUG -UNDEBUG"
|
|
])
|
|
|
|
AC_DEFUN([ZFS_AC_DEBUG_DISABLE], [
|
|
DEBUG_CFLAGS=""
|
|
DEBUG_CPPFLAGS="-UDEBUG -DNDEBUG"
|
|
DEBUG_LDFLAGS=""
|
|
DEBUG_ZFS="_without_debug"
|
|
WITH_DEBUG=""
|
|
|
|
KERNEL_DEBUG_CFLAGS=""
|
|
KERNEL_DEBUG_CPPFLAGS="-UDEBUG -DNDEBUG"
|
|
])
|
|
|
|
dnl #
|
|
dnl # When debugging is enabled:
|
|
dnl # - Enable all ASSERTs (-DDEBUG)
|
|
dnl # - Promote all compiler warnings to errors (-Werror)
|
|
dnl #
|
|
dnl # (If INVARIANTS is detected, we need to force DEBUG, or strange panics
|
|
dnl # can ensue.)
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_DEBUG], [
|
|
AC_MSG_CHECKING([whether assertion support will be enabled])
|
|
AC_ARG_ENABLE([debug],
|
|
[AS_HELP_STRING([--enable-debug],
|
|
[Enable compiler and code assertions @<:@default=no@:>@])],
|
|
[],
|
|
[enable_debug=no])
|
|
|
|
AS_CASE(["x$enable_debug"],
|
|
["xyes"],
|
|
[ZFS_AC_DEBUG_ENABLE],
|
|
["xno"],
|
|
[ZFS_AC_DEBUG_DISABLE],
|
|
[AC_MSG_ERROR([Unknown option $enable_debug])])
|
|
|
|
AS_CASE(["x$enable_invariants"],
|
|
["xyes"],
|
|
[],
|
|
["xno"],
|
|
[],
|
|
[ZFS_AC_DEBUG_INVARIANTS_DETECT])
|
|
|
|
AS_CASE(["x$enable_invariants"],
|
|
["xyes"],
|
|
[ZFS_AC_DEBUG_ENABLE],
|
|
["xno"],
|
|
[],
|
|
[AC_MSG_ERROR([Unknown option $enable_invariants])])
|
|
|
|
AC_SUBST(DEBUG_CFLAGS)
|
|
AC_SUBST(DEBUG_CPPFLAGS)
|
|
AC_SUBST(DEBUG_LDFLAGS)
|
|
AC_SUBST(DEBUG_ZFS)
|
|
AC_SUBST(WITH_DEBUG)
|
|
|
|
AC_SUBST(KERNEL_DEBUG_CFLAGS)
|
|
AC_SUBST(KERNEL_DEBUG_CPPFLAGS)
|
|
|
|
AC_MSG_RESULT([$enable_debug])
|
|
])
|
|
|
|
AC_DEFUN([ZFS_AC_DEBUGINFO_ENABLE], [
|
|
DEBUG_CFLAGS="$DEBUG_CFLAGS -g -fno-inline $NO_IPA_SRA"
|
|
|
|
KERNEL_DEBUG_CFLAGS="$KERNEL_DEBUG_CFLAGS -fno-inline $KERNEL_NO_IPA_SRA"
|
|
KERNEL_MAKE="$KERNEL_MAKE CONFIG_DEBUG_INFO=y"
|
|
|
|
DEBUGINFO_ZFS="_with_debuginfo"
|
|
])
|
|
|
|
AC_DEFUN([ZFS_AC_DEBUGINFO_DISABLE], [
|
|
DEBUGINFO_ZFS="_without_debuginfo"
|
|
])
|
|
|
|
AC_DEFUN([ZFS_AC_DEBUGINFO], [
|
|
AC_MSG_CHECKING([whether debuginfo support will be forced])
|
|
AC_ARG_ENABLE([debuginfo],
|
|
[AS_HELP_STRING([--enable-debuginfo],
|
|
[Force generation of debuginfo @<:@default=no@:>@])],
|
|
[],
|
|
[enable_debuginfo=no])
|
|
|
|
AS_CASE(["x$enable_debuginfo"],
|
|
["xyes"],
|
|
[ZFS_AC_DEBUGINFO_ENABLE],
|
|
["xno"],
|
|
[ZFS_AC_DEBUGINFO_DISABLE],
|
|
[AC_MSG_ERROR([Unknown option $enable_debuginfo])])
|
|
|
|
AC_SUBST(DEBUG_CFLAGS)
|
|
AC_SUBST(DEBUGINFO_ZFS)
|
|
|
|
AC_SUBST(KERNEL_DEBUG_CFLAGS)
|
|
AC_SUBST(KERNEL_MAKE)
|
|
|
|
AC_MSG_RESULT([$enable_debuginfo])
|
|
])
|
|
|
|
dnl #
|
|
dnl # Disabled by default, provides basic memory tracking. Track the total
|
|
dnl # number of bytes allocated with kmem_alloc() and freed with kmem_free().
|
|
dnl # Then at module unload time if any bytes were leaked it will be reported
|
|
dnl # on the console.
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_DEBUG_KMEM], [
|
|
AC_MSG_CHECKING([whether basic kmem accounting is enabled])
|
|
AC_ARG_ENABLE([debug-kmem],
|
|
[AS_HELP_STRING([--enable-debug-kmem],
|
|
[Enable basic kmem accounting @<:@default=no@:>@])],
|
|
[],
|
|
[enable_debug_kmem=no])
|
|
|
|
AS_IF([test "x$enable_debug_kmem" = xyes], [
|
|
KERNEL_DEBUG_CPPFLAGS="${KERNEL_DEBUG_CPPFLAGS} -DDEBUG_KMEM"
|
|
DEBUG_KMEM_ZFS="_with_debug_kmem"
|
|
], [
|
|
DEBUG_KMEM_ZFS="_without_debug_kmem"
|
|
])
|
|
|
|
AC_SUBST(KERNEL_DEBUG_CPPFLAGS)
|
|
AC_SUBST(DEBUG_KMEM_ZFS)
|
|
|
|
AC_MSG_RESULT([$enable_debug_kmem])
|
|
])
|
|
|
|
dnl #
|
|
dnl # Disabled by default, provides detailed memory tracking. This feature
|
|
dnl # also requires --enable-debug-kmem to be set. When enabled not only will
|
|
dnl # total bytes be tracked but also the location of every kmem_alloc() and
|
|
dnl # kmem_free(). When the module is unloaded a list of all leaked addresses
|
|
dnl # and where they were allocated will be dumped to the console. Enabling
|
|
dnl # this feature has a significant impact on performance but it makes finding
|
|
dnl # memory leaks straight forward.
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_DEBUG_KMEM_TRACKING], [
|
|
AC_MSG_CHECKING([whether detailed kmem tracking is enabled])
|
|
AC_ARG_ENABLE([debug-kmem-tracking],
|
|
[AS_HELP_STRING([--enable-debug-kmem-tracking],
|
|
[Enable detailed kmem tracking @<:@default=no@:>@])],
|
|
[],
|
|
[enable_debug_kmem_tracking=no])
|
|
|
|
AS_IF([test "x$enable_debug_kmem_tracking" = xyes], [
|
|
KERNEL_DEBUG_CPPFLAGS="${KERNEL_DEBUG_CPPFLAGS} -DDEBUG_KMEM_TRACKING"
|
|
DEBUG_KMEM_TRACKING_ZFS="_with_debug_kmem_tracking"
|
|
], [
|
|
DEBUG_KMEM_TRACKING_ZFS="_without_debug_kmem_tracking"
|
|
])
|
|
|
|
AC_SUBST(KERNEL_DEBUG_CPPFLAGS)
|
|
AC_SUBST(DEBUG_KMEM_TRACKING_ZFS)
|
|
|
|
AC_MSG_RESULT([$enable_debug_kmem_tracking])
|
|
])
|
|
|
|
AC_DEFUN([ZFS_AC_DEBUG_INVARIANTS_DETECT_FREEBSD], [
|
|
AS_IF([sysctl -n kern.conftxt | grep -Fqx $'options\tINVARIANTS'],
|
|
[enable_invariants="yes"],
|
|
[enable_invariants="no"])
|
|
])
|
|
|
|
AC_DEFUN([ZFS_AC_DEBUG_INVARIANTS_DETECT], [
|
|
AM_COND_IF([BUILD_FREEBSD],
|
|
[ZFS_AC_DEBUG_INVARIANTS_DETECT_FREEBSD],
|
|
[enable_invariants="no"])
|
|
])
|
|
|
|
dnl #
|
|
dnl # Detected for the running kernel by default, enables INVARIANTS features
|
|
dnl # in the FreeBSD kernel module. This feature must be used when building
|
|
dnl # for a FreeBSD kernel with "options INVARIANTS" in the KERNCONF and must
|
|
dnl # not be used when the INVARIANTS option is absent.
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_DEBUG_INVARIANTS], [
|
|
AC_MSG_CHECKING([whether FreeBSD kernel INVARIANTS checks are enabled])
|
|
AC_ARG_ENABLE([invariants],
|
|
[AS_HELP_STRING([--enable-invariants],
|
|
[Enable FreeBSD kernel INVARIANTS checks [[default: detect]]])],
|
|
[], [ZFS_AC_DEBUG_INVARIANTS_DETECT])
|
|
|
|
AS_IF([test "x$enable_invariants" = xyes],
|
|
[WITH_INVARIANTS="true"],
|
|
[WITH_INVARIANTS=""])
|
|
AC_SUBST(WITH_INVARIANTS)
|
|
|
|
AC_MSG_RESULT([$enable_invariants])
|
|
])
|
|
|
|
AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [
|
|
AX_COUNT_CPUS([])
|
|
AC_SUBST(CPU_COUNT)
|
|
|
|
ZFS_AC_CONFIG_ALWAYS_CC_NO_CLOBBERED
|
|
ZFS_AC_CONFIG_ALWAYS_CC_INFINITE_RECURSION
|
|
ZFS_AC_CONFIG_ALWAYS_KERNEL_CC_INFINITE_RECURSION
|
|
ZFS_AC_CONFIG_ALWAYS_CC_IMPLICIT_FALLTHROUGH
|
|
ZFS_AC_CONFIG_ALWAYS_CC_FRAME_LARGER_THAN
|
|
ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_TRUNCATION
|
|
ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_ZERO_LENGTH
|
|
ZFS_AC_CONFIG_ALWAYS_CC_FORMAT_OVERFLOW
|
|
ZFS_AC_CONFIG_ALWAYS_CC_NO_OMIT_FRAME_POINTER
|
|
ZFS_AC_CONFIG_ALWAYS_CC_NO_IPA_SRA
|
|
ZFS_AC_CONFIG_ALWAYS_KERNEL_CC_NO_IPA_SRA
|
|
ZFS_AC_CONFIG_ALWAYS_CC_ASAN
|
|
ZFS_AC_CONFIG_ALWAYS_CC_UBSAN
|
|
ZFS_AC_CONFIG_ALWAYS_TOOLCHAIN_SIMD
|
|
ZFS_AC_CONFIG_ALWAYS_SYSTEM
|
|
ZFS_AC_CONFIG_ALWAYS_ARCH
|
|
ZFS_AC_CONFIG_ALWAYS_PYTHON
|
|
ZFS_AC_CONFIG_ALWAYS_PYZFS
|
|
ZFS_AC_CONFIG_ALWAYS_SED
|
|
ZFS_AC_CONFIG_ALWAYS_CPPCHECK
|
|
ZFS_AC_CONFIG_ALWAYS_SHELLCHECK
|
|
ZFS_AC_CONFIG_ALWAYS_PARALLEL
|
|
])
|
|
|
|
AC_DEFUN([ZFS_AC_CONFIG], [
|
|
|
|
dnl # Remove the previous build test directory.
|
|
rm -Rf build
|
|
|
|
ZFS_CONFIG=all
|
|
AC_ARG_WITH([config],
|
|
AS_HELP_STRING([--with-config=CONFIG],
|
|
[Config file 'kernel|user|all|srpm']),
|
|
[ZFS_CONFIG="$withval"])
|
|
AC_ARG_ENABLE([linux-builtin],
|
|
[AS_HELP_STRING([--enable-linux-builtin],
|
|
[Configure for builtin in-tree kernel modules @<:@default=no@:>@])],
|
|
[],
|
|
[enable_linux_builtin=no])
|
|
|
|
AC_MSG_CHECKING([zfs config])
|
|
AC_MSG_RESULT([$ZFS_CONFIG]);
|
|
AC_SUBST(ZFS_CONFIG)
|
|
|
|
ZFS_AC_CONFIG_ALWAYS
|
|
|
|
AM_COND_IF([BUILD_LINUX], [
|
|
AC_ARG_VAR([TEST_JOBS], [simultaneous jobs during configure])
|
|
if test "x$ac_cv_env_TEST_JOBS_set" != "xset"; then
|
|
TEST_JOBS=$CPU_COUNT
|
|
fi
|
|
AC_SUBST(TEST_JOBS)
|
|
])
|
|
|
|
ZFS_INIT_SYSV=
|
|
ZFS_INIT_SYSTEMD=
|
|
ZFS_WANT_MODULES_LOAD_D=
|
|
|
|
case "$ZFS_CONFIG" in
|
|
kernel) ZFS_AC_CONFIG_KERNEL ;;
|
|
user) ZFS_AC_CONFIG_USER ;;
|
|
all) ZFS_AC_CONFIG_USER
|
|
ZFS_AC_CONFIG_KERNEL ;;
|
|
dist) ;;
|
|
srpm) ;;
|
|
*)
|
|
AC_MSG_RESULT([Error!])
|
|
AC_MSG_ERROR([Bad value "$ZFS_CONFIG" for --with-config,
|
|
user kernel|user|all|srpm]) ;;
|
|
esac
|
|
|
|
AM_CONDITIONAL([INIT_SYSV], [test "x$ZFS_INIT_SYSV" = "xyes"])
|
|
AM_CONDITIONAL([INIT_SYSTEMD], [test "x$ZFS_INIT_SYSTEMD" = "xyes"])
|
|
AM_CONDITIONAL([WANT_MODULES_LOAD_D], [test "x$ZFS_WANT_MODULES_LOAD_D" = "xyes"])
|
|
|
|
AM_CONDITIONAL([CONFIG_USER],
|
|
[test "$ZFS_CONFIG" = user -o "$ZFS_CONFIG" = all])
|
|
AM_CONDITIONAL([CONFIG_KERNEL],
|
|
[test "$ZFS_CONFIG" = kernel -o "$ZFS_CONFIG" = all] &&
|
|
[test "x$enable_linux_builtin" != xyes ])
|
|
AM_CONDITIONAL([CONFIG_QAT],
|
|
[test "$ZFS_CONFIG" = kernel -o "$ZFS_CONFIG" = all] &&
|
|
[test "x$qatsrc" != x ])
|
|
AM_CONDITIONAL([WANT_DEVNAME2DEVID], [test "x$user_libudev" = xyes ])
|
|
AM_CONDITIONAL([WANT_MMAP_LIBAIO], [test "x$user_libaio" = xyes ])
|
|
AM_CONDITIONAL([PAM_ZFS_ENABLED], [test "x$enable_pam" = xyes])
|
|
])
|
|
|
|
dnl #
|
|
dnl # Check for rpm+rpmbuild to build RPM packages. If these tools
|
|
dnl # are missing it is non-fatal but you will not be able to build
|
|
dnl # RPM packages and will be warned if you try too.
|
|
dnl #
|
|
dnl # By default the generic spec file will be used because it requires
|
|
dnl # minimal dependencies. Distribution specific spec files can be
|
|
dnl # placed under the 'rpm/<distribution>' directory and enabled using
|
|
dnl # the --with-spec=<distribution> configure option.
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_RPM], [
|
|
RPM=rpm
|
|
RPMBUILD=rpmbuild
|
|
|
|
AC_MSG_CHECKING([whether $RPM is available])
|
|
AS_IF([tmp=$($RPM --version 2>/dev/null)], [
|
|
RPM_VERSION=$(echo $tmp | $AWK '/RPM/ { print $[3] }')
|
|
HAVE_RPM=yes
|
|
AC_MSG_RESULT([$HAVE_RPM ($RPM_VERSION)])
|
|
],[
|
|
HAVE_RPM=no
|
|
AC_MSG_RESULT([$HAVE_RPM])
|
|
])
|
|
|
|
AC_MSG_CHECKING([whether $RPMBUILD is available])
|
|
AS_IF([tmp=$($RPMBUILD --version 2>/dev/null)], [
|
|
RPMBUILD_VERSION=$(echo $tmp | $AWK '/RPM/ { print $[3] }')
|
|
HAVE_RPMBUILD=yes
|
|
AC_MSG_RESULT([$HAVE_RPMBUILD ($RPMBUILD_VERSION)])
|
|
],[
|
|
HAVE_RPMBUILD=no
|
|
AC_MSG_RESULT([$HAVE_RPMBUILD])
|
|
])
|
|
|
|
RPM_DEFINE_COMMON='--define "$(DEBUG_ZFS) 1"'
|
|
RPM_DEFINE_COMMON=${RPM_DEFINE_COMMON}' --define "$(DEBUGINFO_ZFS) 1"'
|
|
RPM_DEFINE_COMMON=${RPM_DEFINE_COMMON}' --define "$(DEBUG_KMEM_ZFS) 1"'
|
|
RPM_DEFINE_COMMON=${RPM_DEFINE_COMMON}' --define "$(DEBUG_KMEM_TRACKING_ZFS) 1"'
|
|
RPM_DEFINE_COMMON=${RPM_DEFINE_COMMON}' --define "$(ASAN_ZFS) 1"'
|
|
RPM_DEFINE_COMMON=${RPM_DEFINE_COMMON}' --define "$(UBSAN_ZFS) 1"'
|
|
|
|
AS_IF([test "x$enable_debuginfo" = xyes], [
|
|
RPM_DEFINE_COMMON=${RPM_DEFINE_COMMON}' --define "__strip /bin/true"'
|
|
])
|
|
|
|
RPM_DEFINE_UTIL=' --define "_initconfdir $(initconfdir)"'
|
|
|
|
dnl # Make the next three RPM_DEFINE_UTIL additions conditional, since
|
|
dnl # their values may not be set when running:
|
|
dnl #
|
|
dnl # ./configure --with-config=srpm
|
|
dnl #
|
|
AS_IF([test -n "$dracutdir" ], [
|
|
RPM_DEFINE_UTIL=${RPM_DEFINE_UTIL}' --define "_dracutdir $(dracutdir)"'
|
|
])
|
|
AS_IF([test -n "$udevdir" ], [
|
|
RPM_DEFINE_UTIL=${RPM_DEFINE_UTIL}' --define "_udevdir $(udevdir)"'
|
|
])
|
|
AS_IF([test -n "$udevruledir" ], [
|
|
RPM_DEFINE_UTIL=${RPM_DEFINE_UTIL}' --define "_udevruledir $(udevruledir)"'
|
|
])
|
|
RPM_DEFINE_UTIL=${RPM_DEFINE_UTIL}' $(DEFINE_SYSTEMD)'
|
|
RPM_DEFINE_UTIL=${RPM_DEFINE_UTIL}' $(DEFINE_PYZFS)'
|
|
RPM_DEFINE_UTIL=${RPM_DEFINE_UTIL}' $(DEFINE_PAM)'
|
|
RPM_DEFINE_UTIL=${RPM_DEFINE_UTIL}' $(DEFINE_PYTHON_VERSION)'
|
|
RPM_DEFINE_UTIL=${RPM_DEFINE_UTIL}' $(DEFINE_PYTHON_PKG_VERSION)'
|
|
|
|
dnl # Override default lib directory on Debian/Ubuntu systems. The
|
|
dnl # provided /usr/lib/rpm/platform/<arch>/macros files do not
|
|
dnl # specify the correct path for multiarch systems as described
|
|
dnl # by the packaging guidelines.
|
|
dnl #
|
|
dnl # https://wiki.ubuntu.com/MultiarchSpec
|
|
dnl # https://wiki.debian.org/Multiarch/Implementation
|
|
dnl #
|
|
AS_IF([test "$DEFAULT_PACKAGE" = "deb"], [
|
|
MULTIARCH_LIBDIR="lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
|
|
RPM_DEFINE_UTIL=${RPM_DEFINE_UTIL}' --define "_lib $(MULTIARCH_LIBDIR)"'
|
|
AC_SUBST(MULTIARCH_LIBDIR)
|
|
])
|
|
|
|
dnl # Make RPM_DEFINE_KMOD additions conditional on CONFIG_KERNEL,
|
|
dnl # since the values will not be set otherwise. The spec files
|
|
dnl # provide defaults for them.
|
|
dnl #
|
|
RPM_DEFINE_KMOD='--define "_wrong_version_format_terminate_build 0"'
|
|
AM_COND_IF([CONFIG_KERNEL], [
|
|
RPM_DEFINE_KMOD=${RPM_DEFINE_KMOD}' --define "kernels $(LINUX_VERSION)"'
|
|
RPM_DEFINE_KMOD=${RPM_DEFINE_KMOD}' --define "ksrc $(LINUX)"'
|
|
RPM_DEFINE_KMOD=${RPM_DEFINE_KMOD}' --define "kobj $(LINUX_OBJ)"'
|
|
RPM_DEFINE_KMOD=${RPM_DEFINE_KMOD}' --define "kernel_cc KERNEL_CC=$(KERNEL_CC)"'
|
|
RPM_DEFINE_KMOD=${RPM_DEFINE_KMOD}' --define "kernel_ld KERNEL_LD=$(KERNEL_LD)"'
|
|
RPM_DEFINE_KMOD=${RPM_DEFINE_KMOD}' --define "kernel_llvm KERNEL_LLVM=$(KERNEL_LLVM)"'
|
|
])
|
|
|
|
RPM_DEFINE_DKMS=''
|
|
|
|
SRPM_DEFINE_COMMON='--define "build_src_rpm 1"'
|
|
SRPM_DEFINE_UTIL=
|
|
SRPM_DEFINE_KMOD=
|
|
SRPM_DEFINE_DKMS=
|
|
|
|
RPM_SPEC_DIR="rpm/generic"
|
|
AC_ARG_WITH([spec],
|
|
AS_HELP_STRING([--with-spec=SPEC],
|
|
[Spec files 'generic|redhat']),
|
|
[RPM_SPEC_DIR="rpm/$withval"])
|
|
|
|
AC_MSG_CHECKING([whether spec files are available])
|
|
AC_MSG_RESULT([yes ($RPM_SPEC_DIR/*.spec.in)])
|
|
|
|
AC_SUBST(HAVE_RPM)
|
|
AC_SUBST(RPM)
|
|
AC_SUBST(RPM_VERSION)
|
|
|
|
AC_SUBST(HAVE_RPMBUILD)
|
|
AC_SUBST(RPMBUILD)
|
|
AC_SUBST(RPMBUILD_VERSION)
|
|
|
|
AC_SUBST(RPM_SPEC_DIR)
|
|
AC_SUBST(RPM_DEFINE_UTIL)
|
|
AC_SUBST(RPM_DEFINE_KMOD)
|
|
AC_SUBST(RPM_DEFINE_DKMS)
|
|
AC_SUBST(RPM_DEFINE_COMMON)
|
|
AC_SUBST(SRPM_DEFINE_UTIL)
|
|
AC_SUBST(SRPM_DEFINE_KMOD)
|
|
AC_SUBST(SRPM_DEFINE_DKMS)
|
|
AC_SUBST(SRPM_DEFINE_COMMON)
|
|
])
|
|
|
|
dnl #
|
|
dnl # Check for dpkg+dpkg-buildpackage to build DEB packages. If these
|
|
dnl # tools are missing it is non-fatal but you will not be able to build
|
|
dnl # DEB packages and will be warned if you try too.
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_DPKG], [
|
|
DPKG=dpkg
|
|
DPKGBUILD=dpkg-buildpackage
|
|
|
|
AC_MSG_CHECKING([whether $DPKG is available])
|
|
AS_IF([tmp=$($DPKG --version 2>/dev/null)], [
|
|
DPKG_VERSION=$(echo $tmp | $AWK '/Debian/ { print $[7] }')
|
|
HAVE_DPKG=yes
|
|
AC_MSG_RESULT([$HAVE_DPKG ($DPKG_VERSION)])
|
|
],[
|
|
HAVE_DPKG=no
|
|
AC_MSG_RESULT([$HAVE_DPKG])
|
|
])
|
|
|
|
AC_MSG_CHECKING([whether $DPKGBUILD is available])
|
|
AS_IF([tmp=$($DPKGBUILD --version 2>/dev/null)], [
|
|
DPKGBUILD_VERSION=$(echo $tmp | \
|
|
$AWK '/Debian/ { print $[4] }' | cut -f-4 -d'.')
|
|
HAVE_DPKGBUILD=yes
|
|
AC_MSG_RESULT([$HAVE_DPKGBUILD ($DPKGBUILD_VERSION)])
|
|
],[
|
|
HAVE_DPKGBUILD=no
|
|
AC_MSG_RESULT([$HAVE_DPKGBUILD])
|
|
])
|
|
|
|
AC_SUBST(HAVE_DPKG)
|
|
AC_SUBST(DPKG)
|
|
AC_SUBST(DPKG_VERSION)
|
|
|
|
AC_SUBST(HAVE_DPKGBUILD)
|
|
AC_SUBST(DPKGBUILD)
|
|
AC_SUBST(DPKGBUILD_VERSION)
|
|
AC_SUBST([CFGOPTS], ["$CFGOPTS"])
|
|
])
|
|
|
|
dnl #
|
|
dnl # Until native packaging for various different packing systems
|
|
dnl # can be added the least we can do is attempt to use alien to
|
|
dnl # convert the RPM packages to the needed package type. This is
|
|
dnl # a hack but so far it has worked reasonable well.
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_ALIEN], [
|
|
ALIEN=alien
|
|
|
|
AC_MSG_CHECKING([whether $ALIEN is available])
|
|
AS_IF([tmp=$($ALIEN --version 2>/dev/null)], [
|
|
ALIEN_VERSION=$(echo $tmp | $AWK '{ print $[3] }')
|
|
ALIEN_MAJOR=$(echo ${ALIEN_VERSION} | $AWK -F'.' '{ print $[1] }')
|
|
ALIEN_MINOR=$(echo ${ALIEN_VERSION} | $AWK -F'.' '{ print $[2] }')
|
|
ALIEN_POINT=$(echo ${ALIEN_VERSION} | $AWK -F'.' '{ print $[3] }')
|
|
HAVE_ALIEN=yes
|
|
AC_MSG_RESULT([$HAVE_ALIEN ($ALIEN_VERSION)])
|
|
],[
|
|
HAVE_ALIEN=no
|
|
AC_MSG_RESULT([$HAVE_ALIEN])
|
|
])
|
|
|
|
AC_SUBST(HAVE_ALIEN)
|
|
AC_SUBST(ALIEN)
|
|
AC_SUBST(ALIEN_VERSION)
|
|
AC_SUBST(ALIEN_MAJOR)
|
|
AC_SUBST(ALIEN_MINOR)
|
|
AC_SUBST(ALIEN_POINT)
|
|
])
|
|
|
|
dnl #
|
|
dnl # Using the VENDOR tag from config.guess set the default
|
|
dnl # package type for 'make pkg': (rpm | deb | tgz)
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
|
|
AC_MSG_CHECKING([os distribution])
|
|
AC_ARG_WITH([vendor],
|
|
[AS_HELP_STRING([--with-vendor],
|
|
[Distribution vendor @<:@default=check@:>@])],
|
|
[with_vendor=$withval],
|
|
[with_vendor=check])
|
|
AS_IF([test "x$with_vendor" = "xcheck"],[
|
|
if test -f /etc/toss-release ; then
|
|
VENDOR=toss ;
|
|
elif test -f /etc/fedora-release ; then
|
|
VENDOR=fedora ;
|
|
elif test -f /etc/redhat-release ; then
|
|
VENDOR=redhat ;
|
|
elif test -f /etc/gentoo-release ; then
|
|
VENDOR=gentoo ;
|
|
elif test -f /etc/arch-release ; then
|
|
VENDOR=arch ;
|
|
elif test -f /etc/SuSE-release ; then
|
|
VENDOR=sles ;
|
|
elif test -f /etc/slackware-version ; then
|
|
VENDOR=slackware ;
|
|
elif test -f /etc/lunar.release ; then
|
|
VENDOR=lunar ;
|
|
elif test -f /etc/lsb-release ; then
|
|
VENDOR=ubuntu ;
|
|
elif test -f /etc/debian_version ; then
|
|
VENDOR=debian ;
|
|
elif test -f /etc/alpine-release ; then
|
|
VENDOR=alpine ;
|
|
elif test -f /bin/freebsd-version ; then
|
|
VENDOR=freebsd ;
|
|
elif test -f /etc/openEuler-release ; then
|
|
VENDOR=openeuler ;
|
|
else
|
|
VENDOR= ;
|
|
fi],
|
|
[ test "x${with_vendor}" != x],[
|
|
VENDOR="$with_vendor" ],
|
|
[ VENDOR= ; ]
|
|
)
|
|
AC_MSG_RESULT([$VENDOR])
|
|
AC_SUBST(VENDOR)
|
|
|
|
AC_MSG_CHECKING([default package type])
|
|
case "$VENDOR" in
|
|
toss) DEFAULT_PACKAGE=rpm ;;
|
|
redhat) DEFAULT_PACKAGE=rpm ;;
|
|
fedora) DEFAULT_PACKAGE=rpm ;;
|
|
gentoo) DEFAULT_PACKAGE=tgz ;;
|
|
alpine) DEFAULT_PACKAGE=tgz ;;
|
|
arch) DEFAULT_PACKAGE=tgz ;;
|
|
sles) DEFAULT_PACKAGE=rpm ;;
|
|
slackware) DEFAULT_PACKAGE=tgz ;;
|
|
lunar) DEFAULT_PACKAGE=tgz ;;
|
|
ubuntu) DEFAULT_PACKAGE=deb ;;
|
|
debian) DEFAULT_PACKAGE=deb ;;
|
|
freebsd) DEFAULT_PACKAGE=pkg ;;
|
|
openeuler) DEFAULT_PACKAGE=rpm ;;
|
|
*) DEFAULT_PACKAGE=rpm ;;
|
|
esac
|
|
AC_MSG_RESULT([$DEFAULT_PACKAGE])
|
|
AC_SUBST(DEFAULT_PACKAGE)
|
|
|
|
AC_MSG_CHECKING([default init directory])
|
|
case "$VENDOR" in
|
|
freebsd) initdir=$sysconfdir/rc.d ;;
|
|
*) initdir=$sysconfdir/init.d;;
|
|
esac
|
|
AC_MSG_RESULT([$initdir])
|
|
AC_SUBST(initdir)
|
|
|
|
AC_MSG_CHECKING([default shell])
|
|
case "$VENDOR" in
|
|
gentoo) DEFAULT_INIT_SHELL="/sbin/openrc-run";;
|
|
alpine) DEFAULT_INIT_SHELL="/sbin/openrc-run";;
|
|
*) DEFAULT_INIT_SHELL="/bin/sh" ;;
|
|
esac
|
|
|
|
AC_MSG_RESULT([$DEFAULT_INIT_SHELL])
|
|
AC_SUBST(DEFAULT_INIT_SHELL)
|
|
|
|
AC_MSG_CHECKING([default nfs server init script])
|
|
AS_IF([test "$VENDOR" = "debian"],
|
|
[DEFAULT_INIT_NFS_SERVER="nfs-kernel-server"],
|
|
[DEFAULT_INIT_NFS_SERVER="nfs"]
|
|
)
|
|
AC_MSG_RESULT([$DEFAULT_INIT_NFS_SERVER])
|
|
AC_SUBST(DEFAULT_INIT_NFS_SERVER)
|
|
|
|
AC_MSG_CHECKING([default init config directory])
|
|
case "$VENDOR" in
|
|
alpine) initconfdir=/etc/conf.d ;;
|
|
gentoo) initconfdir=/etc/conf.d ;;
|
|
toss) initconfdir=/etc/sysconfig ;;
|
|
redhat) initconfdir=/etc/sysconfig ;;
|
|
fedora) initconfdir=/etc/sysconfig ;;
|
|
sles) initconfdir=/etc/sysconfig ;;
|
|
openeuler) initconfdir=/etc/sysconfig ;;
|
|
ubuntu) initconfdir=/etc/default ;;
|
|
debian) initconfdir=/etc/default ;;
|
|
freebsd) initconfdir=$sysconfdir/rc.conf.d;;
|
|
*) initconfdir=/etc/default ;;
|
|
esac
|
|
AC_MSG_RESULT([$initconfdir])
|
|
AC_SUBST(initconfdir)
|
|
|
|
AC_MSG_CHECKING([whether initramfs-tools is available])
|
|
if test -d /usr/share/initramfs-tools ; then
|
|
RPM_DEFINE_INITRAMFS='--define "_initramfs 1"'
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
RPM_DEFINE_INITRAMFS=''
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
AC_SUBST(RPM_DEFINE_INITRAMFS)
|
|
|
|
AC_MSG_CHECKING([default bash completion directory])
|
|
case "$VENDOR" in
|
|
ubuntu) bashcompletiondir=/usr/share/bash-completion/completions ;;
|
|
debian) bashcompletiondir=/usr/share/bash-completion/completions ;;
|
|
freebsd) bashcompletiondir=$sysconfdir/bash_completion.d;;
|
|
*) bashcompletiondir=/etc/bash_completion.d ;;
|
|
esac
|
|
AC_MSG_RESULT([$bashcompletiondir])
|
|
AC_SUBST(bashcompletiondir)
|
|
|
|
])
|
|
|
|
dnl #
|
|
dnl # Default ZFS package configuration
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_PACKAGE], [
|
|
ZFS_AC_DEFAULT_PACKAGE
|
|
AS_IF([test x$VENDOR != xfreebsd], [
|
|
ZFS_AC_RPM
|
|
ZFS_AC_DPKG
|
|
ZFS_AC_ALIEN
|
|
])
|
|
])
|