]> git.proxmox.com Git - mirror_spl.git/blob - rpm/generic/spl-kmod.spec.in
Tag spl-0.7.0
[mirror_spl.git] / rpm / generic / spl-kmod.spec.in
1 %define module @PACKAGE@
2 #define repo rpmfusion
3 #define repo chaos
4
5 # (un)define the next line to either build for the newest or all current kernels
6 %define buildforkernels newest
7 #define buildforkernels current
8 #define buildforkernels akmod
9
10 %bcond_with debug
11 %bcond_with debug_log
12 %bcond_with debug_kmem
13 %bcond_with debug_kmem_tracking
14 %bcond_with atomic_spinlocks
15
16
17 Name: %{module}-kmod
18
19 Version: @VERSION@
20 Release: @RELEASE@%{?dist}
21 Summary: Kernel module(s)
22
23 Group: System Environment/Kernel
24 License: GPLv2+
25 URL: http://zfsonlinux.org/
26 Source0: %{module}-%{version}.tar.gz
27 Source10: kmodtool
28 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id} -u -n)
29
30 # The developments headers will conflict with the dkms packages.
31 Conflicts: %{module}-dkms
32
33 %if %{defined repo}
34
35 # Building for a repository use the proper build-sysbuild package
36 # to determine which kernel-devel packages should be installed.
37 BuildRequires: %{_bindir}/kmodtool
38 %{!?kernels:BuildRequires: buildsys-build-%{repo}-kerneldevpkgs-%{?buildforkernels:%{buildforkernels}}%{!?buildforkernels:current}-%{_target_cpu}}
39
40 %else
41
42 # Building local packages attempt to to use the installed kernel.
43 %{?rhel:BuildRequires: kernel-devel}
44 %{?fedora:BuildRequires: kernel-devel}
45 %{?suse_version:BuildRequires: kernel-source}
46
47 %if !%{defined kernels} && !%{defined build_src_rpm}
48 %if 0%{?rhel}%{?fedora}%{?suse_version}
49 %define kernels %(ls -1 /usr/src/kernels)
50 %else
51 %define kernels %(ls -1 /lib/modules)
52 %endif
53 %endif
54 %endif
55
56 # LDFLAGS are not sanitized by arch/powerpc/Makefile (unlike other arches)
57 %ifarch ppc ppc64 ppc64le
58 %global __global_ldflags %{nil}
59 %endif
60
61 %if 0%{?fedora} >= 17
62 %define prefix /usr
63 %endif
64
65 # Kmodtool does its magic here. A patched version of kmodtool is shipped
66 # because the latest versions may not be available for your distribution.
67 # https://bugzilla.rpmfusion.org/show_bug.cgi?id=2714
68 %{expand:%(bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null) }
69
70
71 %description
72 This package contains the kernel modules required to emulate
73 several interfaces provided by the Solaris kernel.
74
75 %prep
76 # Error out if there was something wrong with kmodtool.
77 %{?kmodtool_check}
78
79 # Print kmodtool output for debugging purposes:
80 bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null
81
82 %if %{with debug}
83 %define debug --enable-debug
84 %else
85 %define debug --disable-debug
86 %endif
87
88 %if %{with debug_log}
89 %define debug_log --enable-debug-log
90 %else
91 %define debug_log --disable-debug-log
92 %endif
93
94 %if %{with debug_kmem}
95 %define debug_kmem --enable-debug-kmem
96 %else
97 %define debug_kmem --disable-debug-kmem
98 %endif
99
100 %if %{with debug_kmem_tracking}
101 %define debug_kmem_tracking --enable-debug-kmem-tracking
102 %else
103 %define debug_kmem_tracking --disable-debug-kmem-tracking
104 %endif
105
106 %if %{with atomic_spinlocks}
107 %define atomic_spinlocks --enable-atomic-spinlocks
108 %else
109 %define atomic_spinlocks --disable-atomic-spinlocks
110 %endif
111
112 # Leverage VPATH from configure to avoid making multiple copies.
113 %define _configure ../%{module}-%{version}/configure
114
115 %setup -q -c -T -a 0
116
117 for kernel_version in %{?kernel_versions}; do
118 %{__mkdir} _kmod_build_${kernel_version%%___*}
119 done
120
121 %build
122 for kernel_version in %{?kernel_versions}; do
123 cd _kmod_build_${kernel_version%%___*}
124 %configure \
125 --with-config=kernel \
126 %if 0%{?rhel}%{?fedora}
127 --with-linux="${kernel_version##*___}" \
128 --with-linux-obj="${kernel_version##*___}" \
129 %else
130 --with-linux="$( \
131 if [ -e "/lib/modules/${kernel_version%%___*}/source" ]; then \
132 echo "/lib/modules/${kernel_version%%___*}/source"; \
133 else \
134 echo "/lib/modules/${kernel_version%%___*}/build"; \
135 fi)" \
136 --with-linux-obj="/lib/modules/${kernel_version%%___*}/build" \
137 %endif
138 %{debug} \
139 %{debug_log} \
140 %{debug_kmem} \
141 %{debug_kmem_tracking} \
142 %{atomic_spinlocks}
143 make %{?_smp_mflags}
144 cd ..
145 done
146
147
148 %install
149 rm -rf ${RPM_BUILD_ROOT}
150
151 # Relies on the kernel 'modules_install' make target.
152 for kernel_version in %{?kernel_versions}; do
153 cd _kmod_build_${kernel_version%%___*}
154 make install \
155 DESTDIR=${RPM_BUILD_ROOT} \
156 %{?prefix:INSTALL_MOD_PATH=%{?prefix}} \
157 INSTALL_MOD_DIR=%{kmodinstdir_postfix}
158 cd ..
159 done
160
161 # find-debuginfo.sh only considers executables
162 chmod u+x ${RPM_BUILD_ROOT}%{kmodinstdir_prefix}/*/extra/*/*/*
163 %{?akmod_install}
164
165
166 %clean
167 rm -rf $RPM_BUILD_ROOT
168
169 %changelog
170 * Wed Jul 26 2017 Brian Behlendorf <behlendorf1@llnl.gov> - 0.7.0-1
171 - Released 0.7.0-1, detailed release notes are available at:
172 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.0