freebsd-dev/zfs-modules.spec.in
Brian Behlendorf 0f6fd32927 Fix rebuildable RPMs for el6/ch5
When rebuilding the source RPM under el5 you need to append the
target_cpu.  However, under el6/ch5 things are packaged correctly
and the arch is already part of kver.  For this reason it also
needs to be stripped from kver when setting kverpkg.
2011-04-08 10:22:42 -07:00

285 lines
7.5 KiB
RPMSpec

# 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.
# 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_kver}
%define kver %{require_kver}
%endif
%if %{defined require_kdir}
%define kdir %{require_kdir}
%endif
%if %{defined require_kobj}
%define kobj %{require_kobj}
%endif
# SLES:
%if %{defined suse_version}
%if %{undefined kver}
%ifarch ppc64
%define kverextra ppc64
%else
%define kverextra default
%endif
%if %{suse_version} >= 1100
%define klnk %{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
%define krelease %{klnk}/include/config/kernel.release
%else
%define klnk %{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
%define krelease %{klnk}/.kernelrelease
%endif
%define kver %((echo X; %{__cat} %{krelease} 2>/dev/null)|tail -1)
%endif
%if %{undefined kverextra}
%define kverextra %(echo %{kver} | cut -f3 -d'-')
%endif
%define kpkg kernel-%{kverextra}
%define kdevpkg kernel-source
%define kverpkg %(echo %{kver} | %{__sed} -e 's/-%{kverextra}//g')
# 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
%if %{suse_version} >= 1100
%define koppkg >=
%else
%define koppkg =
%endif
%if %{undefined kdir}
%define kdir %{_usrsrc}/linux-%{kverpkg}
%endif
%if %{undefined kobj}
%define kobj %{kdir}-obj/%{_target_cpu}/%{kverextra}
%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}
%endif
%else
# RHEL 5.x/6.x, CHAOS 5.x:
%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)
%endif
%define kpkg kernel
%define kdevpkg kernel-devel
%if %{defined el6} || %{defined ch5}
%define kverpkg %(echo %{kver} | %{__sed} -e 's/.%{_target_cpu}//g')
%else
%define kverpkg %{kver}
%endif
%define koppkg =
%if %{undefined kdir}
%if %{defined el6} || %{defined ch5}
%define kdir %{_usrsrc}/kernels/%{kver}
%else
%define kdir %{_usrsrc}/kernels/%{kver}-%{_target_cpu}
%endif
%endif
%if %{undefined kobj}
%define kobj %{kdir}
%endif
%else
# Fedora:
%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)
%endif
%define kpkg kernel
%define kdevpkg kernel-devel
%define kverpkg %(echo %{kver} | %{__sed} -e 's/.%{_target_cpu}//g')
%define koppkg =
%if %{undefined kdir}
%define kdir %{_usrsrc}/kernels/%{kver}
%endif
%if %{undefined kobj}
%define kobj %{kdir}
%endif
%else
# Unsupported distro:
%if %{undefined kver}
%define kver %(uname -r)
%endif
%define kverpkg %{kver}
%if %{undefined kdir}
%define kdir /lib/modules/%{kver}/build
%endif
%if %{undefined kobj}
%define kobj %{kdir}
%endif
%endif
%endif
%endif
%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
%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
%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}
%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}
%endif
%define splrequires %{splpkg}
%else
%define relext %(echo %{kverpkg} | %{__sed} -e 's/-/_/g')
%define release @ZFS_META_RELEASE@_%{relext}
%if %{defined kpkg}
%define krequires %{kpkg} %{koppkg} %{kverpkg}
%endif
%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} -un)
Source: @PACKAGE@-%{version}.tar.gz
%if %{defined krequires}
Requires: %{krequires}
%endif
%if %{defined kdevpkg}
BuildRequires: %{kdevpkg}
%endif
Requires: %{splrequires}
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
%if %{defined krequires}
Requires: %{krequires}
%endif
Requires: %{splrequires}
%if %{defined kdevpkg}
BuildRequires: %{kdevpkg}
%endif
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