Configure checks for kernel build options incompatible with the license
Twice now I've been bitten by building agaist a kernel which is configured such that it is incompatible with the CDDL license. These build failures don't occur until the linking phase at which point they simply callout the offending symbol. No location information can be provided at this point so it often can be confusing what the problem is particularly when building against a new kernel for the first time. To help address this I've added a configure check which can be extended over time to detect known kernel config options which if set will break the ZFS build. Currently I have just added CONFIG_DEBUG_LOCK_ALLOC which makes mutex's GPL-only and is on by default in the RHEL6 alpha builds. I know for a fact there are other similiar options which can be added as they are encountered.
This commit is contained in:
parent
7df02c0f57
commit
fd7578215e
2
META
2
META
|
@ -4,3 +4,5 @@ Branch: 1.0
|
|||
Version: 0.4.7
|
||||
Release: 1
|
||||
Release-Tags: relext
|
||||
License: CDDL
|
||||
Author: Sun Microsystems/Oracle, Lawrence Livermore National Laboratory
|
||||
|
|
|
@ -4,6 +4,7 @@ dnl #
|
|||
AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
|
||||
ZFS_AC_KERNEL
|
||||
ZFS_AC_SPL
|
||||
ZFS_AC_KERNEL_CONFIG
|
||||
ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS
|
||||
ZFS_AC_KERNEL_TYPE_FMODE_T
|
||||
ZFS_AC_KERNEL_OPEN_BDEV_EXCLUSIVE
|
||||
|
@ -238,6 +239,30 @@ AC_DEFUN([ZFS_AC_SPL], [
|
|||
ZFS_AC_SPL_MODULE_SYMVERS
|
||||
])
|
||||
|
||||
dnl #
|
||||
dnl # There are certain kernel build options which when enabled are
|
||||
dnl # completely incompatible with non GPL kernel modules. It is best
|
||||
dnl # to detect these at configure time and fail with a clear error
|
||||
dnl # rather than build everything and fail during linking.
|
||||
dnl #
|
||||
dnl # CONFIG_DEBUG_LOCK_ALLOC - Maps mutex_lock() to mutex_lock_nested()
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_CONFIG], [
|
||||
|
||||
if test "$ZFS_META_LICENSE" = CDDL; then
|
||||
ZFS_LINUX_CONFIG([DEBUG_LOCK_ALLOC],
|
||||
AC_MSG_ERROR([
|
||||
*** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is
|
||||
*** incompatible with the CDDL license. You must rebuild
|
||||
*** your kernel without this option.]), [])
|
||||
fi
|
||||
|
||||
if test "$ZFS_META_LICENSE" = GPL; then
|
||||
AC_DEFINE([HAVE_GPL_ONLY_SYMBOLS], [1],
|
||||
[Define to 1 if licensed under the GPL])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl #
|
||||
dnl # ZFS_LINUX_CONFTEST
|
||||
dnl #
|
||||
|
|
|
@ -1,13 +1,9 @@
|
|||
AC_DEFUN([ZFS_AC_LICENSE], [
|
||||
AC_MSG_CHECKING([zfs license])
|
||||
LICENSE=`grep MODULE_LICENSE module/zfs/zfs_ioctl.c | cut -f2 -d'"'`
|
||||
AC_MSG_RESULT([$LICENSE])
|
||||
if test "$LICENSE" = GPL; then
|
||||
AC_DEFINE([HAVE_GPL_ONLY_SYMBOLS], [1],
|
||||
[Define to 1 if module is licensed under the GPL])
|
||||
fi
|
||||
AC_MSG_CHECKING([zfs author])
|
||||
AC_MSG_RESULT([$ZFS_META_AUTHOR])
|
||||
|
||||
AC_SUBST(LICENSE)
|
||||
AC_MSG_CHECKING([zfs license])
|
||||
AC_MSG_RESULT([$ZFS_META_LICENSE])
|
||||
])
|
||||
|
||||
AC_DEFUN([ZFS_AC_DEBUG], [
|
||||
|
|
|
@ -48,6 +48,14 @@ AC_DEFUN([ZFS_AC_META], [
|
|||
AC_SUBST([ZFS_META_RELEASE])
|
||||
fi
|
||||
|
||||
ZFS_META_LICENSE=_ZFS_AC_META_GETVAL([LICENSE]);
|
||||
if test -n "$ZFS_META_LICENSE"; then
|
||||
AC_DEFINE_UNQUOTED([ZFS_META_LICENSE], ["$ZFS_META_LICENSE"],
|
||||
[Define the project license.]
|
||||
)
|
||||
AC_SUBST([ZFS_META_LICENSE])
|
||||
fi
|
||||
|
||||
if test -n "$ZFS_META_NAME" -a -n "$ZFS_META_VERSION"; then
|
||||
ZFS_META_ALIAS="$ZFS_META_NAME-$ZFS_META_VERSION"
|
||||
test -n "$ZFS_META_RELEASE" &&
|
||||
|
|
Loading…
Reference in New Issue