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