Configure --with-spl{-obj} auto-detect cleanup
Because the install location for the spl/zfs-devel headers was changed we need to refresh the auto-detect code. Note that for packaging which already explicitly calls --with-spl{-obj} nothing has changed. The updated code is now structured like that in ZFS_AC_KERNEL and should be cleaner and easier to maintain. In addition, it's stricter about detecting a valid source and object directory. It requires: * The source directory contains the file 'spl.release' * The object directory contains the file 'spl_config.h' * The following paths will be checked. Notice the /var/lib/ and /usr/src paths require that the spl and zfs version be matched. This is done to prevent accidentally mixing releases. dnl # 1) /var/lib/dkms/spl/<version>/build dnl # 2) /usr/src/spl-<version>/<kernel-version> dnl # 3) /usr/src/spl-<version> dnl # 4) ../spl dnl # 5) /usr/src/kernels/<kernel-version> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
parent
775f2d34a3
commit
9b2af9a097
|
@ -292,45 +292,30 @@ AC_DEFUN([ZFS_AC_SPL], [
|
||||||
[Path to spl build objects]),
|
[Path to spl build objects]),
|
||||||
[splbuild="$withval"])
|
[splbuild="$withval"])
|
||||||
|
|
||||||
|
dnl #
|
||||||
|
dnl # The existence of spl.release.in is used to identify a valid
|
||||||
|
dnl # source directory. In order of preference:
|
||||||
|
dnl #
|
||||||
|
splsrc0="/var/lib/dkms/spl/${VERSION}/build"
|
||||||
|
splsrc1="/usr/src/spl-${VERSION}/${LINUX_VERSION}"
|
||||||
|
splsrc2="/usr/src/spl-${VERSION}"
|
||||||
|
splsrc3="../spl/"
|
||||||
|
splsrc4="$LINUX"
|
||||||
|
|
||||||
AC_MSG_CHECKING([spl source directory])
|
AC_MSG_CHECKING([spl source directory])
|
||||||
AS_IF([test -z "$splsrc"], [
|
AS_IF([test -z "${splsrc}"], [
|
||||||
dnl #
|
AS_IF([ test -e "${splsrc0}/spl.release.in"], [
|
||||||
dnl # Look in the standard development package location
|
splsrc=${splsrc0}
|
||||||
dnl #
|
], [ test -e "${splsrc1}/spl.release.in"], [
|
||||||
sourcelink=`ls -1d /usr/src/spl-*/${LINUX_VERSION} \
|
splsrc=${splsrc1}
|
||||||
2>/dev/null | tail -1`
|
], [ test -e "${splsrc2}/spl.release.in"], [
|
||||||
|
splsrc=${splsrc2}
|
||||||
dnl #
|
], [ test -e "${splsrc3}/spl.release.in"], [
|
||||||
dnl # Look in the DKMS source location
|
splsrc=$(readlink -f "${splsrc3}")
|
||||||
dnl #
|
], [ test -e "${splsrc4}/spl.release.in" ], [
|
||||||
AS_IF([test -z "$sourcelink" || test ! -e $sourcelink/spl_config.h], [
|
splsrc=${splsrc4}
|
||||||
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
|
|
||||||
])
|
|
||||||
|
|
||||||
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])
|
splsrc="[Not found]"
|
||||||
AC_MSG_ERROR([
|
|
||||||
*** Please make sure the spl devel package for your distribution
|
|
||||||
*** is installed then try again. If that fails you can specify the
|
|
||||||
*** location of the spl source with the '--with-spl=PATH' option.])
|
|
||||||
])
|
])
|
||||||
], [
|
], [
|
||||||
AS_IF([test "$splsrc" = "NONE"], [
|
AS_IF([test "$splsrc" = "NONE"], [
|
||||||
|
@ -340,11 +325,38 @@ AC_DEFUN([ZFS_AC_SPL], [
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_MSG_RESULT([$splsrc])
|
AC_MSG_RESULT([$splsrc])
|
||||||
|
AS_IF([ test ! -e "$splsrc/spl.release.in"], [
|
||||||
|
AC_MSG_ERROR([
|
||||||
|
*** Please make sure the kmod spl devel package for your distribution
|
||||||
|
*** is installed then try again. If that fails you can specify the
|
||||||
|
*** location of the spl source with the '--with-spl=PATH' option.])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl #
|
||||||
|
dnl # The existence of the spl_config.h is used to identify a valid
|
||||||
|
dnl # spl object directory. In many cases the object and source
|
||||||
|
dnl # directory are the same, however the objects may also reside
|
||||||
|
dnl # is a subdirectory named after the kernel version.
|
||||||
|
dnl #
|
||||||
AC_MSG_CHECKING([spl build directory])
|
AC_MSG_CHECKING([spl build directory])
|
||||||
AS_IF([test -z "$splbuild"], [
|
AS_IF([test -z "$splbuild"], [
|
||||||
splbuild=${splsrc}
|
AS_IF([ test -e "${splsrc}/${LINUX_VERSION}/spl_config.h" ], [
|
||||||
|
splbuild="${splsrc}/${LINUX_VERSION}"
|
||||||
|
], [ test -e "${splsrc}/spl_config.h" ], [
|
||||||
|
splbuild="${splsrc}"
|
||||||
|
], [
|
||||||
|
splbuild="[Not found]"
|
||||||
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_MSG_RESULT([$splbuild])
|
AC_MSG_RESULT([$splbuild])
|
||||||
|
AS_IF([ ! test -e "$splbuild/spl_config.h"], [
|
||||||
|
AC_MSG_ERROR([
|
||||||
|
*** Please make sure the kmod spl devel <kernel> package for your
|
||||||
|
*** distribution is installed then try again. If that fails you
|
||||||
|
*** can specify the location of the spl objects with the
|
||||||
|
*** '--with-spl-obj=PATH' option.])
|
||||||
|
])
|
||||||
|
|
||||||
AC_MSG_CHECKING([spl source version])
|
AC_MSG_CHECKING([spl source version])
|
||||||
AS_IF([test -r $splbuild/spl_config.h &&
|
AS_IF([test -r $splbuild/spl_config.h &&
|
||||||
|
|
Loading…
Reference in New Issue