From 69c7bdb6e70644bb2efebcee4bf109ace08eb0be Mon Sep 17 00:00:00 2001 From: Turbo Fredriksson Date: Sat, 16 Nov 2013 03:29:53 +0000 Subject: [PATCH] Accept kernel source dir(s) specified by ./configure This adds ability to set the location of the kernel via defines when building from the spec files. This is useful when building against a kernel installed in a non-standard location. Signed-off-by: Turbo Fredriksson Signed-off-by: Brian Behlendorf Closes #1874 --- config/zfs-build.m4 | 2 +- rpm/generic/zfs-kmod.spec.in | 43 ++++++++++++++++++++++++++---------- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/config/zfs-build.m4 b/config/zfs-build.m4 index 477b916786b8..96a8ec53c5e1 100644 --- a/config/zfs-build.m4 +++ b/config/zfs-build.m4 @@ -141,7 +141,7 @@ AC_DEFUN([ZFS_AC_RPM], [ RPM_DEFINE_COMMON='--define "$(DEBUG_ZFS) 1" --define "$(DEBUG_DMU_TX) 1"' RPM_DEFINE_UTIL= - RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)"' + RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)" --define "require_spldir $(SPL)" --define "require_splobj $(SPL_OBJ)" --define "ksrc $(LINUX)" --define "kobj $(LINUX_OBJ)"' RPM_DEFINE_DKMS= SRPM_DEFINE_COMMON='--define "build_src_rpm 1"' diff --git a/rpm/generic/zfs-kmod.spec.in b/rpm/generic/zfs-kmod.spec.in index 4eb25e02b9f1..0284f6a7fa63 100644 --- a/rpm/generic/zfs-kmod.spec.in +++ b/rpm/generic/zfs-kmod.spec.in @@ -1,4 +1,33 @@ %define module @PACKAGE@ + +%if !%{defined ksrc} +%if 0%{?rhel}%{?fedora} +%define ksrc ${kernel_version##*___} +%else +%define ksrc "$( \ + if [ -e "/usr/src/linux-${kernel_version%%___*}" ]; then \ + echo "/usr/src/linux-${kernel_version%%___*}"; \ + elif [ -e "/lib/modules/${kernel_version%%___*}/source" ]; then \ + echo "/lib/modules/${kernel_version%%___*}/source"; \ + else \ + echo "/lib/modules/${kernel_version%%___*}/build"; \ + fi)" +%endif +%endif + +%if !%{defined kobj} +%if 0%{?rhel}%{?fedora} +%define kobj ${kernel_version##*___} +%else +%define kobj "$( \ + if [ -e "/usr/src/linux-${kernel_version%%___*}" ]; then \ + echo "/usr/src/linux-${kernel_version%%___*}"; \ + else \ + echo "/lib/modules/${kernel_version%%___*}/build"; \ + fi)" +%endif +%endif + #define repo rpmfusion #define repo chaos @@ -125,18 +154,8 @@ for kernel_version in %{?kernel_versions}; do cd _kmod_build_${kernel_version%%___*} %configure \ --with-config=kernel \ -%if 0%{?rhel}%{?fedora} - --with-linux="${kernel_version##*___}" \ - --with-linux-obj="${kernel_version##*___}" \ -%else - --with-linux="$( \ - if [ -e "/lib/modules/${kernel_version%%___*}/source" ]; then \ - echo "/lib/modules/${kernel_version%%___*}/source"; \ - else \ - echo "/lib/modules/${kernel_version%%___*}/build"; \ - fi)" \ - --with-linux-obj="/lib/modules/${kernel_version%%___*}/build" \ -%endif + --with-linux=%{ksrc} \ + --with-linux-obj=%{kobj} \ --with-spl="%{spldir}" \ --with-spl-obj="%{splobj}" \ %{debug} \