xref: /freebsd/sys/contrib/openzfs/rpm/generic/zfs-dkms.spec.in (revision cfd6422a5217410fbd66f7a7a8a64d9d85e61229)
1%{?!packager: %define packager Brian Behlendorf <behlendorf1@llnl.gov>}
2
3%if ! 0%{?rhel}%{?fedora}%{?mageia}%{?suse_version}
4%define not_rpm 1
5%endif
6
7# Exclude input files from mangling
8%global __brp_mangle_shebangs_exclude_from ^/usr/src/.*$
9
10%define module  @PACKAGE@
11%define mkconf  scripts/dkms.mkconf
12
13Name:           %{module}-dkms
14
15Version:        @VERSION@
16Release:        @RELEASE@%{?dist}
17Summary:        Kernel module(s) (dkms)
18
19Group:          System Environment/Kernel
20License:        @ZFS_META_LICENSE@
21URL:            https://github.com/openzfs/zfs
22Source0:        %{module}-%{version}.tar.gz
23BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
24BuildArch:      noarch
25
26Requires:       dkms >= 2.2.0.3
27Requires:       gcc, make, perl, diffutils
28%if 0%{?rhel}%{?fedora}%{?mageia}%{?suse_version}
29Requires:       kernel-devel
30Obsoletes:      spl-dkms
31%endif
32Provides:       %{module}-kmod = %{version}
33AutoReqProv:    no
34
35%description
36This package contains the dkms ZFS kernel modules.
37
38%prep
39%setup -q -n %{module}-%{version}
40
41%build
42%{mkconf} -n %{module} -v %{version} -f dkms.conf
43
44%install
45if [ "$RPM_BUILD_ROOT" != "/" ]; then
46    rm -rf $RPM_BUILD_ROOT
47fi
48mkdir -p $RPM_BUILD_ROOT/usr/src/
49cp -rf ${RPM_BUILD_DIR}/%{module}-%{version} $RPM_BUILD_ROOT/usr/src/
50
51%clean
52if [ "$RPM_BUILD_ROOT" != "/" ]; then
53    rm -rf $RPM_BUILD_ROOT
54fi
55
56%files
57%defattr(-,root,root)
58/usr/src/%{module}-%{version}
59
60%post
61for POSTINST in /usr/lib/dkms/common.postinst; do
62    if [ -f $POSTINST ]; then
63        $POSTINST %{module} %{version}
64        exit $?
65    fi
66    echo "WARNING: $POSTINST does not exist."
67done
68echo -e "ERROR: DKMS version is too old and %{module} was not"
69echo -e "built with legacy DKMS support."
70echo -e "You must either rebuild %{module} with legacy postinst"
71echo -e "support or upgrade DKMS to a more current version."
72exit 1
73
74%preun
75# Are we doing an upgrade?
76if [ "$1" = "1" -o "$1" = "upgrade" ] ; then
77	# Yes we are.  Are we upgrading to a new ZFS version?
78	NEWEST_VER=$(dkms status zfs | sed 's/,//g' | sort -r -V | awk '/installed/{print $2; exit}')
79	if [ "$NEWEST_VER" != "%{version}" ] ; then
80		# Yes, it's a new ZFS version.  We'll uninstall the old module
81		# later on in this script.
82		true
83	else
84		# No, it's probably an upgrade of the same ZFS version
85		# to a new distro (zfs-dkms-0.7.12.fc28->zfs-dkms-0.7.12.fc29).
86		# Don't remove our modules, since the rebuild for the new
87		# distro will automatically delete the old modules.
88		exit 0
89	fi
90fi
91
92# If we're here then we're doing an uninstall (not upgrade).
93CONFIG_H="/var/lib/dkms/%{module}/%{version}/*/*/%{module}_config.h"
94SPEC_META_ALIAS="@PACKAGE@-@VERSION@-@RELEASE@"
95DKMS_META_ALIAS=`cat $CONFIG_H 2>/dev/null |
96    awk -F'"' '/META_ALIAS\s+"/ { print $2; exit 0 }'`
97if [ "$SPEC_META_ALIAS" = "$DKMS_META_ALIAS" ]; then
98    echo -e
99    echo -e "Uninstall of %{module} module ($SPEC_META_ALIAS) beginning:"
100    dkms remove -m %{module} -v %{version} --all %{!?not_rpm:--rpm_safe_upgrade}
101fi
102exit 0
103