X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=config%2Fkernel.m4;h=efb408c40e56dcc0adb19588389720b6684698e0;hb=ca8b5af89d2c5826af7385bf18f3b377b0efde11;hp=a40bb5b6c1d3e92f75e57d1198613f2a11aa994e;hpb=705741827ab55e7d92c3eb74f332a5ddd24971b5;p=zfs.git diff --git a/config/kernel.m4 b/config/kernel.m4 index a40bb5b..efb408c 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -39,6 +39,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ ZFS_AC_KERNEL_GET_GENDISK ZFS_AC_KERNEL_RQ_IS_SYNC ZFS_AC_KERNEL_RQ_FOR_EACH_SEGMENT + ZFS_AC_KERNEL_DISCARD_GRANULARITY ZFS_AC_KERNEL_CONST_XATTR_HANDLER ZFS_AC_KERNEL_XATTR_HANDLER_GET ZFS_AC_KERNEL_XATTR_HANDLER_SET @@ -217,24 +218,45 @@ AC_DEFUN([ZFS_AC_KERNEL], [ dnl # dnl # Detect name used for the additional SPL Module.symvers file. If one dnl # does not exist this is likely because the SPL has been configured -dnl # but not built. To allow recursive builds a good guess is made as to -dnl # what this file will be named based on what it is named in the kernel -dnl # build products. This file will first be used at link time so if -dnl # the guess is wrong the build will fail then. This unfortunately -dnl # means the ZFS package does not contain a reliable mechanism to -dnl # detect symbols exported by the SPL at configure time. +dnl # but not built. The '--with-spl-timeout' option can be passed +dnl # to pause here, waiting for the file to appear from a concurrently +dnl # building SPL package. If the file does not appear in time, a good +dnl # guess is made as to what this file will be named based on what it +dnl # is named in the kernel build products. This file will first be +dnl # used at link time so if the guess is wrong the build will fail +dnl # then. This unfortunately means the ZFS package does not contain a +dnl # reliable mechanism to detect symbols exported by the SPL at +dnl # configure time. dnl # AC_DEFUN([ZFS_AC_SPL_MODULE_SYMVERS], [ + AC_ARG_WITH([spl-timeout], + AS_HELP_STRING([--with-spl-timeout=SECS], + [Wait SECS for symvers file to appear @<:@default=0@:>@]), + [timeout="$withval"], [timeout=0]) + AC_MSG_CHECKING([spl file name for module symbols]) - AS_IF([test -r $SPL_OBJ/Module.symvers], [ - SPL_SYMBOLS=Module.symvers - ], [test -r $SPL_OBJ/Modules.symvers], [ - SPL_SYMBOLS=Modules.symvers - ], [test -r $SPL_OBJ/module/Module.symvers], [ - SPL_SYMBOLS=Module.symvers - ], [test -r $SPL_OBJ/module/Modules.symvers], [ - SPL_SYMBOLS=Modules.symvers - ], [ + SPL_SYMBOLS=NONE + + while true; do + AS_IF([test -r $SPL_OBJ/Module.symvers], [ + SPL_SYMBOLS=Module.symvers + ], [test -r $SPL_OBJ/Modules.symvers], [ + SPL_SYMBOLS=Modules.symvers + ], [test -r $SPL_OBJ/module/Module.symvers], [ + SPL_SYMBOLS=Module.symvers + ], [test -r $SPL_OBJ/module/Modules.symvers], [ + SPL_SYMBOLS=Modules.symvers + ]) + + AS_IF([test $SPL_SYMBOLS != NONE -o $timeout -le 0], [ + break; + ], [ + sleep 1 + timeout=$((timeout-1)) + ]) + done + + AS_IF([test "$SPL_SYMBOLS" = NONE], [ SPL_SYMBOLS=$LINUX_SYMBOLS ]) @@ -259,14 +281,35 @@ AC_DEFUN([ZFS_AC_SPL], [ AC_MSG_CHECKING([spl source directory]) AS_IF([test -z "$splsrc"], [ + dnl # + dnl # Look in the standard development package location + dnl # sourcelink=`ls -1d /usr/src/spl-*/${LINUX_VERSION} \ 2>/dev/null | tail -1` - AS_IF([test -z "$sourcelink" || test ! -e $sourcelink], [ + dnl # + dnl # Look in the DKMS source location + dnl # + AS_IF([test -z "$sourcelink" || test ! -e $sourcelink/spl_config.h], [ + sourcelink=`ls -1d /var/lib/dkms/spl/*/build \ + 2>/dev/null | tail -1` + ]) + + dnl # + dnl # Look in the parent directory + dnl # + AS_IF([test -z "$sourcelink" || test ! -e $sourcelink/spl_config.h], [ sourcelink=../spl ]) - AS_IF([test -e $sourcelink], [ + dnl # + dnl # Look in the kernel directory + dnl # + AS_IF([test -z "$sourcelink" || test ! -e $sourcelink/spl_config.h], [ + sourcelink="$LINUX" + ]) + + AS_IF([test -e $sourcelink/spl_config.h], [ splsrc=`readlink -f ${sourcelink}` ], [ AC_MSG_RESULT([Not found])