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