1eda14cbcSMatt Macy%{?!packager: %define packager Brian Behlendorf <behlendorf1@llnl.gov>} 2eda14cbcSMatt Macy 3eda14cbcSMatt Macy%if ! 0%{?rhel}%{?fedora}%{?mageia}%{?suse_version} 4eda14cbcSMatt Macy%define not_rpm 1 5eda14cbcSMatt Macy%endif 6eda14cbcSMatt Macy 7eda14cbcSMatt Macy# Exclude input files from mangling 8eda14cbcSMatt Macy%global __brp_mangle_shebangs_exclude_from ^/usr/src/.*$ 9eda14cbcSMatt Macy 10eda14cbcSMatt Macy%define module @PACKAGE@ 11eda14cbcSMatt Macy%define mkconf scripts/dkms.mkconf 12eda14cbcSMatt Macy 13eda14cbcSMatt MacyName: %{module}-dkms 14eda14cbcSMatt Macy 15eda14cbcSMatt MacyVersion: @VERSION@ 16eda14cbcSMatt MacyRelease: @RELEASE@%{?dist} 17eda14cbcSMatt MacySummary: Kernel module(s) (dkms) 18eda14cbcSMatt Macy 19eda14cbcSMatt MacyGroup: System Environment/Kernel 20eda14cbcSMatt MacyLicense: @ZFS_META_LICENSE@ 21180f8225SMatt MacyURL: https://github.com/openzfs/zfs 22eda14cbcSMatt MacySource0: %{module}-%{version}.tar.gz 23eda14cbcSMatt MacyBuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) 24eda14cbcSMatt MacyBuildArch: noarch 25eda14cbcSMatt Macy 26eda14cbcSMatt MacyRequires: dkms >= 2.2.0.3 27eda14cbcSMatt MacyRequires: gcc, make, perl, diffutils 28eda14cbcSMatt Macy%if 0%{?rhel}%{?fedora}%{?mageia}%{?suse_version} 2916038816SMartin MatuskaRequires: kernel-devel >= @ZFS_META_KVER_MIN@, kernel-devel <= @ZFS_META_KVER_MAX@.999 30eda14cbcSMatt MacyObsoletes: spl-dkms 31eda14cbcSMatt Macy%endif 32eda14cbcSMatt MacyProvides: %{module}-kmod = %{version} 33eda14cbcSMatt MacyAutoReqProv: no 34eda14cbcSMatt Macy 35*3ff01b23SMartin Matuska%if 0%{?rhel}%{?fedora}%{?suse_version} 36*3ff01b23SMartin Matuska# We don't directly use it, but if this isn't installed, rpmbuild as root can 37*3ff01b23SMartin Matuska# crash+corrupt rpmdb 38*3ff01b23SMartin Matuska# See issue #12071 39*3ff01b23SMartin MatuskaBuildRequires: ncompress 40*3ff01b23SMartin Matuska%endif 41*3ff01b23SMartin Matuska 42eda14cbcSMatt Macy%description 43eda14cbcSMatt MacyThis package contains the dkms ZFS kernel modules. 44eda14cbcSMatt Macy 45eda14cbcSMatt Macy%prep 46eda14cbcSMatt Macy%setup -q -n %{module}-%{version} 47eda14cbcSMatt Macy 48eda14cbcSMatt Macy%build 49eda14cbcSMatt Macy%{mkconf} -n %{module} -v %{version} -f dkms.conf 50eda14cbcSMatt Macy 51eda14cbcSMatt Macy%install 52eda14cbcSMatt Macyif [ "$RPM_BUILD_ROOT" != "/" ]; then 53eda14cbcSMatt Macy rm -rf $RPM_BUILD_ROOT 54eda14cbcSMatt Macyfi 55eda14cbcSMatt Macymkdir -p $RPM_BUILD_ROOT/usr/src/ 56eda14cbcSMatt Macycp -rf ${RPM_BUILD_DIR}/%{module}-%{version} $RPM_BUILD_ROOT/usr/src/ 57eda14cbcSMatt Macy 58eda14cbcSMatt Macy%clean 59eda14cbcSMatt Macyif [ "$RPM_BUILD_ROOT" != "/" ]; then 60eda14cbcSMatt Macy rm -rf $RPM_BUILD_ROOT 61eda14cbcSMatt Macyfi 62eda14cbcSMatt Macy 63eda14cbcSMatt Macy%files 64eda14cbcSMatt Macy%defattr(-,root,root) 65eda14cbcSMatt Macy/usr/src/%{module}-%{version} 66eda14cbcSMatt Macy 67eda14cbcSMatt Macy%post 68eda14cbcSMatt Macyfor POSTINST in /usr/lib/dkms/common.postinst; do 69eda14cbcSMatt Macy if [ -f $POSTINST ]; then 70eda14cbcSMatt Macy $POSTINST %{module} %{version} 71eda14cbcSMatt Macy exit $? 72eda14cbcSMatt Macy fi 73eda14cbcSMatt Macy echo "WARNING: $POSTINST does not exist." 74eda14cbcSMatt Macydone 75eda14cbcSMatt Macyecho -e "ERROR: DKMS version is too old and %{module} was not" 76eda14cbcSMatt Macyecho -e "built with legacy DKMS support." 77eda14cbcSMatt Macyecho -e "You must either rebuild %{module} with legacy postinst" 78eda14cbcSMatt Macyecho -e "support or upgrade DKMS to a more current version." 79eda14cbcSMatt Macyexit 1 80eda14cbcSMatt Macy 81eda14cbcSMatt Macy%preun 82eda14cbcSMatt Macy# Are we doing an upgrade? 83eda14cbcSMatt Macyif [ "$1" = "1" -o "$1" = "upgrade" ] ; then 84eda14cbcSMatt Macy # Yes we are. Are we upgrading to a new ZFS version? 85eda14cbcSMatt Macy NEWEST_VER=$(dkms status zfs | sed 's/,//g' | sort -r -V | awk '/installed/{print $2; exit}') 86eda14cbcSMatt Macy if [ "$NEWEST_VER" != "%{version}" ] ; then 87eda14cbcSMatt Macy # Yes, it's a new ZFS version. We'll uninstall the old module 88eda14cbcSMatt Macy # later on in this script. 89eda14cbcSMatt Macy true 90eda14cbcSMatt Macy else 91eda14cbcSMatt Macy # No, it's probably an upgrade of the same ZFS version 92eda14cbcSMatt Macy # to a new distro (zfs-dkms-0.7.12.fc28->zfs-dkms-0.7.12.fc29). 93eda14cbcSMatt Macy # Don't remove our modules, since the rebuild for the new 94eda14cbcSMatt Macy # distro will automatically delete the old modules. 95eda14cbcSMatt Macy exit 0 96eda14cbcSMatt Macy fi 97eda14cbcSMatt Macyfi 98eda14cbcSMatt Macy 99eda14cbcSMatt Macy# If we're here then we're doing an uninstall (not upgrade). 100eda14cbcSMatt MacyCONFIG_H="/var/lib/dkms/%{module}/%{version}/*/*/%{module}_config.h" 101eda14cbcSMatt MacySPEC_META_ALIAS="@PACKAGE@-@VERSION@-@RELEASE@" 102eda14cbcSMatt MacyDKMS_META_ALIAS=`cat $CONFIG_H 2>/dev/null | 103eda14cbcSMatt Macy awk -F'"' '/META_ALIAS\s+"/ { print $2; exit 0 }'` 104eda14cbcSMatt Macyif [ "$SPEC_META_ALIAS" = "$DKMS_META_ALIAS" ]; then 105eda14cbcSMatt Macy echo -e 106eda14cbcSMatt Macy echo -e "Uninstall of %{module} module ($SPEC_META_ALIAS) beginning:" 107eda14cbcSMatt Macy dkms remove -m %{module} -v %{version} --all %{!?not_rpm:--rpm_safe_upgrade} 108eda14cbcSMatt Macyfi 109eda14cbcSMatt Macyexit 0 110