diff options
Diffstat (limited to 'rpm/generic')
-rw-r--r-- | rpm/generic/.gitignore | 3 | ||||
-rw-r--r-- | rpm/generic/Makefile.am | 1 | ||||
-rw-r--r-- | rpm/generic/zfs-dkms.spec.in | 67 | ||||
-rw-r--r-- | rpm/generic/zfs-kmod.spec.in | 130 | ||||
-rw-r--r-- | rpm/generic/zfs.spec.in | 147 |
5 files changed, 348 insertions, 0 deletions
diff --git a/rpm/generic/.gitignore b/rpm/generic/.gitignore new file mode 100644 index 000000000..7f5daafdd --- /dev/null +++ b/rpm/generic/.gitignore @@ -0,0 +1,3 @@ +/zfs-dkms.spec +/zfs-kmod.spec +/zfs.spec diff --git a/rpm/generic/Makefile.am b/rpm/generic/Makefile.am new file mode 100644 index 000000000..89b13640d --- /dev/null +++ b/rpm/generic/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = zfs.spec.in zfs-kmod.spec.in zfs-dkms.spec.in diff --git a/rpm/generic/zfs-dkms.spec.in b/rpm/generic/zfs-dkms.spec.in new file mode 100644 index 000000000..3713b1a90 --- /dev/null +++ b/rpm/generic/zfs-dkms.spec.in @@ -0,0 +1,67 @@ +%define module @PACKAGE@ +%define mkconf scripts/dkms.mkconf + +Name: %{module}-dkms + +Version: @VERSION@ +Release: @RELEASE@%{?dist} +Summary: Kernel module(s) (dkms) + +Group: System Environment/Kernel +License: @ZFS_META_LICENSE@ +URL: http://zfsonlinux.org/ +Source0: %{module}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildArch: noarch + +Requires: dkms >= 2.2.0.2 +Provides: %{module}-kmod = %{version} +Conflicts: %{module}-kmod + +%description +This package contains the dkms ZFS kernel modules. + +%prep +%setup -q -n %{module}-%{version} + +%build +%{mkconf} -n %{module} -v %{version} -f dkms.conf + +%install +if [ "$RPM_BUILD_ROOT" != "/" ]; then + rm -rf $RPM_BUILD_ROOT +fi +mkdir -p $RPM_BUILD_ROOT/usr/src/ +cp -rf ${RPM_BUILD_DIR}/%{module}-%{version} $RPM_BUILD_ROOT/usr/src/ + +%clean +if [ "$RPM_BUILD_ROOT" != "/" ]; then + rm -rf $RPM_BUILD_ROOT +fi + +%files +%defattr(-,root,root) +/usr/src/%{module}-%{version} + +%post +for POSTINST in /usr/lib/dkms/common.postinst; do + if [ -f $POSTINST ]; then + $POSTINST %{module} %{version} + exit $? + fi + echo "WARNING: $POSTINST does not exist." +done +echo -e "ERROR: DKMS version is too old and %{module} was not" +echo -e "built with legacy DKMS support." +echo -e "You must either rebuild %{module} with legacy postinst" +echo -e "support or upgrade DKMS to a more current version." +exit 1 + +%preun +dkms remove -m %{module} -v %{version} --all --rpm_safe_upgrade +exit 0 + +%changelog +* Tue Mar 12 2013 Brian Behlendorf <[email protected]> - 0.6.0-1 +- Initial dkms packaging. + diff --git a/rpm/generic/zfs-kmod.spec.in b/rpm/generic/zfs-kmod.spec.in new file mode 100644 index 000000000..8b2dcd152 --- /dev/null +++ b/rpm/generic/zfs-kmod.spec.in @@ -0,0 +1,130 @@ +%define module @PACKAGE@ + +%bcond_with debug +%bcond_with debug_dmu_tx + + +Name: %{module}-kmod + +Version: @VERSION@ +Release: @RELEASE@%{?dist} +Summary: Kernel module(s) + +Group: System Environment/Kernel +License: @ZFS_META_LICENSE@ +URL: http://zfsonlinux.org/ +Source0: %{module}-%{version}.tar.gz +Source10: kmodtool +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +# The developments headers will conflict with the dkms packages. +Conflicts: %{module}-dkms + +# Source packages minimally require a kernel-devel dependency. +%{?rhel:BuildRequires: kernel-devel} +%{?fedora:BuildRequires: kernel-devel} +%{?suse_version:BuildRequires: kernel-source} + +%if 0%{?rhel}%{?fedora}%{?suse_version} +%global KmodsBuildRequires kmod-spl-devel +%global KmodsRequires kmod-spl +%endif + +# Binary packages build against all installed kernels by default. +%if !%{defined kernels} && !%{defined build_src_rpm} + %if 0%{?rhel}%{?fedora}%{?suse_version} + %define kernels %(ls -1 /usr/src/kernels) + %else + %define kernels %(ls -1 /lib/modules) + %endif +%endif + +%if 0%{?fedora} >= 17 +%define prefix /usr +%endif + +# Kmodtool does its magic here. A patched version of kmodtool is shipped +# with the source rpm until kmod development packages are supported upstream. +# https://bugzilla.rpmfusion.org/show_bug.cgi?id=2714 +%{expand:%(bash %{SOURCE10} --target %{_target_cpu} --kmodname %{name} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null) } + + +%description +This package contains the ZFS kernel modules. + +%prep +# Error out if there was something wrong with kmodtool. +%{?kmodtool_check} + +# Print kmodtool output for debugging purposes: +bash %{SOURCE10} --target %{_target_cpu} --repo %{repo} --kmodname %{name} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null + +%if %{with debug} + %define debug --enable-debug +%else + %define debug --disable-debug +%endif + +%if %{with debug_dmu_tx} + %define debug_dmu_tx --enable-debug-dmu-tx +%else + %define debug_dmu_tx --disable-debug-dmu-tx +%endif + +# Leverage VPATH from configure to avoid making multiple copies. +%define _configure ../%{module}-%{version}/configure + +%setup -q -c -T -a 0 + +for kernel_version in %{?kernel_versions}; do + %{__mkdir} _kmod_build_${kernel_version%%___*} +done + +%build +for kernel_version in %{?kernel_versions}; do + cd _kmod_build_${kernel_version%%___*} + %configure \ + --with-config=kernel \ +%if 0%{?rhel}%{?fedora} + --with-linux="${kernel_version##*___}" \ + --with-linux-obj="${kernel_version##*___}" \ +%else + --with-linux=\ + %(if [ -e /lib/modules/${kernel_version%%___*}/source ]; then \ + echo "/lib/modules/${kernel_version%%___*}/source" \ + else \ + echo "/lib/modules/${kernel_version%%___*}/build" \ + fi) \ + --with-linux-obj="/lib/modules/${kernel_version%%___*}/build" \ +%endif + --with-spl="/usr/src/spl-%{version}" \ + --with-spl-obj="/usr/src/spl-%{version}/${kernel_version%%___*}" \ + %{debug} \ + %{debug_dmu_tx} + make %{?_smp_mflags} + cd .. +done + + +%install +rm -rf ${RPM_BUILD_ROOT} + +# Relies on the kernel 'modules_install' make target. +for kernel_version in %{?kernel_versions}; do + cd _kmod_build_${kernel_version%%___*} + make install \ + DESTDIR=${RPM_BUILD_ROOT} \ + %{?prefix:INSTALL_MOD_PATH=%{?prefix}} \ + INSTALL_MOD_DIR=%{kmodinstdir_postfix} + cd .. +done +chmod u+x ${RPM_BUILD_ROOT}%{kmodinstdir_prefix}/*/extra/*/*/* +%{?akmod_install} + + +%clean +rm -rf $RPM_BUILD_ROOT + +%changelog +* Tue Mar 12 2013 Brian Behlendorf <[email protected]> - 0.6.0-1 +- Initial kmods2 packaging. diff --git a/rpm/generic/zfs.spec.in b/rpm/generic/zfs.spec.in new file mode 100644 index 000000000..05d55d975 --- /dev/null +++ b/rpm/generic/zfs.spec.in @@ -0,0 +1,147 @@ +%global _sbindir /sbin +%global _libdir /%{_lib} +%if 0%{?fedora} >= 17 +%global _udevdir %{_prefix}/lib/udev +%global _dracutdir %{_prefix}/lib/dracut +%else +%global _udevdir /lib/udev +%global _dracutdir /lib/dracut +%endif + +%bcond_with debug +%bcond_with blkid +%bcond_with selinux + + +Name: @PACKAGE@ +Version: @VERSION@ +Release: @RELEASE@%{?dist} +Summary: Commands to control the kernel modules and libraries + +Group: System Environment/Kernel +License: @ZFS_META_LICENSE@ +URL: http://zfsonlinux.org/ +Source0: %{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +ExclusiveArch: i386 i686 x86_64 + +# May build but untested on ppc/ppc64 +ExcludeArch: ppc ppc64 + +Requires: %{name}-kmod >= %{version} +Provides: %{name}-kmod-common = %{version} + +%if 0%{?rhel}%{?fedora}%{?suse_version} +BuildRequires: zlib-devel +BuildRequires: libuuid-devel +%if %{with blkid} +BuildRequires: libblkid-devel +%endif +%if %{with selinux} +BuildRequires: libselinux-devel +%endif +%endif + +%description +This package contains the ZFS command line utilities and libraries. + +%package devel +Summary: Development headers +Group: System Environment/Kernel +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +This package contains the header files needed for building additional +applications against the ZFS libraries. + +%package test +Summary: Test infrastructure +Group: System Environment/Kernel +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: parted +Requires: lsscsi +Requires: mdadm +Requires: bc + +%description test +This package contains test infrastructure and support scripts for +validating the file system. + +%package dracut +Summary: Dracut module +Group: System Environment/Kernel +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: dracut + +%description dracut +This package contains a dracut module used to construct an initramfs +image which is ZFS aware. + +%prep +%if %{with debug} + %define debug --enable-debug +%else + %define debug --disable-debug +%endif +%if %{with blkid} + %define blkid --with-blkid +%else + %define blkid --without-blkid +%endif +%if %{with selinux} + %define selinux --with-selinux +%else + %define selinux --without-selinux +%endif + +%setup -q + +%build +%configure \ + --with-config=user \ + --with-udevdir=%{_udevdir} \ + --with-dracutdir=%{_dracutdir} \ + --disable-static \ + %{debug} \ + %{blkid} \ + %{selinux} +make %{?_smp_mflags} + +%install +%{__rm} -rf $RPM_BUILD_ROOT +make install DESTDIR=%{?buildroot} +find %{?buildroot}%{_libdir} -name '*.la' -exec rm -f {} \; + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%doc AUTHORS COPYRIGHT DISCLAIMER +%doc OPENSOLARIS.LICENSE README.markdown +%{_sbindir}/* +%{_libdir}/*.so.1* +%{_mandir}/man1/* +%{_mandir}/man5/* +%{_mandir}/man8/* +%{_udevdir}/vdev_id +%{_udevdir}/zvol_id +%{_udevdir}/rules.d/* +%config(noreplace) %{_sysconfdir}/%{name} +# Systemd integration is still required. +%exclude %{_sysconfdir}/init.d/* + +%files devel +%{_libdir}/*.so +%{_includedir}/* + +%files test +%{_datadir}/%{name} + +%files dracut +%doc dracut/README.dracut.markdown +%{_dracutdir}/modules.d/* + +%changelog +* Tue Mar 12 2013 Brian Behlendorf <[email protected]> - 0.6.0-1 +- Refreshed RPM packaging. |