# The following block is used to allow the source RPM to be rebuilt # against specific kernels. It is preferable that rpmbuild define the # require_kver, require_kdir, require_obj constants for us, but if it does not # not we attempt to determine the correct values based on your distro. %if %{defined require_kver} %define kver %{require_kver} %endif %if %{defined require_kdir} %define kdir %{require_kdir} %endif %if %{defined require_kobj} %define kobj %{require_kobj} %endif # kdir: Full path to the kernel source headers # kobj: Full path to the kernel build objects # kver: Kernel version # kpkg: Kernel package name # kdevpkg: Kernel devel package name # kverpkg: Kernel package version %if %{defined require_splver} %define splver %{require_splver} %endif %if %{defined require_spldir} %define spldir %{require_spldir} %endif %if %{defined require_splobj} %define splobj %{require_splobj} %endif # spldir: Full path to the spl source headers # splobj: Full path to the spl build objects # splver: Spl version # splpkg: Spl package name # spldevpkg: Spl devel package name # splverpkg: Spl package version # SLES*: %if %{defined sles_version} %if %{undefined kver} %define klnk %{_usrsrc}/linux-obj/%{_target_cpu}/%{_target_cpu} %define kver %((echo X; %{__cat} %{klnk}/.kernelrelease 2>/dev/null) | tail -1) %endif %define kpkg kernel-%{_target_cpu} %define kdevpkg kernel-source kernel-syms %define kverpkg %(echo %{kver} | cut -d'-' -f1-2) %if %{undefined kdir} %define kdir %{_usrsrc}/linux-%{kverpkg} %endif %if %{undefined kobj} %define kobj %{kdir}-obj/%{_target_cpu}/%{_target_cpu} %endif # CHAOS4: %else %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} %if %{undefined kdir} %define kdir %{_usrsrc}/kernels/%{kver} %endif %if %{undefined kobj} %define kobj %{kdir} %endif # RHEL*/Fedora: %else %if %{defined fedora} || %{defined rhel} %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 kernel %define kdevpkg kernel-devel %define kverpkg %(echo %{kver} | cut -d'.' -f1-7) %if %{undefined kdir} %define kdir %{_usrsrc}/kernels/%{kver} %endif %if %{undefined kobj} %define kobj %{kdir} %endif %else # Unsupported distro: %if %{undefined kver} %define kver X %endif %define kpkg kernel %define kdevpkg kernel-devel %define kverpkg %{kver} %if %{undefined kdir} %define kdir %{_usrsrc}/kernels/%{kver} %endif %if %{undefined kobj} %define kobj %{kdir} %endif %endif %endif %endif # SPL package dependencies %if %{undefined splver} %define spllnk %{_usrsrc}/spl-*/%{kver} %define splver %((echo X; %{__cat} %{spllnk}/spl.release 2>/dev/null) | tail -1) %endif %define splpkg spl-modules %define spldevpkg spl-modules-devel %define splverpkg %{splver} %if %{undefined spldir} %define spldir %{_usrsrc}/spl-%{splver}/%{kver} %endif %if %{undefined splobj} %define splobj %{spldir}/module %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@ %define krequires %{kpkg} %define splrequires %{splpkg} %else %define relext %(echo %{kverpkg} | %{__sed} -e 's/-/_/g') %define release @ZFS_META_RELEASE@_%{relext} %define krequires %{kpkg} = %{kverpkg} %define splrequires %{splpkg} = %{splverpkg} %endif Summary: ZFS File System Group: Utilities/System Name: %{name} Version: %{version} Release: %{release} License: @LICENSE@ URL: git://eris.llnl.gov/zfs.git BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n) Source: @PACKAGE@-%{version}.tar.gz Requires: %{krequires} Requires: %{splrequires} BuildRequires: %{kdevpkg} BuildRequires: %{spldevpkg} %description The %{name} package contains kernel modules and support utilities for the %{name} file system. %package devel Summary: ZFS File System Headers and Symbols Group: Development/Libraries Requires: %{krequires} Requires: %{splrequires} BuildRequires: %{kdevpkg} BuildRequires: %{spldevpkg} %description devel The %{name}-devel package contains the kernel header files and Module.symvers symbols needed for building additional modules which use %{name}. %prep %setup -n @PACKAGE@-%{version} %build %configure --with-linux=%{kdir} --with-linux-obj=%{kobj} \ --with-spl=%{spldir} --with-spl-obj=%{splobj} \ --with-config=kernel make %install rm -rf $RPM_BUILD_ROOT make DESTDIR=$RPM_BUILD_ROOT install %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-, root, root) /lib/modules/* %files devel %defattr(-,root,root) %{_prefix}/src/* %post if [ -f /boot/System.map-%{kver} ]; then depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0 else depmod -ae %{kver} || exit 0 fi %postun if [ -f /boot/System.map-%{kver} ]; then depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0 else depmod -ae %{kver} || exit 0 fi