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