1%bcond_with     debug
2%bcond_with     debuginfo
3
4Name:           @PACKAGE@-kmod
5Version:        @VERSION@
6Release:        @RELEASE@%{?dist}
7
8Summary:        Kernel module(s)
9Group:          System Environment/Kernel
10License:        @ZFS_META_LICENSE@
11URL:            https://github.com/openzfs/zfs
12BuildRequires:  %kernel_module_package_buildreqs
13Source0:        @PACKAGE@-%{version}.tar.gz
14BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
15
16# Additional dependency information for the kmod sub-package must be specified
17# by generating a preamble text file which kmodtool can append to the spec file.
18%(/bin/echo -e "\
19Requires:       @PACKAGE@ = %{version}\n\
20Conflicts:      @PACKAGE@-dkms)
21
22# LDFLAGS are not sanitized by arch/*/Makefile for these architectures.
23%ifarch ppc ppc64 ppc64le aarch64
24%global __global_ldflags %{nil}
25%endif
26
27%description
28This package contains the ZFS kernel modules.
29
30%define kmod_name @PACKAGE@
31
32%kernel_module_package -n %{kmod_name} -p %{_sourcedir}/kmod-preamble
33
34%define ksrc %{_usrsrc}/kernels/%{kverrel}
35%define kobj %{ksrc}
36
37%package -n kmod-%{kmod_name}-devel
38Summary:        ZFS kernel module(s) devel common
39Group:          System Environment/Kernel
40
41%description -n  kmod-%{kmod_name}-devel
42This package provides the header files and objects to build kernel modules.
43
44%prep
45if ! [ -d "%{ksrc}"  ]; then
46        echo "Kernel build directory isn't set properly, cannot continue"
47        exit 1
48fi
49
50%if %{with debug}
51%define debug --enable-debug
52%else
53%define debug --disable-debug
54%endif
55
56%if %{with debuginfo}
57%define debuginfo --enable-debuginfo
58%else
59%define debuginfo --disable-debuginfo
60%endif
61
62%setup -n %{kmod_name}-%{version}
63%build
64%configure \
65        --with-config=kernel \
66        --with-linux=%{ksrc} \
67        --with-linux-obj=%{kobj} \
68        %{debug} \
69        %{debuginfo} \
70        %{?kernel_cc} \
71        %{?kernel_ld} \
72        %{?kernel_llvm}
73make %{?_smp_mflags}
74
75# Module signing (modsign)
76#
77# This must be run _after_ find-debuginfo.sh runs, otherwise that will strip
78# the signature off of the modules.
79# (Based on Fedora's kernel.spec workaround)
80%define __modsign_install_post \
81        sign_pem="%{ksrc}/certs/signing_key.pem"; \
82        sign_x509="%{ksrc}/certs/signing_key.x509"; \
83        if [ -f "${sign_x509}" ]\
84        then \
85            echo "Signing kernel modules ..."; \
86            for kmod in $(find %{buildroot}/lib/modules/%{kverrel}/extra/ -name \*.ko); do \
87                    %{ksrc}/scripts/sign-file sha256 ${sign_pem} ${sign_x509} ${kmod}; \
88            done \
89        fi \
90%{nil}
91
92# hack to ensure signing happens after find-debuginfo.sh runs
93%define __spec_install_post \
94        %{?__debug_package:%{__debug_install_post}}\
95        %{__arch_install_post}\
96        %{__os_install_post}\
97        %{__modsign_install_post}
98
99%install
100make install \
101        DESTDIR=${RPM_BUILD_ROOT} \
102        INSTALL_MOD_DIR=extra/%{kmod_name}
103%{__rm} -f %{buildroot}/lib/modules/%{kverrel}/modules.*
104
105# find-debuginfo.sh only considers executables
106%{__chmod} u+x  %{buildroot}/lib/modules/%{kverrel}/extra/*/*
107
108%clean
109rm -rf $RPM_BUILD_ROOT
110
111%files -n kmod-%{kmod_name}-devel
112%{_usrsrc}/%{kmod_name}-%{version}
113