diff options
author | Brian Behlendorf <[email protected]> | 2009-07-01 14:37:44 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2009-07-01 14:37:44 -0700 |
commit | 86933a6e510bb00edb097095ffe3deb7a4fbe533 (patch) | |
tree | 7dd7222aade1e316ca070476074683aa8ecba52b /spl-modules.spec.in | |
parent | 5c3c70adece1ea8724cae0cf0c6cd164a4439f19 (diff) |
Simplify rpm build rules, added config/rpm.am.
Distro friendly changes such that the kernel modules are packaged seperately.
Diffstat (limited to 'spl-modules.spec.in')
-rw-r--r-- | spl-modules.spec.in | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/spl-modules.spec.in b/spl-modules.spec.in new file mode 100644 index 000000000..61ad41ba3 --- /dev/null +++ b/spl-modules.spec.in @@ -0,0 +1,171 @@ +# 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. + +%{?require_kver: %define kver %{require_kver}} +%{?require_kdir: %define kdir %{require_kdir}} +%{?require_kobj: %define kobj %{require_kobj}} + +# 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 + +# 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 + +# 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 @SPL_META_RELEASE@ +%define requires %{kpkg} +%else +%define relext %(echo %{kverpkg} | %{__sed} -e 's/-/_/g') +%define release @SPL_META_RELEASE@_%{relext} +%define requires %{kpkg} = %{kverpkg} +%endif + +Summary: Solaris Porting Layer Modules +Group: Utilities/System +Name: %{name} +Version: %{version} +Release: %{release} +License: @LICENSE@ +URL: git://eris.llnl.gov/spl.git +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n) +Source: @PACKAGE@-%{version}.tar.gz +Requires: %{requires} +BuildRequires: %{kdevpkg} + +%description +The %{name} package contains kernel modules for emulating Solaris style +primatives in the linux kernel. These include, but are not limited to: +atomic, condvar, debug, error, memory, kobject, kstat, mutex, rwlock, +taskq, thread, time, and vnode APIs. + +%package devel +Summary: Solaris Porting Layer Headers and Symbols +Group: Development/Libraries +Requires: %{requires} +BuildRequires: %{kdevpkg} + +%description devel +The %{name}-devel package contains the header files and Module{s}.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-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 |