The current method to build against DKMS installs of ZFS and SPL
assumes directories like this:
/var/lib/dkms/spl/${VERSION}/build
/var/lib/dkms/zfs/${VERSION}/build
Unfortunately, that "build" directory was really just a temporary
step in the DKMS build process. Older versions of DKMS forgot to
clean up that directory, but in RHEL7 at least, DKMS no longer
leaves that aroudn.
Instead we need to look in these places for source code:
/var/lib/dkms/spl/${VERSION}/source
/var/lib/dkms/zfs/${VERSION}/source
and in these places for the per-kernel object info:
/var/lib/dkms/spl/${VERSION}/${LINUXRELEASE}/${target_cpu}
/var/lib/dkms/zfs/${VERSION}/${LINUXRELEASE}/${target_cpu}
The changes in this patch update the Lustre build system to
look in those corrected directories for DKMS builds of SPL
and ZFS.
Change-Id: I614b5fc6a6a506cb3f927b2c39ce27160979aaf7
Signed-off-by: Christopher J. Morrone <morrone2@llnl.gov>
Reviewed-on: http://review.whamcloud.com/17536
Tested-by: Jenkins
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Faccini Bruno <bruno.faccini@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
dnl # support was explicitly required if the headers cannot
dnl # be located it is treated as a fatal error.
dnl #
dnl # support was explicitly required if the headers cannot
dnl # be located it is treated as a fatal error.
dnl #
-dnl # * /var/lib/dkms/zfs/${VERSION}/build
+dnl # * /var/lib/dkms/zfs/${VERSION}/source
dnl # * /usr/src/zfs-${VERSION}/${LINUXRELEASE}
dnl # * /usr/src/zfs-${VERSION}
dnl # * ../spl/
dnl # * /usr/src/zfs-${VERSION}/${LINUXRELEASE}
dnl # * /usr/src/zfs-${VERSION}
dnl # * ../spl/
dnl #
dnl # --with-spl - Enable spl support and attempt to autodetect the spl
dnl # --with-spl=yes headers in one of the following places in this order:
dnl #
dnl # --with-spl - Enable spl support and attempt to autodetect the spl
dnl # --with-spl=yes headers in one of the following places in this order:
-dnl # * /var/lib/dkms/spl/${VERSION}/build
+dnl # * /var/lib/dkms/spl/${VERSION}/source
dnl # * /usr/src/spl-${VERSION}/${LINUXRELEASE}
dnl # * /usr/src/spl-${VERSION}
dnl # * ../spl/
dnl # * /usr/src/spl-${VERSION}/${LINUXRELEASE}
dnl # * /usr/src/spl-${VERSION}
dnl # * ../spl/
dnl # source directory. In order of preference:
dnl #
splver=$(ls -1 /usr/src/ | grep -m1 spl | cut -f2 -d'-')
dnl # source directory. In order of preference:
dnl #
splver=$(ls -1 /usr/src/ | grep -m1 spl | cut -f2 -d'-')
- splsrc0="/var/lib/dkms/spl/${splver}/build"
+ spldkms="/var/lib/dkms/spl/${splver}"
splsrc1="/usr/src/spl-${splver}/${LINUXRELEASE}"
splsrc2="/usr/src/spl-${splver}"
splsrc3="../spl/"
splsrc1="/usr/src/spl-${splver}/${LINUXRELEASE}"
splsrc2="/usr/src/spl-${splver}"
splsrc3="../spl/"
AC_MSG_CHECKING([spl source directory])
AS_IF([test -z "${splsrc}"], [
AC_MSG_CHECKING([spl source directory])
AS_IF([test -z "${splsrc}"], [
- AS_IF([test -e "${splsrc0}/spl.release.in"], [
- splsrc=${splsrc0}
+ AS_IF([test -e "${spldkms}/source/spl.release.in"], [
+ splsrc=${spldkms}/source
], [test -e "${splsrc1}/spl.release.in"], [
splsrc=${splsrc1}
], [test -e "${splsrc2}/spl.release.in"], [
], [test -e "${splsrc1}/spl.release.in"], [
splsrc=${splsrc1}
], [test -e "${splsrc2}/spl.release.in"], [
dnl #
AC_MSG_CHECKING([spl build directory])
AS_IF([test -z "$splobj"], [
dnl #
AC_MSG_CHECKING([spl build directory])
AS_IF([test -z "$splobj"], [
- AS_IF([test -e "${splsrc}/${LINUXRELEASE}/spl_config.h"], [
+ AS_IF([test "${splsrc}" = "${spldkms}/source"], [
+ AS_IF([test -e "${spldkms}/${LINUXRELEASE}/${target_cpu}/spl_config.h"], [
+ splobj=${spldkms}/${LINUXRELEASE}/${target_cpu}
+ ], [
+ splobj="[Not found]"
+ ])
+ ],[test -e "${splsrc}/${LINUXRELEASE}/spl_config.h"], [
splobj="${splsrc}/${LINUXRELEASE}"
], [test -e "${splsrc}/spl_config.h"], [
splobj="${splsrc}"
splobj="${splsrc}/${LINUXRELEASE}"
], [test -e "${splsrc}/spl_config.h"], [
splobj="${splsrc}"
dnl # source directory. In order of preference:
dnl #
zfsver=$(ls -1 /usr/src/ | grep -m1 zfs | cut -f2 -d'-')
dnl # source directory. In order of preference:
dnl #
zfsver=$(ls -1 /usr/src/ | grep -m1 zfs | cut -f2 -d'-')
- zfssrc0="/var/lib/dkms/zfs/${zfsver}/build"
+ zfsdkms="/var/lib/dkms/zfs/${zfsver}"
zfssrc1="/usr/src/zfs-${zfsver}/${LINUXRELEASE}"
zfssrc2="/usr/src/zfs-${zfsver}"
zfssrc3="../zfs/"
zfssrc1="/usr/src/zfs-${zfsver}/${LINUXRELEASE}"
zfssrc2="/usr/src/zfs-${zfsver}"
zfssrc3="../zfs/"
AC_MSG_CHECKING([zfs source directory])
AS_IF([test -z "${zfssrc}"], [
AC_MSG_CHECKING([zfs source directory])
AS_IF([test -z "${zfssrc}"], [
- AS_IF([test -e "${zfssrc0}/zfs.release.in"], [
- zfssrc=${zfssrc0}
+ AS_IF([test -e "${zfsdkms}/source/zfs.release.in"], [
+ zfssrc=${zfsdkms}/source
], [test -e "${zfssrc1}/zfs.release.in"], [
zfssrc=${zfssrc1}
], [test -e "${zfssrc2}/zfs.release.in"], [
], [test -e "${zfssrc1}/zfs.release.in"], [
zfssrc=${zfssrc1}
], [test -e "${zfssrc2}/zfs.release.in"], [
dnl #
AC_MSG_CHECKING([zfs build directory])
AS_IF([test -z "$zfsobj"], [
dnl #
AC_MSG_CHECKING([zfs build directory])
AS_IF([test -z "$zfsobj"], [
- AS_IF([test -e "${zfssrc}/${LINUXRELEASE}/zfs_config.h"], [
+ AS_IF([test "${zfssrc}" = "${zfsdkms}/source"], [
+ AS_IF([test -e "${zfsdkms}/${LINUXRELEASE}/${target_cpu}/zfs_config.h"], [
+ zfsobj=${zfsdkms}/${LINUXRELEASE}/${target_cpu}
+ ], [
+ zfsobj="[Not found]"
+ ])
+ ], [test -e "${zfssrc}/${LINUXRELEASE}/zfs_config.h"], [
zfsobj="${zfssrc}/${LINUXRELEASE}"
], [test -e "${zfssrc}/zfs_config.h"], [
zfsobj="${zfssrc}"
zfsobj="${zfssrc}/${LINUXRELEASE}"
], [test -e "${zfssrc}/zfs_config.h"], [
zfsobj="${zfssrc}"