xref: /freebsd/sys/contrib/openzfs/rpm/generic/zfs-dkms.spec.in (revision 3ff01b231dfa83d518854c63e7c9cd1debd1139e)
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