X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=zfs-modules.spec.in;h=4ac965998dfd55de7d1b3393eb00af0b0a1a03c9;hb=b876dac776afc8ea2c598eac53b9903de01c6172;hp=220b1c11ed43b0e653dd774bc3cddce0c72d696d;hpb=1c5de20ae2511124613926e4f780572634818218;p=zfs.git diff --git a/zfs-modules.spec.in b/zfs-modules.spec.in index 220b1c1..4ac9659 100644 --- a/zfs-modules.spec.in +++ b/zfs-modules.spec.in @@ -22,6 +22,39 @@ %define kobj %{require_kobj} %endif +# Set using 'rpmbuild ... --with kernel ...', defaults to enabled. +%if %{defined _with_kernel} + %define with_kernel 1 +%else + %if %{defined _without_kernel} + %define with_kernel 0 + %else + %define with_kernel 1 + %endif +%endif + +# Set using 'rpmbuild ... --with kernel-debug ...', defaults to disabled. +%if %{defined _with_kernel_debug} + %define with_kernel_debug 1 +%else + %if %{defined _without_kernel_debug} + %define with_kernel_debug 0 + %else + %define with_kernel_debug 0 + %endif +%endif + +# Set using 'rpmbuild ... --with kernel-dkms ...', defaults to disabled. +%if %{defined _with_kernel_dkms} + %define with_kernel_dkms 1 +%else + %if %{defined _without_kernel_dkms} + %define with_kernel_dkms 0 + %else + %define with_kernel_dkms 0 + %endif +%endif + # Set using 'rpmbuild ... --with debug ...', defaults to disabled. %if %{defined _with_debug} %define kdebug --enable-debug @@ -61,16 +94,28 @@ %define krelease %{klnk}/.kernelrelease %endif - %define kver %((echo X; %{__cat} %{krelease} 2>/dev/null)|tail -1) + %define kver_kern %((echo X; %{__cat} %{krelease} 2>/dev/null)|tail -1) + %define kver_dbug %{nil} + %else + %define kver_kern %{kver} + %define kver_dbug %{nil} %endif %if %{undefined kverextra} - %define kverextra %(echo %{kver} | cut -f3 -d'-') + %define kverextra %(echo %{kver_kern} | cut -f3 -d'-') %endif - %define kpkg kernel-%{kverextra} - %define kdevpkg kernel-source - %define kverpkg %(echo %{kver} | %{__sed} -e 's/-%{kverextra}//g') + %define kpkg_kern kernel-%{kverextra} + %define kpkg_dbug %{nil} + %define kpkg_dkms dkms + + %define kdevpkg_kern kernel-source + %define kdevpkg_dbug %{nil} + %define kdevpkg_dkms dkms + + %define kverpkg_kern %(echo %{kver_kern} | %{__sed} -e 's/-%{kverextra}//g') + %define kverpkg_dbug %{nil} + %define kverpkg_dkms 2.2.0.2 # The kernel and rpm versions do not strictly match under SLES11 # e.g. kernel version 2.6.27.19-5 != rpm version 2.6.27.19-5.1 @@ -81,29 +126,19 @@ %endif %if %{undefined kdir} - %define kdir %{_usrsrc}/linux-%{kverpkg} - %endif - %if %{undefined kobj} - %define kobj %{kdir}-obj/%{_target_cpu}/%{kverextra} + %define kdir_kern %{_usrsrc}/linux-%{kverpkg_kern} + %define kdir_dbug %{nil} + %else + %define kdir_kern %{kdir} + %define kdir_dbug %{nil} %endif -%else -# CHAOS 4.x: -%if %{defined ch4} - %if %{undefined kver} - %define klnk %{_usrsrc}/kernels/*/include/config - %define kver %((echo X; %{__cat} %{klnk}/kernel.release - 2>/dev/null) | tail -1) - %endif - %define kpkg chaos-kernel - %define kdevpkg chaos-kernel-devel - %define kverpkg %{kver} - %define koppkg = - %if %{undefined kdir} - %define kdir %{_usrsrc}/kernels/%{kver} - %endif %if %{undefined kobj} - %define kobj %{kdir} + %define kobj_kern %{kdir_kern}-obj/%{_target_cpu}/%{kverextra} + %define kobj_dbug %{nil} + %else + %define kobj_kern %{kobj} + %define kobj_dbug %{nil} %endif %else @@ -111,26 +146,53 @@ %if %{defined el5} || %{defined el6} || %{defined ch5} %if %{undefined kver} %define klnk %{_usrsrc}/kernels/*/include/config - %define kver %((echo X; %{__cat} %{klnk}/kernel.release - 2>/dev/null) | tail -1) + %define kver_kern %((echo X; ((%{__cat} %{klnk}/kernel.release + 2>/dev/null) | %{__grep} -v debug)) | tail -1) + %define kver_dbug %((echo X; ((%{__cat} %{klnk}/kernel.release + 2>/dev/null) | %{__grep} debug)) | tail -1) + %else + %define kver_kern %{kver} + %define kver_dbug %{kver}.debug %endif - %define kpkg kernel - %define kdevpkg kernel-devel + + %define kpkg_kern kernel + %define kpkg_dbug kernel-debug + %define kpkg_dkms dkms + + %define kdevpkg_kern kernel-devel + %define kdevpkg_dbug kernel-debug-devel + %define kdevpkg_dkms dkms + + %define kverpkg_dkms 2.2.0.2 %if %{defined el6} || %{defined ch5} - %define kverpkg %(echo %{kver} | %{__sed} -e 's/.%{_target_cpu}//g') + %define kverpkg_kern %(echo %{kver_kern} | %{__sed} -e 's/.%{_target_cpu}//g') + %define kverpkg_dbug %(echo %{kver_dbug} | %{__sed} -e 's/.%{_target_cpu}//g' | %{__sed} -e 's/.debug//g') %else - %define kverpkg %{kver} + %define kverpkg_kern %{kver_kern} + %define kverpkg_dbug %{kver_dbug} %endif + %define koppkg = + %if %{undefined kdir} %if %{defined el6} || %{defined ch5} - %define kdir %{_usrsrc}/kernels/%{kver} + %define kdir_kern %{_usrsrc}/kernels/%{kver_kern} + %define kdir_dbug %{_usrsrc}/kernels/%{kver_dbug} %else - %define kdir %{_usrsrc}/kernels/%{kver}-%{_target_cpu} + %define kdir_kern %{_usrsrc}/kernels/%{kver_kern}-%{_target_cpu} + %define kdir_dbug %{_usrsrc}/kernels/%{kver_dbug}-%{_target_cpu} %endif + %else + %define kdir_kern %{kdir} + %define kdir_dbug %{kdir}.debug %endif + %if %{undefined kobj} - %define kobj %{kdir} + %define kobj_kern %{kdir_kern} + %define kobj_dbug %{kdir_dbug} + %else + %define kobj_kern %{kobj} + %define kobj_dbug %{kobj}.debug %endif %else @@ -138,37 +200,78 @@ %if %{defined fedora} %if %{undefined kver} %define klnk %{_usrsrc}/kernels/*/include/config - %define kver %((echo X; %{__cat} %{klnk}/kernel.release - 2>/dev/null) | tail -1) + %define kver_kern %((echo X; ((%{__cat} %{klnk}/kernel.release + 2>/dev/null) | %{__grep} -v debug)) | tail -1) + %define kver_dbug %((echo X; ((%{__cat} %{klnk}/kernel.release + 2>/dev/null) | %{__grep} debug)) | tail -1) + %else + %define kver_kern %{kver} + %define kver_dbug %{kver}.debug %endif - %define kpkg kernel - %define kdevpkg kernel-devel - %define kverpkg %(echo %{kver} | %{__sed} -e 's/.%{_target_cpu}//g') + + %define kpkg_kern kernel + %define kpkg_dbug kernel-debug + %define kpkg_dkms dkms + + %define kdevpkg_kern kernel-devel + %define kdevpkg_dbug kernel-debug-devel + %define kdevpkg_dkms dkms + + %define kverpkg_dkms 2.2.0.2 + %define kverpkg_kern %(echo %{kver_kern} | %{__sed} -e 's/.%{_target_cpu}//g') + %define kverpkg_dbug %(echo %{kver_dbug} | %{__sed} -e 's/.%{_target_cpu}//g' | %{__sed} -e 's/.debug//g') + %define koppkg = + %if %{undefined kdir} - %define kdir %{_usrsrc}/kernels/%{kver} + %define kdir_kern %{_usrsrc}/kernels/%{kver_kern} + %define kdir_dbug %{_usrsrc}/kernels/%{kver_dbug} + %else + %define kdir_kern %{kdir} + %define kdir_dbug %{kdir}.debug %endif + %if %{undefined kobj} - %define kobj %{kdir} + %define kobj_kern %{kdir_kern} + %define kobj_dbug %{kdir_dbug} + %else + %define kobj_kern %{kobj} + %define kobj_dbug %{kobj}.debug %endif %else # Unsupported distro: %if %{undefined kver} - %define kver %(uname -r) + %define kver_kern %(uname -r) + %define kver_dbug %{nil} + %else + %define kver_kern %{kver} + %define kver_dbug %{nil} %endif - %define kverpkg %{kver} + + %define kverpkg_kern %{kver_kern} + %define kverpkg_dbug %{nil} + %define kverpkg_dkms %{nil} + %if %{undefined kdir} - %define kdir /lib/modules/%{kver}/build + %define kdir_kern /lib/modules/%{kver_kern}/build + %define kdir_dbug %{nil} + %else + %define kdir_kern %{kdir} + %define kdir_dbug %{nil} %endif + %if %{undefined kobj} - %define kobj %{kdir} + %define kobj_kern %{kdir_kern} + %define kobj_dbug %{nil} + %else + %define kobj_kern %{kobj} + %define kobj_dbug %{nil} %endif %endif %endif %endif -%endif # spldir: Full path to the spl source headers # splobj: Full path to the spl build objects @@ -190,119 +293,366 @@ %endif %if %{undefined splver} - %define spllnk %{_usrsrc}/spl-*/%{kver} - %define splver %((echo X; %{__cat} %{spllnk}/spl.release + %define spllnk_kern %{_usrsrc}/spl-*/%{kver_kern} + %define spllnk_dbug %{_usrsrc}/spl-*/%{kver_dbug} + %define spllnk_dkms %{_var}/lib/dkms/spl/*/build + + %define splver_kern %((echo X; %{__cat} %{spllnk_kern}/spl.release + 2>/dev/null) | tail -1) + %define splver_dbug %((echo X; %{__cat} %{spllnk_dbug}/spl.release + 2>/dev/null) | tail -1) + %define splver_dkms %((echo X; %{__cat} %{spllnk_dkms}/spl.release 2>/dev/null) | tail -1) +%else + %define splver_kern %{splver} + %define splver_dbug %{splver} + %define splver_dksm %{splver} %endif -%define splpkg spl-modules -%define spldevpkg spl-modules-devel -%define splverpkg %{splver} + +%define splpkg_kern spl-modules +%define splpkg_dbug spl-modules-debug +%define splpkg_dkms spl-modules-dkms + +%define spldevpkg_kern spl-modules-devel +%define spldevpkg_dbug spl-modules-debug-devel +%define spldevpkg_dkms spl-modules-dkms + +%define splverpkg_kern %{splver_kern} +%define splverpkg_dbug %{splver_dbug} +%define splverpkg_dkms %{splver_dkms} + %if %{undefined spldir} - %define spldir %{_usrsrc}/spl-%{splver}/%{kver} + %define spldir_kern %{_usrsrc}/spl-%{splver_kern}/%{kver_kern} + %define spldir_dbug %{_usrsrc}/spl-%{splver_dbug}/%{kver_dbug} + %define spldir_dkms %{_usrsrc}/spl-%{splver_dkms} +%else + %define spldir_kern %{spldir} + %define spldir_dbug %{spldir}.debug + %define spldir_dkms %{spldir} %endif + %if %{undefined splobj} - %define splobj %{spldir} + %define splobj_kern %{spldir_kern} + %define splobj_dbug %{spldir_dbug} + %define splobj_dkms %{spldir_dkms} +%else + %define splobj_kern %{splobj} + %define splobj_dbug %{splobj}.debug + %define splobj_dkms %{splobj} %endif # Distro agnostic: %define name @PACKAGE@-modules %define version @VERSION@ -%define debug_package %{nil} # The kernel version should only be appended to a binary RPM. When # building a source RPM it must be kernel version agnostic. This means # the source RPM must never specify a required kernel version, but the # final RPM should be keyed to the kernel version it was built against. %if %{defined build_src_rpm} -%define release @ZFS_META_RELEASE@ -%if %{defined kpkg} -%define krequires %{kpkg} + +%define rel_kern @ZFS_META_RELEASE@ +%define rel_dbug @ZFS_META_RELEASE@ +%define rel_dkms @ZFS_META_RELEASE@ + +%if %{defined kpkg_kern} +%define req_kern %{kpkg_kern} %endif -%define splrequires %{splpkg} -%define spldevrequires %{spldevpkg} +%if %{defined kpkg_dbug} +%define req_dbug %{kpkg_dbug} +%endif +%if %{defined kpkg_dkms} +%define req_dkms %{kpkg_dkms} +%endif + +%define splreq_kern %{splpkg_kern} +%define splreq_dbug %{splpkg_dbug} +%define splreq_dkms %{splpkg_dkms} + +%define spldevreq_kern %{spldevpkg_kern} +%define spldevreq_dbug %{spldevpkg_dbug} +%define spldevreq_dkms %{spldevpkg_dkms} + %else -%define relext %(echo %{kverpkg} | %{__sed} -e 's/-/_/g') -%define release @ZFS_META_RELEASE@_%{relext} -%if %{defined kpkg} -%define krequires %{kpkg} %{koppkg} %{kverpkg} + +%define relext_kern %(echo %{kverpkg_kern} | %{__sed} -e 's/-/_/g') +%define relext_dbug %(echo %{kverpkg_dbug} | %{__sed} -e 's/-/_/g') +%define rel_kern @ZFS_META_RELEASE@_%{relext_kern} +%define rel_dbug @ZFS_META_RELEASE@_%{relext_dbug} +%define rel_dkms @ZFS_META_RELEASE@ + +%if %{defined kpkg_kern} +%define req_kern %{kpkg_kern} %{koppkg} %{kverpkg_kern} +%endif +%if %{defined kpkg_dbug} +%define req_dbug %{kpkg_dbug} %{koppkg} %{kverpkg_dbug} +%endif +%if %{defined kpkg_dkms} +%define req_dkms %{kpkg_dkms} >= %{kverpkg_dkms} %endif -%define splrequires %{splpkg} = %{splverpkg}_%{relext} -%define spldevrequires %{spldevpkg} = %{splverpkg}_%{relext} + +%define splreq_kern %{splpkg_kern} = %{splverpkg_kern}_%{relext_kern} +%define splreq_dbug %{splpkg_dbug} = %{splverpkg_dbug}_%{relext_dbug} +%define splreq_dkms %{splpkg_dkms} = %{splverpkg_dkms} + +%define spldevreq_kern %{spldevpkg_kern} = %{splverpkg_kern}_%{relext_kern} +%define spldevreq_dbug %{spldevpkg_dbug} = %{splverpkg_dbug}_%{relext_dbug} +%define spldevreq_dkms %{spldevpkg_dkms} = %{splverpkg_dkms} + %endif Summary: ZFS File System Group: Utilities/System Name: %{name} Version: %{version} -Release: %{release} +Release: %{rel_kern} License: @ZFS_META_LICENSE@ URL: git://github.com/zfsonlinux/zfs.git BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id} -un) Source: @PACKAGE@-%{version}.tar.gz -%if %{defined krequires} -Requires: %{krequires} + +%if %{?with_kernel} + +%if %{defined req_kern} +Requires: %{req_kern} %endif -%if %{defined kdevpkg} -BuildRequires: %{kdevpkg} +%if %{defined kdevpkg_kern} +BuildRequires: %{kdevpkg_kern} +%endif +%if %{defined splreq_kern} +Requires: %{splreq_kern} +%endif +%if %{defined spldevpkg_kern} +BuildRequires: %{spldevpkg_kern} %endif -Requires: %{splrequires} -BuildRequires: %{spldevpkg} Provides: lustre-backend-fs +%endif + %description The %{name} package contains kernel modules and support utilities for the %{name} file system. +%if %{?with_kernel} + %package devel Summary: ZFS File System Headers and Symbols Group: Development/Libraries -%if %{defined krequires} -Requires: %{krequires} +Release: %{rel_kern} +%if %{defined devreq_kern} +Requires: %{devreq_kern} %endif -%if %{defined kdevpkg} -Requires: %{kdevpkg} +%if %{defined kdevpkg_kern} +BuildRequires: %{kdevpkg_kern} +%endif +%if %{defined spldevreq_kern} +Requires: %{spldevreq_kern} +%endif +%if %{defined spldevpkg_kern} +BuildRequires: %{spldevpkg_kern} %endif -Requires: %{spldevrequires} %description devel -The %{name}-devel package contains the kernel header files and +The %{name}-devel package contains the kernel header files and Module.symvers symbols needed for building additional modules which use %{name}. +%endif +%if %{?with_kernel_debug} + +%package debug +Summary: ZFS File System (Debug) +Group: Utilities/System +Release: %{rel_dbug} +%if %{defined req_dbug} +Requires: %{req_dbug} +%endif +%if %{defined kdevpkg_dbug} +BuildRequires: %{kdevpkg_dbug} +%endif +%if %{defined splreq_dbug} +Requires: %{splreq_dbug} +%endif +%if %{defined spldevpkg_dbug} +BuildRequires: %{spldevpkg_dbug} +%endif +Provides: lustre-backend-fs + +%description debug +The %{name}-debug package contains debug kernel modules and support +utilities for the %{name} file system. + +%package debug-devel +Summary: ZFS File System Headers and Symbols (Debug) +Group: Development/Libraries +Release: %{rel_dbug} +%if %{defined devreq_dbug} +Requires: %{devreq_dbug} +%endif +%if %{defined kdevpkg_dbug} +BuildRequires: %{kdevpkg_dbug} +%endif +%if %{defined spldevreq_dbug} +Requires: %{spldevreq_dbug} +%endif +%if %{defined spldevpkg_dbug} +BuildRequires: %{spldevpkg_dbug} +%endif + +%description debug-devel +The %{name}-debug-devel package contains the debug kernel header files +and Module.symvers symbols needed for building additional modules +which use %{name}. + +%endif +%if %{?with_kernel_dkms} + +%package dkms +Summary: ZFS File System (DKMS) +Group: Utilities/System +Release: %{rel_dkms} +Provides: %{name} +BuildArch: noarch +%if %{defined req_dkms} +Requires: %{req_dkms} +%endif +%if %{defined kdevpkg_dkms} +BuildRequires: %{kdevpkg_dkms} +%endif +%if %{defined splreq_dkms} +Requires: %{splreq_dkms} +%endif +%if %{defined spldevpkg_dkms} +BuildRequires: %{spldevpkg_dkms} +%endif +Provides: lustre-backend-fs + +%description dkms +The %{name}-dkms package contains the necessary pieces to build and +install the ZFS kernel modules with Dynamic Kernel Modules Support +(DKMS). + +%endif + %prep %setup -n @PACKAGE@-%{version} %build -%configure --with-linux=%{kdir} --with-linux-obj=%{kobj} \ - --with-spl=%{spldir} --with-spl-obj=%{splobj} \ +rm -rf $RPM_BUILD_ROOT + +%if %{with_kernel} + +%configure --with-linux=%{kdir_kern} --with-linux-obj=%{kobj_kern} \ + --with-spl=%{spldir_kern} --with-spl-obj=%{splobj_kern} \ --with-config=kernel %{kdebug} %{kdebug_dmu_tx} make +make DESTDIR=$RPM_BUILD_ROOT install -%install -rm -rf $RPM_BUILD_ROOT +%endif +%if %{?with_kernel_debug} + +%configure --with-linux=%{kdir_dbug} --with-linux-obj=%{kobj_dbug} \ + --with-spl=%{spldir_dbug} --with-spl-obj=%{splobj_dbug} \ + --with-config=kernel %{kdebug} %{kdebug_dmu_tx} +make make DESTDIR=$RPM_BUILD_ROOT install +%endif +%if %{?with_kernel_dkms} + +%configure %{kdebug} %{kdebug_dmu_tx} +make dist +mkdir -p $RPM_BUILD_ROOT/%{_prefix}/src +tar -xf @PACKAGE@-%{version}.tar.gz -C $RPM_BUILD_ROOT/%{_prefix}/src +cp -af dkms.conf $RPM_BUILD_ROOT/%{_prefix}/src/@PACKAGE@-%{version} + +%endif + %clean rm -rf $RPM_BUILD_ROOT +%if %{?with_kernel} + %files %defattr(-, root, root) -/lib/modules/* +/lib/modules/%{kver_kern}/* %files devel %defattr(-,root,root) -%{_prefix}/src/* +%{_prefix}/src/*/%{kver_kern} %post -if [ -f /boot/System.map-%{kver} ]; then - /sbin/depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0 +if [ -f /boot/System.map-%{kver_kern} ]; then + /sbin/depmod -ae -F /boot/System.map-%{kver_kern} %{kver_kern} || exit 0 else /sbin/depmod -a || exit 0 fi %postun -if [ -f /boot/System.map-%{kver} ]; then - /sbin/depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0 +if [ -f /boot/System.map-%{kver_kern} ]; then + /sbin/depmod -ae -F /boot/System.map-%{kver_kern} %{kver_kern} || exit 0 else /sbin/depmod -a || exit 0 fi + +%postun devel +rmdir %{_prefix}/src/@PACKAGE@-%{version}-@ZFS_META_RELEASE@ 2>/dev/null +exit 0 + +%endif +%if %{?with_kernel_debug} + +%files debug +%defattr(-, root, root) +/lib/modules/%{kver_dbug}/* + +%files debug-devel +%defattr(-,root,root) +%{_prefix}/src/*/%{kver_dbug} + +%post debug +if [ -f /boot/System.map-%{kver_dbug} ]; then + /sbin/depmod -ae -F /boot/System.map-%{kver_dbug} %{kver_dbug} || exit 0 +else + /sbin/depmod -a || exit 0 +fi + +%postun debug +if [ -f /boot/System.map-%{kver_dbug} ]; then + /sbin/depmod -ae -F /boot/System.map-%{kver_dbug} %{kver_dbug} || exit 0 +else + /sbin/depmod -a || exit 0 +fi + +%postun debug-devel +rmdir %{_prefix}/src/@PACKAGE@-%{version}-@ZFS_META_RELEASE@ 2>/dev/null +exit 0 + +%endif +%if %{?with_kernel_dkms} + +%files dkms +%defattr(-,root,root) +%{_prefix}/src/@PACKAGE@-%{version} + +%post dkms +for POSTINST in %{_prefix}/lib/dkms/common.postinst; do + if [ -f $POSTINST ]; then + $POSTINST @PACKAGE@ %{version} + exit $? + fi + echo "WARNING: $POSTINST does not exist." +done +echo -e "ERROR: DKMS version is too old and @PACKAGE@ was not" +echo -e "built with legacy DKMS support." +echo -e "You must either rebuild @PACKAGE@ with legacy postinst" +echo -e "support or upgrade DKMS to a more current version." +exit 1 + +%preun dkms +echo -e +echo -e "Uninstall of @PACKAGE@ module (version %{version}) beginning:" +dkms remove -m @PACKAGE@ -v %{version} --all --rpm_safe_upgrade +exit 0 + +%endif