diff options
author | Brian Behlendorf <[email protected]> | 2010-08-26 11:22:58 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2010-08-31 13:41:27 -0700 |
commit | c9c0d073da561bcbefbdf09c87fc75b227415619 (patch) | |
tree | 7daee55ae61526107f421de48171573fa5a15d28 /zfs-modules.spec.in | |
parent | 40b84e7aec6392187722e61e5a4a853b530bf60f (diff) |
Add build system
Add autoconf style build infrastructure to the ZFS tree. This
includes autogen.sh, configure.ac, m4 macros, some scripts/*,
and makefiles for all the core ZFS components.
Diffstat (limited to 'zfs-modules.spec.in')
-rw-r--r-- | zfs-modules.spec.in | 280 |
1 files changed, 280 insertions, 0 deletions
diff --git a/zfs-modules.spec.in b/zfs-modules.spec.in new file mode 100644 index 000000000..93129b3d7 --- /dev/null +++ b/zfs-modules.spec.in @@ -0,0 +1,280 @@ +# 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/5.x: +%if %{defined ch4} || %{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 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: +%if %{defined el5} || %{defined el6} + %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} + %define kverpkg %(echo %{kver} | %{__sed} -e 's/.%{_target_cpu}//g') + %else + %define kverpkg %{kver} + %endif + %define koppkg = + %if %{undefined kdir} + %define kdir %{_usrsrc}/kernels/%{kver}-%{_target_cpu} + %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}/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@ +%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 |