]> TLD Linux GIT Repositories - packages/kernel.git/blob - kernel.spec
- updated to 6.1.90
[packages/kernel.git] / kernel.spec
1 # Conditional build:
2 %bcond_without  source          # don't build kernel-source package
3 %bcond_without  doc             # don't build kernel-doc package
4 %bcond_with     verbose         # verbose build (V=1)
5
6 %define         basever         6.1
7 %define         postver         89
8 %define         rel             1
9
10 %define         __alt_kernel    %{nil}
11
12 %if "%{__alt_kernel}" != ""
13 %define         alt_kernel      %{__alt_kernel}
14 %endif
15
16 %define         versuffix       -%{basever}
17
18 # kernel release (used in filesystem and eventually in uname -r)
19 # modules will be looked from /lib/modules/%{kernel_release}
20 # localversion is just that without version for "> localversion"
21 %define         localversion    %{rel}
22 %define         kernel_release  %{version}%{?alt_kernel:_%{alt_kernel}}-%{localversion}
23
24 Summary:        The Linux kernel (the core of the Linux operating system)
25 Summary(de.UTF-8):      Der Linux-Kernel (Kern des Linux-Betriebssystems)
26 Summary(et.UTF-8):      Linuxi kernel (ehk operatsioonisüsteemi tuum)
27 Summary(fr.UTF-8):      Le Kernel-Linux (La partie centrale du systeme)
28 Summary(pl.UTF-8):      Jądro Linuksa
29 Name:           kernel%{versuffix}%{_alt_kernel}
30 Version:        %{basever}.%{postver}
31 Release:        %{rel}
32 Epoch:          3
33 License:        GPL v2
34 Group:          Base/Kernel
35 Source0:        http://www.kernel.org/pub/linux/kernel/v6.x/linux-%{basever}.tar.xz
36 # Source0-md5:  475320de08f16c9fa486fc4edfe98b30
37 %if "%{postver}" != "0"
38 Source1:        http://www.kernel.org/pub/linux/kernel/v6.x/patch-%{version}.xz
39 # Source1-md5:  028cfb5da4edf3490c7798e547862592
40 %endif
41
42 Source2:        kernel-module-build.pl
43 Source3:        kernel.make
44
45 Source10:       kernel-x86.config
46 Source11:       kernel-x86_64.config
47
48 URL:            http://www.kernel.org/
49 BuildRequires:  binutils >= 3:2.18
50 BuildRequires:  bison
51 BuildRequires:  /sbin/depmod
52 BuildRequires:  elfutils-devel
53 BuildRequires:  flex
54 BuildRequires:  gcc >= 5:3.2
55 BuildRequires:  gcc-plugin-devel
56 BuildRequires:  xz >= 1:4.999.7
57 AutoReqProv:    no
58 BuildRequires:  hostname
59 BuildRequires:  kmod
60 BuildRequires:  openssl-devel
61 BuildRequires:  perl-base
62 BuildRequires:  rpm >= 4.5-74
63 BuildRequires:  rpmbuild(macros) >= 1.652
64 Requires(post): coreutils
65 Requires(post): dracut
66 Requires(post): kmod >= 12-2
67 Requires:       /sbin/depmod
68 Requires:       coreutils
69 Requires:       dracut
70 Requires:       kmod >= 12-2
71 %ifarch i686
72 Requires:       cpuinfo(pae)
73 %endif
74 Suggests:       keyutils
75 Suggests:       linux-firmware
76 Provides:       %{name}(netfilter) = 20070806
77 Provides:       %{name}(vermagic) = %{kernel_release}
78 Obsoletes:      kernel-firmware
79 Obsoletes:      kernel-modules
80 Conflicts:      e2fsprogs < 1.29
81 Conflicts:      isdn4k-utils < 3.1pre1
82 Conflicts:      jfsutils < 1.1.3
83 Conflicts:      linux-firmware < 20120720
84 Conflicts:      lvm2 < 2.02.40
85 Conflicts:      module-init-tools < 3.16
86 Conflicts:      nfs-utils < 1.0.5
87 Conflicts:      oprofile < 0.9
88 Conflicts:      ppp < 1:2.4.0
89 Conflicts:      procps < 3.2.0
90 Conflicts:      quota-tools < 3.09
91 Conflicts:      reiserfsprogs < 3.6.3
92 Conflicts:      rpm < 4.4.2-0.2
93 Conflicts:      udev < 1:081
94 Conflicts:      util-linux < 2.10o
95 Conflicts:      xfsprogs < 2.6.0
96 ExclusiveArch:  i686 x86_64
97 ExclusiveOS:    Linux
98 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
99
100 %ifarch i686 x86_64
101 %define         target_arch_dir         x86
102 %else
103 %define         target_arch_dir         %{_target_base_arch}
104 %endif
105
106 %define         defconfig       arch/%{target_arch_dir}/defconfig
107
108 # No ELF objects there to strip (skips processing 27k files)
109 %define         _noautostrip    \\(.*%{_kernelsrcdir}/.*\\|.*/vmlinux.*\\)
110 %define         _noautochrpath  .*%{_kernelsrcdir}/.*
111 %define         _enable_debug_packages  0
112
113 %define         initrd_dir      /boot
114
115 %define         topdir          %{_builddir}/%{name}-%{version}
116 %define         srcdir          %{topdir}/linux-%{basever}
117 %define         objdir          %{topdir}/%{targetobj}
118 %define         targetobj       %{_target_base_arch}-gcc-%(%{__cc} -dumpversion)
119
120 %define         _kernelsrcdir   /usr/src/linux%{versuffix}%{_alt_kernel}-%{version}
121
122 %if "%{_target_base_arch}" != "%{_host_base_arch}"
123         %define CrossOpts ARCH=%{_target_base_arch} CROSS_COMPILE=%{_target_cpu}-tld-linux-
124         %define DepMod /bin/true
125
126         %if "%{_host_base_arch}" == "x86_64" && "%{_target_base_arch}" == "i386"
127         %define CrossOpts ARCH=%{_target_base_arch} CC="%{__cc}"
128         %define DepMod /sbin/depmod
129         %endif
130
131 %else
132         %define CrossOpts ARCH=%{_target_base_arch} CC="%{__cc}"
133         %define DepMod /sbin/depmod
134 %endif
135 # use 64-bit offsets for fixdeps to work with 64-bit inodes
136 %define MakeOpts %{CrossOpts} HOSTCC="%{__cc} -D_FILE_OFFSET_BITS=64"
137
138 %description
139 This package contains the Linux kernel that is used to boot and run
140 your system. It contains few device drivers for specific hardware.
141 Most hardware is instead supported by modules loaded after booting.
142
143 %description -l de.UTF-8
144 Das Kernel-Paket enthält den Linux-Kernel (vmlinuz), den Kern des
145 Linux-Betriebssystems. Der Kernel ist für grundliegende
146 Systemfunktionen verantwortlich: Speicherreservierung,
147 Prozeß-Management, Geräte Ein- und Ausgaben, usw.
148
149 %description -l fr.UTF-8
150 Le package kernel contient le kernel linux (vmlinuz), la partie
151 centrale d'un système d'exploitation Linux. Le noyau traite les
152 fonctions basiques d'un système d'exploitation: allocation mémoire,
153 allocation de process, entrée/sortie de peripheriques, etc.
154
155 %description -l pl.UTF-8
156 Pakiet zawiera jądro Linuksa niezbędne do prawidłowego działania
157 Twojego komputera. Zawiera w sobie sterowniki do sprzętu znajdującego
158 się w komputerze, takiego jak sterowniki dysków itp.
159
160 %package vmlinux
161 Summary:        vmlinux - uncompressed kernel image
162 Summary(de.UTF-8):      vmlinux - dekompressiertes Kernel Bild
163 Summary(pl.UTF-8):      vmlinux - rozpakowany obraz jądra
164 Group:          Base/Kernel
165 Obsoletes:      kernel-smp-vmlinux
166
167 %description vmlinux
168 vmlinux - uncompressed kernel image.
169
170 %description vmlinux -l de.UTF-8
171 vmlinux - dekompressiertes Kernel Bild.
172
173 %description vmlinux -l pl.UTF-8
174 vmlinux - rozpakowany obraz jądra.
175
176 %package drm
177 Summary:        DRM kernel modules
178 Summary(de.UTF-8):      DRM Kernel Treiber
179 Summary(pl.UTF-8):      Sterowniki DRM
180 Group:          Base/Kernel
181 Requires(postun):       %{name} = %{epoch}:%{version}-%{release}
182 Requires:       %{name} = %{epoch}:%{version}-%{release}
183 Obsoletes:      kernel-smp-drm
184 AutoReqProv:    no
185
186 %description drm
187 DRM kernel modules.
188
189 %description drm -l de.UTF-8
190 DRM Kernel Treiber.
191
192 %description drm -l pl.UTF-8
193 Sterowniki DRM.
194
195 %package pcmcia
196 Summary:        PCMCIA modules
197 Summary(de.UTF-8):      PCMCIA Module
198 Summary(pl.UTF-8):      Moduły PCMCIA
199 Group:          Base/Kernel
200 Requires(postun):       %{name} = %{epoch}:%{version}-%{release}
201 Requires:       %{name} = %{epoch}:%{version}-%{release}
202 Obsoletes:      kernel-smp-pcmcia
203 Conflicts:      pcmcia-cs < 3.1.21
204 Conflicts:      pcmciautils < 004
205 AutoReqProv:    no
206
207 %description pcmcia
208 PCMCIA modules.
209
210 %description pcmcia -l de.UTF-8
211 PCMCIA Module.
212
213 %description pcmcia -l pl.UTF-8
214 Moduły PCMCIA.
215
216 %package sound-alsa
217 Summary:        ALSA kernel modules
218 Summary(de.UTF-8):      ALSA Kernel Module
219 Summary(pl.UTF-8):      Sterowniki dźwięku ALSA
220 Group:          Base/Kernel
221 Requires(postun):       %{name} = %{epoch}:%{version}-%{release}
222 Requires:       %{name} = %{epoch}:%{version}-%{release}
223 Obsoletes:      kernel-smp-sound-alsa
224 AutoReqProv:    no
225
226 %description sound-alsa
227 ALSA (Advanced Linux Sound Architecture) sound drivers.
228
229 %description sound-alsa -l de.UTF-8
230 ALSA (Advanced Linux Sound Architecture) Sound-Treiber.
231
232 %description sound-alsa -l pl.UTF-8
233 Sterowniki dźwięku ALSA (Advanced Linux Sound Architecture).
234
235 %package headers
236 Summary:        Header files for the Linux kernel
237 Summary(de.UTF-8):      Header Dateien für den Linux-Kernel
238 Summary(pl.UTF-8):      Pliki nagłówkowe jądra Linuksa
239 Group:          Development/Building
240 Provides:       %{name}-headers(netfilter) = 20070806
241 AutoReqProv:    no
242
243 %description headers
244 These are the C header files for the Linux kernel, which define
245 structures and constants that are needed when rebuilding the kernel or
246 building kernel modules.
247
248 %description headers -l de.UTF-8
249 Dies sind die C Header Dateien für den Linux-Kernel, die definierte
250 Strukturen und Konstante beinhalten, die beim rekompilieren des
251 Kernels oder bei Kernel Modul kompilationen gebraucht werden.
252
253 %description headers -l pl.UTF-8
254 Pakiet zawiera pliki nagłówkowe jądra, niezbędne do rekompilacji jądra
255 oraz budowania modułów jądra.
256
257 %package module-build
258 Summary:        Development files for building kernel modules
259 Summary(de.UTF-8):      Development Dateien die beim Kernel Modul kompilationen gebraucht werden
260 Summary(pl.UTF-8):      Pliki służące do budowania modułów jądra
261 Group:          Development/Building
262 Requires:       %{name}-headers = %{epoch}:%{version}-%{release}
263 Conflicts:      rpmbuild(macros) < 1.652
264 AutoReqProv:    no
265
266 %description module-build
267 Development files from kernel source tree needed to build Linux kernel
268 modules from external packages.
269
270 %description module-build -l de.UTF-8
271 Development Dateien des Linux-Kernels die beim kompilieren externer
272 Kernel Module gebraucht werden.
273
274 %description module-build -l pl.UTF-8
275 Pliki ze drzewa źródeł jądra potrzebne do budowania modułów jądra
276 Linuksa z zewnętrznych pakietów.
277
278 %package source
279 Summary:        Kernel source tree
280 Summary(de.UTF-8):      Der Kernel Quelltext
281 Summary(pl.UTF-8):      Kod źródłowy jądra Linuksa
282 Group:          Development/Building
283 Requires:       %{name}-module-build = %{epoch}:%{version}-%{release}
284 AutoReqProv:    no
285
286 %description source
287 This is the source code for the Linux kernel. You can build a custom
288 kernel that is better tuned to your particular hardware.
289
290 %description source -l de.UTF-8
291 Das Kernel-Source-Paket enthält den source code (C/Assembler-Code) des
292 Linux-Kernels. Die Source-Dateien werden gebraucht, um viele
293 C-Programme zu kompilieren, da sie auf Konstanten zurückgreifen, die
294 im Kernel-Source definiert sind. Die Source-Dateien können auch
295 benutzt werden, um einen Kernel zu kompilieren, der besser auf Ihre
296 Hardware ausgerichtet ist.
297
298 %description source -l fr.UTF-8
299 Le package pour le kernel-source contient le code source pour le noyau
300 linux. Ces sources sont nécessaires pour compiler la plupart des
301 programmes C, car il dépend de constantes définies dans le code
302 source. Les sources peuvent être aussi utilisée pour compiler un noyau
303 personnalisé pour avoir de meilleures performances sur des matériels
304 particuliers.
305
306 %description source -l pl.UTF-8
307 Pakiet zawiera kod źródłowy jądra systemu.
308
309 %package doc
310 Summary:        Kernel documentation
311 Summary(de.UTF-8):      Kernel Dokumentation
312 Summary(pl.UTF-8):      Dokumentacja do jądra Linuksa
313 Group:          Documentation
314 AutoReqProv:    no
315
316 %description doc
317 This is the documentation for the Linux kernel, as found in
318 /usr/src/linux/Documentation directory.
319
320 %description doc -l de.UTF-8
321 Dies ist die Kernel Dokumentation wie sie im 'Documentation'
322 Verzeichniss vorgefunden werden kann.
323
324 %description doc -l pl.UTF-8
325 Pakiet zawiera dokumentację do jądra Linuksa pochodzącą z katalogu
326 /usr/src/linux/Documentation.
327
328 %prep
329 %setup -qc
330 ln -s %{SOURCE2} kernel-module-build.pl
331 ln -s %{SOURCE3} Makefile
332 cd linux-%{basever}
333
334 %if "%{postver}" != "0"
335 %{__xz} -dc %{SOURCE1} | patch -p1 -s
336 %endif
337
338 # Fix EXTRAVERSION in main Makefile
339 sed -i 's#EXTRAVERSION =.*#EXTRAVERSION = %{?alt_kernel:_%{alt_kernel}}#g' Makefile
340
341 # cleanup backups after patching
342 find '(' -name '*~' -o -name '*.orig' -o -name '.gitignore' ')' -print0 | xargs -0 -r -l512 rm -f
343
344 find -name '*.py' -print0 | \
345         xargs -0 %{__sed} -i -e '1s,/usr/bin/python$,%{__python},' \
346                 -e '1s,/usr/bin/env python$,%{__python},' \
347                 -e '1s,/usr/bin/env python3$,%{__python3},'
348
349 %{__sed} -i -e '1s,/usr/bin/python$,%{__python},' \
350         -e '1s,/usr/bin/env python$,%{__python},' \
351         -e '1s,/usr/bin/env python3$,%{__python3},' \
352         drivers/staging/greybus/tools/lbtest \
353         scripts/bloat-o-meter \
354         scripts/diffconfig \
355         scripts/dtc/dt-extract-compatibles \
356         scripts/jobserver-exec \
357         scripts/show_delta \
358         tools/hv/vmbus_testing \
359         tools/kvm/kvm_stat/kvm_stat \
360         tools/testing/selftests/exec/binfmt_script.py
361
362 find -name '*.pl' -print0 | \
363         xargs -0 %{__sed} -i -e '1s,/usr/bin/env perl,%{__perl},' \
364
365 %{__sed} -i -e '1s,/usr/bin/env perl,%{__perl},' \
366         scripts/dtc/dt_to_config \
367         scripts/cleanfile \
368         scripts/cleanpatch \
369         scripts/documentation-file-ref-check \
370         scripts/get_dvb_firmware \
371         scripts/kernel-doc \
372         scripts/sphinx-pre-install \
373         scripts/stackdelta
374
375 %{__sed} -i -e '1s,/usr/bin/env bash,%{__bash},' \
376         tools/testing/selftests/powerpc/security/mitigation-patching.sh \
377         scripts/config \
378         scripts/check-local-export
379
380 %build
381 install -d %{objdir}
382 cat > %{targetobj}.mk <<'EOF'
383 # generated by %{name}.spec
384 KERNELSRC               := %{srcdir}
385 KERNELOUTPUT    := %{objdir}
386
387 SRCARCH         := %{target_arch_dir}
388 ARCH            := %{_target_base_arch}
389 Q               := %{!?with_verbose:@}
390 MAKE_OPTS       := %{MakeOpts}
391 DEFCONFIG   := %{defconfig}
392 EOF
393
394 cd %{objdir}
395 install -d arch/%{target_arch_dir}
396 %ifarch i686
397         cat %{SOURCE10} > %{defconfig}
398 %endif
399 %ifarch x86_64
400         cat %{SOURCE11} > %{defconfig}
401 %endif
402 sed -i "s:CONFIG_LOCALVERSION=\"\":CONFIG_LOCALVERSION=\"-%{localversion}\":" %{defconfig}
403
404 ln -sf %{defconfig} .config
405 cd -
406
407 %{__make} \
408         TARGETOBJ=%{targetobj} \
409         %{?with_verbose:V=1} \
410         oldconfig
411
412 # build kernel
413 %{__make} \
414         TARGETOBJ=%{targetobj} \
415         %{?with_verbose:V=1} \
416         all
417
418 %install
419 rm -rf $RPM_BUILD_ROOT
420 %{__make} %{MakeOpts} -j1 %{!?with_verbose:-s} modules_install \
421         -C %{objdir} \
422         %{?with_verbose:V=1} \
423         DEPMOD=%{DepMod} \
424         mod_compress_cmd=true \
425         INSTALL_MOD_PATH=$RPM_BUILD_ROOT \
426         KERNELRELEASE=%{kernel_release}
427
428 install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/misc
429
430 # create directories which may be missing, to simplyfy %files
431 install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/kernel/{arch,sound,mm}
432
433 # rpm obeys filelinkto checks for ghosted symlinks, convert to files
434 rm -f $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/{build,source}
435 touch $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/{build,source}
436
437 # no point embed content for %ghost files. empty them
438 for a in \
439         dep{,.bin} \
440         alias{,.bin} \
441         devname \
442         softdep \
443         symbols{,.bin} \
444 ; do
445         test -f $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.$a
446         > $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.$a
447 done
448
449 # /boot
450 install -d $RPM_BUILD_ROOT/boot
451 cp -a %{objdir}/System.map $RPM_BUILD_ROOT/boot/System.map-%{kernel_release}
452 cp -aL %{objdir}/.config $RPM_BUILD_ROOT/boot/config-%{kernel_release}
453 cp -a %{objdir}/arch/%{target_arch_dir}/boot/bzImage $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
454 install -p %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinux-%{kernel_release}
455
456 # ghosted initrd
457 touch $RPM_BUILD_ROOT%{initrd_dir}/initramfs-%{kernel_release}.img
458
459 %if "%{_target_base_arch}" != "%{_host_base_arch}"
460 touch $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.dep
461 %endif
462
463 # /etc/modrobe.d
464 install -d $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/%{kernel_release}
465
466 # /usr/src/linux
467 install -d $RPM_BUILD_ROOT%{_kernelsrcdir}
468
469 # test if we can hardlink -- %{_builddir} and $RPM_BUILD_ROOT on same partition
470 if cp -al %{srcdir}/COPYING $RPM_BUILD_ROOT/COPYING 2>/dev/null; then
471         l=l
472         rm -f $RPM_BUILD_ROOT/COPYING
473 fi
474
475 cp -a$l %{srcdir}/* $RPM_BUILD_ROOT%{_kernelsrcdir}
476 cp -a %{objdir}/Module.symvers $RPM_BUILD_ROOT%{_kernelsrcdir}
477 cp -aL %{objdir}/.config $RPM_BUILD_ROOT%{_kernelsrcdir}
478 cp -a %{objdir}/include $RPM_BUILD_ROOT%{_kernelsrcdir}
479 # copy arch/x86/include/generated
480 for dir in $(cd %{objdir} && find arch -name generated -type d); do
481         cp -a %{objdir}/$dir $RPM_BUILD_ROOT%{_kernelsrcdir}/$dir
482         find $RPM_BUILD_ROOT%{_kernelsrcdir}/$dir -name '.*.cmd' -exec rm "{}" ";"
483 done
484
485 # version.h location changed in 3.7, but a lot of external modules don't know about it
486 # add a compatibility symlink
487 ln -s ../generated/uapi/linux/version.h $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/version.h
488
489 # disable this here, causes a lot of build-time problems and our rpm-build disables it anyway
490 %{__sed} -i -e 's|\(CONSTIFY_PLUGIN.*:=.*\)|# \1|' $RPM_BUILD_ROOT%{_kernelsrcdir}/Makefile
491
492 # collect module-build files and directories
493 # Usage: kernel-module-build.pl $rpmdir $fileoutdir
494 fileoutdir=$(pwd)
495 cd $RPM_BUILD_ROOT%{_kernelsrcdir}
496 %{__perl} %{topdir}/kernel-module-build.pl %{_kernelsrcdir} $fileoutdir
497 cd -
498
499 for f in `find %{objdir}/scripts -type f -print | grep -v "/\.\|\.o$"` ; do
500         ff=${f##%{objdir}/}
501         if [ -x "$f" ]; then
502                 echo "%attr(755,root,root) %{_kernelsrcdir}/$ff" >>files.mb_include_modulebuild_and_dirs
503         else
504                 echo "%{_kernelsrcdir}/$ff" >>files.mb_include_modulebuild_and_dirs
505         fi
506         echo "%exclude %{_kernelsrcdir}/$ff" >>files.source_exclude_modulebuild_and_dirs
507         cp -a "$f" "$RPM_BUILD_ROOT%{_kernelsrcdir}/$ff"
508 done
509
510 %if %{with doc}
511 # move to %{_docdir} so we wouldn't depend on any kernel package for dirs
512 install -d $RPM_BUILD_ROOT%{_docdir}
513 mv $RPM_BUILD_ROOT{%{_kernelsrcdir}/Documentation,%{_docdir}/%{name}-%{version}}
514
515 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/dontdiff
516 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/Makefile
517 #%{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/*/Makefile
518 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/*/*/Makefile
519 %else
520 %{__rm} -r $RPM_BUILD_ROOT%{_kernelsrcdir}/Documentation
521 %endif
522
523 %clean
524 rm -rf $RPM_BUILD_ROOT
525
526 %preun
527 if [ -x /sbin/new-kernel-pkg ]; then
528         /sbin/new-kernel-pkg --remove %{kernel_release}
529 fi
530
531 %post
532 %depmod %{kernel_release}
533
534 %posttrans
535 # generate initramfs
536 if [ -x /sbin/dracut ]; then
537         /sbin/dracut --force --quiet /boot/initramfs-%{kernel_release}.img %{kernel_release}
538 fi
539 # update boot loader
540 if [ -x /sbin/update-grub -a -f /etc/sysconfig/grub ]; then
541         if [ "$(. /etc/sysconfig/grub; echo ${UPDATE_GRUB:-yes})" = "yes" ]; then
542                 /sbin/update-grub >/dev/null
543         fi
544 fi
545
546 %post drm
547 %depmod %{kernel_release}
548
549 %postun drm
550 %depmod %{kernel_release}
551
552 %post pcmcia
553 %depmod %{kernel_release}
554
555 %postun pcmcia
556 %depmod %{kernel_release}
557
558 %post sound-alsa
559 %depmod %{kernel_release}
560
561 %postun sound-alsa
562 %depmod %{kernel_release}
563
564 %post headers
565 ln -snf %{basename:%{_kernelsrcdir}} %{_prefix}/src/linux%{versuffix}%{_alt_kernel}
566
567 %postun headers
568 if [ "$1" = "0" ]; then
569         if [ -L %{_prefix}/src/linux%{versuffix}%{_alt_kernel} ]; then
570                 if [ "$(readlink %{_prefix}/src/linux%{versuffix}%{_alt_kernel})" = "linux%{versuffix}%{_alt_kernel}-%{version}" ]; then
571                         rm -f %{_prefix}/src/linux%{versuffix}%{_alt_kernel}
572                 fi
573         fi
574 fi
575
576 %triggerin module-build -- %{name} = %{epoch}:%{version}-%{release}
577 ln -sfn %{_kernelsrcdir} /lib/modules/%{kernel_release}/build
578 ln -sfn %{_kernelsrcdir} /lib/modules/%{kernel_release}/source
579
580 %triggerun module-build -- %{name} = %{epoch}:%{version}-%{release}
581 if [ "$1" = 0 ]; then
582         rm -f /lib/modules/%{kernel_release}/{build,source}
583 fi
584
585 %files
586 %defattr(644,root,root,755)
587 /boot/vmlinuz-%{kernel_release}
588 /boot/System.map-%{kernel_release}
589 /boot/config-%{kernel_release}
590 %ghost %{initrd_dir}/initramfs-%{kernel_release}.img
591
592 %dir /lib/modules/%{kernel_release}
593 %dir /lib/modules/%{kernel_release}/kernel
594 /lib/modules/%{kernel_release}/kernel/arch
595 /lib/modules/%{kernel_release}/kernel/block
596 /lib/modules/%{kernel_release}/kernel/crypto
597 /lib/modules/%{kernel_release}/kernel/drivers
598 %exclude /lib/modules/%{kernel_release}/kernel/drivers/gpu
599 /lib/modules/%{kernel_release}/kernel/fs
600 /lib/modules/%{kernel_release}/kernel/kernel
601 /lib/modules/%{kernel_release}/kernel/lib
602 /lib/modules/%{kernel_release}/kernel/net
603 /lib/modules/%{kernel_release}/kernel/mm
604 %dir /lib/modules/%{kernel_release}/kernel/sound
605 /lib/modules/%{kernel_release}/kernel/sound/ac97_bus.ko*
606 /lib/modules/%{kernel_release}/kernel/sound/sound*.ko*
607 %exclude /lib/modules/%{kernel_release}/kernel/drivers/media/pci/cx88/cx88-alsa.ko*
608 %exclude /lib/modules/%{kernel_release}/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko*
609 %exclude /lib/modules/%{kernel_release}/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko*
610 %dir /lib/modules/%{kernel_release}/misc
611 %exclude /lib/modules/%{kernel_release}/kernel/drivers/pcmcia/[!p]*
612 %exclude /lib/modules/%{kernel_release}/kernel/drivers/pcmcia/pd6729.ko*
613 %exclude /lib/modules/%{kernel_release}/kernel/drivers/*/pcmcia
614 %exclude /lib/modules/%{kernel_release}/kernel/drivers/ata/pata_pcmcia.ko*
615 %exclude /lib/modules/%{kernel_release}/kernel/drivers/bluetooth/*_cs.ko*
616 %exclude /lib/modules/%{kernel_release}/kernel/drivers/net/wireless/*_cs.ko*
617 %exclude /lib/modules/%{kernel_release}/kernel/drivers/parport/parport_cs.ko*
618 %exclude /lib/modules/%{kernel_release}/kernel/drivers/tty/serial/8250/serial_cs.ko*
619 %exclude /lib/modules/%{kernel_release}/kernel/drivers/usb/host/sl811_cs.ko*
620 /lib/modules/%{kernel_release}/kernel/security
621 /lib/modules/%{kernel_release}/kernel/virt
622
623 %dir %{_sysconfdir}/modprobe.d/%{kernel_release}
624
625 # provided by build
626 /lib/modules/%{kernel_release}/modules.order
627 /lib/modules/%{kernel_release}/modules.builtin*
628
629 # rest modules.* are ghost (regenerated by post depmod -a invocation)
630 %ghost /lib/modules/%{kernel_release}/modules.alias
631 %ghost /lib/modules/%{kernel_release}/modules.alias.bin
632 %ghost /lib/modules/%{kernel_release}/modules.dep
633 %ghost /lib/modules/%{kernel_release}/modules.dep.bin
634 %ghost /lib/modules/%{kernel_release}/modules.devname
635 %ghost /lib/modules/%{kernel_release}/modules.softdep
636 %ghost /lib/modules/%{kernel_release}/modules.symbols
637 %ghost /lib/modules/%{kernel_release}/modules.symbols.bin
638
639 # symlinks pointing to kernelsrcdir
640 %ghost /lib/modules/%{kernel_release}/build
641 %ghost /lib/modules/%{kernel_release}/source
642
643 %files vmlinux
644 %defattr(644,root,root,755)
645 /boot/vmlinux-%{kernel_release}
646
647 %files drm
648 %defattr(644,root,root,755)
649 /lib/modules/%{kernel_release}/kernel/drivers/gpu
650
651 %files pcmcia
652 %defattr(644,root,root,755)
653 /lib/modules/%{kernel_release}/kernel/drivers/pcmcia/*ko*
654 /lib/modules/%{kernel_release}/kernel/drivers/*/pcmcia
655 %exclude /lib/modules/%{kernel_release}/kernel/drivers/pcmcia/pcmcia*ko*
656 /lib/modules/%{kernel_release}/kernel/drivers/bluetooth/*_cs.ko*
657 /lib/modules/%{kernel_release}/kernel/drivers/ata/pata_pcmcia.ko*
658 /lib/modules/%{kernel_release}/kernel/drivers/net/wireless/*_cs.ko*
659 /lib/modules/%{kernel_release}/kernel/drivers/parport/parport_cs.ko*
660 /lib/modules/%{kernel_release}/kernel/drivers/tty/serial/8250/serial_cs.ko*
661 /lib/modules/%{kernel_release}/kernel/drivers/usb/host/sl811_cs.ko*
662
663 %files sound-alsa
664 %defattr(644,root,root,755)
665 /lib/modules/%{kernel_release}/kernel/sound
666 %exclude %dir /lib/modules/%{kernel_release}/kernel/sound
667 %exclude /lib/modules/%{kernel_release}/kernel/sound/ac97_bus.ko*
668 %exclude /lib/modules/%{kernel_release}/kernel/sound/sound*.ko*
669 /lib/modules/%{kernel_release}/kernel/drivers/media/pci/cx88/cx88-alsa.ko*
670 /lib/modules/%{kernel_release}/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko*
671 /lib/modules/%{kernel_release}/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko*
672
673 %files headers -f files.headers_exclude_kbuild
674 %defattr(644,root,root,755)
675 %dir %{_kernelsrcdir}
676 %{_kernelsrcdir}/include
677 %dir %{_kernelsrcdir}/arch
678 %dir %{_kernelsrcdir}/arch/[!K]*
679 %{_kernelsrcdir}/arch/*/include
680 %dir %{_kernelsrcdir}/security
681 %dir %{_kernelsrcdir}/security/selinux
682 %{_kernelsrcdir}/security/selinux/include
683 %dir %{_kernelsrcdir}/usr
684 %dir %{_kernelsrcdir}/usr/include
685 %{_kernelsrcdir}/.config
686 %{_kernelsrcdir}/Module.symvers
687
688 %files module-build -f files.mb_include_modulebuild_and_dirs
689 %defattr(644,root,root,755)
690 %exclude %dir %{_kernelsrcdir}/arch/um
691 %{_kernelsrcdir}/arch/*/kernel/asm-offsets*
692 %{_kernelsrcdir}/arch/*/kernel/sigframe*.h
693 %{_kernelsrcdir}/drivers/media/pci/bt8xx/bttv.h
694 %{_kernelsrcdir}/kernel/bounds.c
695 %{_kernelsrcdir}/scripts/basic/*.c
696 %attr(755,root,root) %{_kernelsrcdir}/scripts/kconfig/*.sh
697 %{_kernelsrcdir}/scripts/kconfig/*.pl
698 %{_kernelsrcdir}/scripts/kconfig/*.glade
699 %{_kernelsrcdir}/scripts/kconfig/*.cc
700 %{_kernelsrcdir}/scripts/kconfig/*.y
701 %{_kernelsrcdir}/scripts/kconfig/*.l
702 %{_kernelsrcdir}/scripts/kconfig/[c-k]*.c
703 %{_kernelsrcdir}/scripts/kconfig/[c-k]*.h
704 %{_kernelsrcdir}/scripts/kconfig/l*.h
705 %{_kernelsrcdir}/scripts/kconfig/[m-o]*.c
706 %{_kernelsrcdir}/scripts/kconfig/[m-o]*.h
707 %{_kernelsrcdir}/scripts/kconfig/preprocess.c
708 %{_kernelsrcdir}/scripts/kconfig/[q-u]*.c
709 %{_kernelsrcdir}/scripts/kconfig/[q-u]*.h
710 %{_kernelsrcdir}/scripts/kconfig/lxdialog
711 %{_kernelsrcdir}/scripts/mod/*.c
712 %{_kernelsrcdir}/scripts/mod/modpost.h
713 %attr(755,root,root) %{_kernelsrcdir}/scripts/mkcompile_h
714 %attr(755,root,root) %{_kernelsrcdir}/scripts/setlocalversion
715 %{_kernelsrcdir}/scripts/subarch.include
716 %{_kernelsrcdir}/scripts/*.c
717 %{_kernelsrcdir}/scripts/*.h
718 %attr(755,root,root) %{_kernelsrcdir}/scripts/*.sh
719 %{_kernelsrcdir}/scripts/selinux/genheaders/*.c
720 %{_kernelsrcdir}/scripts/selinux/mdp/*.c
721 %exclude %dir %{_kernelsrcdir}/security
722 %exclude %dir %{_kernelsrcdir}/security/selinux
723
724 %if %{with doc}
725 %files doc
726 %defattr(644,root,root,755)
727 %dir %{_docdir}/%{name}-%{version}
728
729 %{_docdir}/%{name}-%{version}/[!jkz]*
730 %{_docdir}/%{name}-%{version}/kbuild
731 %{_docdir}/%{name}-%{version}/kernel-hacking
732 %endif
733
734 %if %{with source}
735 %files source -f files.source_exclude_modulebuild_and_dirs
736 %defattr(644,root,root,755)
737 %{_kernelsrcdir}/arch/*/[!Mik]*
738 %{_kernelsrcdir}/arch/*/kernel/[!M]*
739 %{_kernelsrcdir}/arch/ia64/install.sh
740 %{_kernelsrcdir}/arch/m68k/ifpsp060/[!M]*
741 %{_kernelsrcdir}/arch/m68k/ifpsp060/MISC
742 %{_kernelsrcdir}/arch/m68k/install.sh
743 %{_kernelsrcdir}/arch/parisc/install.sh
744 %{_kernelsrcdir}/arch/x86/ia32/[!M]*
745 %{_kernelsrcdir}/arch/arm64/kvm
746 %{_kernelsrcdir}/arch/mips/kvm
747 %{_kernelsrcdir}/arch/powerpc/kexec
748 %{_kernelsrcdir}/arch/powerpc/kvm
749 %{_kernelsrcdir}/arch/riscv/kvm
750 %{_kernelsrcdir}/arch/s390/kvm
751 %{_kernelsrcdir}/arch/x86/kvm
752 %exclude %{_kernelsrcdir}/arch/*/kernel/asm-offsets*
753 %exclude %{_kernelsrcdir}/arch/*/kernel/sigframe*.h
754 %exclude %{_kernelsrcdir}/drivers/media/pci/bt8xx/bttv.h
755 %{_kernelsrcdir}/block
756 %{_kernelsrcdir}/certs
757 %{_kernelsrcdir}/crypto
758 %{_kernelsrcdir}/drivers
759 %{_kernelsrcdir}/fs
760 %{_kernelsrcdir}/init
761 %{_kernelsrcdir}/io_uring
762 %{_kernelsrcdir}/ipc
763 %{_kernelsrcdir}/kernel
764 %exclude %{_kernelsrcdir}/kernel/bounds.c
765 %{_kernelsrcdir}/lib
766 %{_kernelsrcdir}/mm
767 %{_kernelsrcdir}/net
768 %{_kernelsrcdir}/virt
769 %{_kernelsrcdir}/rust
770 %{_kernelsrcdir}/samples
771 %{_kernelsrcdir}/scripts/*
772 %exclude %{_kernelsrcdir}/scripts/Kbuild.include
773 %exclude %{_kernelsrcdir}/scripts/Makefile*
774 %exclude %{_kernelsrcdir}/scripts/basic
775 %exclude %{_kernelsrcdir}/scripts/kconfig
776 %exclude %{_kernelsrcdir}/scripts/mkcompile_h
777 %exclude %{_kernelsrcdir}/scripts/mod
778 %exclude %{_kernelsrcdir}/scripts/setlocalversion
779 %exclude %{_kernelsrcdir}/scripts/*.c
780 %exclude %{_kernelsrcdir}/scripts/*.h
781 %exclude %{_kernelsrcdir}/scripts/*.sh
782 %exclude %dir %{_kernelsrcdir}/scripts/selinux
783 %exclude %{_kernelsrcdir}/scripts/selinux/Makefile
784 %exclude %dir %{_kernelsrcdir}/scripts/selinux/genheaders
785 %exclude %{_kernelsrcdir}/scripts/selinux/genheaders/Makefile
786 %exclude %{_kernelsrcdir}/scripts/selinux/genheaders/*.c
787 %exclude %dir %{_kernelsrcdir}/scripts/selinux/mdp
788 %exclude %{_kernelsrcdir}/scripts/selinux/mdp/Makefile
789 %exclude %{_kernelsrcdir}/scripts/selinux/mdp/*.c
790 %{_kernelsrcdir}/sound
791 %{_kernelsrcdir}/security
792 %exclude %{_kernelsrcdir}/security/selinux/include
793 %{_kernelsrcdir}/tools/*
794 %{_kernelsrcdir}/usr
795 %{_kernelsrcdir}/COPYING
796 %{_kernelsrcdir}/CREDITS
797 %{_kernelsrcdir}/LICENSES
798 %{_kernelsrcdir}/MAINTAINERS
799 %{_kernelsrcdir}/README
800 %endif