]> TLD Linux GIT Repositories - packages/kernel.git/blob - kernel-vanilla.spec
- fix module-build files
[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         5.10
7 %define         postver         48
8 %define         rel             1
9
10 %define         alt_kernel      5.10-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/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:  08c72ea21b9ced650622874ee15bb8e3
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 find -name '*.py' -print0 | \
354         xargs -0 %{__sed} -i -e '1s,/usr/bin/python$,%{__python},' \
355                 -e '1s,/usr/bin/env python$,%{__python},' \
356                 -e '1s,/usr/bin/env python3$,%{__python3},'
357
358 %{__sed} -i -e '1s,/usr/bin/python$,%{__python},' \
359         -e '1s,/usr/bin/env python$,%{__python},' \
360         -e '1s,/usr/bin/env python3$,%{__python3},' \
361                 drivers/staging/greybus/tools/lbtest \
362                 scripts/bloat-o-meter \
363                 scripts/diffconfig \
364                 scripts/jobserver-exec \
365                 scripts/show_delta \
366                 tools/hv/vmbus_testing \
367                 tools/kvm/kvm_stat/kvm_stat \
368                 tools/testing/selftests/exec/binfmt_script
369
370 find -name '*.pl' -print0 | \
371         xargs -0 %{__sed} -i -e '1s,/usr/bin/env perl,%{__perl},' \
372
373 %{__sed} -i -e '1s,/usr/bin/env perl,%{__perl},' \
374         scripts/dtc/dt_to_config \
375         scripts/cleanfile \
376         scripts/cleanpatch \
377         scripts/documentation-file-ref-check \
378         scripts/get_dvb_firmware \
379         scripts/kernel-doc \
380         scripts/sphinx-pre-install \
381         scripts/stackdelta
382
383 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+bash(\s|$),#!/bin/bash\\1,' \
384         scripts/config
385
386 %{__sed} -i -e '1s,/usr/bin/awk,/bin/awk,' \
387         scripts/ld-version.sh
388
389 %build
390 install -d %{objdir}
391 cat > %{targetobj}.mk <<'EOF'
392 # generated by %{name}.spec
393 KERNELSRC               := %{srcdir}
394 KERNELOUTPUT    := %{objdir}
395
396 SRCARCH         := %{target_arch_dir}
397 ARCH            := %{_target_base_arch}
398 Q               := %{!?with_verbose:@}
399 MAKE_OPTS       := %{MakeOpts}
400 DEFCONFIG   := %{defconfig}
401 EOF
402
403 cd %{objdir}
404 install -d arch/%{target_arch_dir}
405 %ifarch i686
406         cat %{SOURCE10} > %{defconfig}
407 %endif
408 %ifarch x86_64
409         cat %{SOURCE11} > %{defconfig}
410 %endif
411 sed -i "s:CONFIG_LOCALVERSION=\"\":CONFIG_LOCALVERSION=\"-%{localversion}\":" %{defconfig}
412
413 ln -sf %{defconfig} .config
414 cd -
415
416 %{__make} \
417         TARGETOBJ=%{targetobj} \
418         %{?with_verbose:V=1} \
419         oldconfig
420
421 # build kernel
422 %{__make} \
423         TARGETOBJ=%{targetobj} \
424         %{?with_verbose:V=1} \
425         all
426
427 %install
428 rm -rf $RPM_BUILD_ROOT
429 %{__make} %{MakeOpts} -j1 %{!?with_verbose:-s} modules_install \
430         -C %{objdir} \
431         %{?with_verbose:V=1} \
432         DEPMOD=%{DepMod} \
433         mod_compress_cmd=true \
434         INSTALL_MOD_PATH=$RPM_BUILD_ROOT \
435         KERNELRELEASE=%{kernel_release}
436
437 install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/misc
438
439 # create directories which may be missing, to simplyfy %files
440 install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/kernel/{arch,sound,mm}
441
442 # rpm obeys filelinkto checks for ghosted symlinks, convert to files
443 rm -f $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/{build,source}
444 touch $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/{build,source}
445
446 # no point embed content for %ghost files. empty them
447 for a in \
448         dep{,.bin} \
449         alias{,.bin} \
450         devname \
451         softdep \
452         symbols{,.bin} \
453 ; do
454         test -f $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.$a
455         > $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.$a
456 done
457
458 # /boot
459 install -d $RPM_BUILD_ROOT/boot
460 cp -a %{objdir}/System.map $RPM_BUILD_ROOT/boot/System.map-%{kernel_release}
461 cp -aL %{objdir}/.config $RPM_BUILD_ROOT/boot/config-%{kernel_release}
462 cp -a %{objdir}/arch/%{target_arch_dir}/boot/bzImage $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
463 install -p %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinux-%{kernel_release}
464
465 # ghosted initrd
466 touch $RPM_BUILD_ROOT%{initrd_dir}/initramfs-%{kernel_release}.img
467
468 %if "%{_target_base_arch}" != "%{_host_base_arch}"
469 touch $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.dep
470 %endif
471
472 # /etc/modrobe.d
473 install -d $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/%{kernel_release}
474
475 # /usr/src/linux
476 install -d $RPM_BUILD_ROOT%{_kernelsrcdir}
477
478 # test if we can hardlink -- %{_builddir} and $RPM_BUILD_ROOT on same partition
479 if cp -al %{srcdir}/COPYING $RPM_BUILD_ROOT/COPYING 2>/dev/null; then
480         l=l
481         rm -f $RPM_BUILD_ROOT/COPYING
482 fi
483
484 cp -a$l %{srcdir}/* $RPM_BUILD_ROOT%{_kernelsrcdir}
485 cp -a %{objdir}/Module.symvers $RPM_BUILD_ROOT%{_kernelsrcdir}
486 cp -aL %{objdir}/.config $RPM_BUILD_ROOT%{_kernelsrcdir}
487 cp -a %{objdir}/include $RPM_BUILD_ROOT%{_kernelsrcdir}
488 # copy arch/x86/include/generated
489 for dir in $(cd %{objdir} && find arch -name generated -type d); do
490         cp -a %{objdir}/$dir $RPM_BUILD_ROOT%{_kernelsrcdir}/$dir
491         find $RPM_BUILD_ROOT%{_kernelsrcdir}/$dir -name '.*.cmd' -exec rm "{}" ";"
492 done
493
494 # version.h location changed in 3.7, but a lot of external modules don't know about it
495 # add a compatibility symlink
496 ln -s ../generated/uapi/linux/version.h $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/version.h
497
498 # disable this here, causes a lot of build-time problems and our rpm-build disables it anyway
499 %{__sed} -i -e 's|\(CONSTIFY_PLUGIN.*:=.*\)|# \1|' $RPM_BUILD_ROOT%{_kernelsrcdir}/Makefile
500
501 # collect module-build files and directories
502 # Usage: kernel-module-build.pl $rpmdir $fileoutdir
503 fileoutdir=$(pwd)
504 cd $RPM_BUILD_ROOT%{_kernelsrcdir}
505 %{__perl} %{topdir}/kernel-module-build.pl %{_kernelsrcdir} $fileoutdir
506 cd -
507
508 for f in `find %{objdir}/scripts -type f -print | grep -v "/\.\|\.o$"` ; do
509         ff=${f##%{objdir}/}
510         if [ -x "$f" ]; then
511                 echo "%attr(755,root,root) %{_kernelsrcdir}/$ff" >>files.mb_include_modulebuild_and_dirs
512         else
513                 echo "%{_kernelsrcdir}/$ff" >>files.mb_include_modulebuild_and_dirs
514         fi
515         echo "%exclude %{_kernelsrcdir}/$ff" >>files.source_exclude_modulebuild_and_dirs
516         cp -a "$f" "$RPM_BUILD_ROOT%{_kernelsrcdir}/$ff"
517 done
518
519 %if %{with doc}
520 # move to %{_docdir} so we wouldn't depend on any kernel package for dirs
521 install -d $RPM_BUILD_ROOT%{_docdir}
522 mv $RPM_BUILD_ROOT{%{_kernelsrcdir}/Documentation,%{_docdir}/%{name}-%{version}}
523
524 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/dontdiff
525 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/Makefile
526 #%{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/*/Makefile
527 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/*/*/Makefile
528 %else
529 %{__rm} -r $RPM_BUILD_ROOT%{_kernelsrcdir}/Documentation
530 %endif
531
532 %clean
533 rm -rf $RPM_BUILD_ROOT
534
535 %preun
536 if [ -x /sbin/new-kernel-pkg ]; then
537         /sbin/new-kernel-pkg --remove %{kernel_release}
538 fi
539
540 %post
541 %depmod %{kernel_release}
542
543 %posttrans
544 # generate initramfs
545 if [ -x /sbin/dracut ]; then
546         /sbin/dracut --force --quiet /boot/initramfs-%{kernel_release}.img %{kernel_release}
547 fi
548 # update boot loader
549 if [ -x /sbin/update-grub -a -f /etc/sysconfig/grub ]; then
550         if [ "$(. /etc/sysconfig/grub; echo ${UPDATE_GRUB:-yes})" = "yes" ]; then
551                 /sbin/update-grub >/dev/null
552         fi
553 fi
554
555 %post drm
556 %depmod %{kernel_release}
557
558 %postun drm
559 %depmod %{kernel_release}
560
561 %post pcmcia
562 %depmod %{kernel_release}
563
564 %postun pcmcia
565 %depmod %{kernel_release}
566
567 %post sound-alsa
568 %depmod %{kernel_release}
569
570 %postun sound-alsa
571 %depmod %{kernel_release}
572
573 %post headers
574 ln -snf %{basename:%{_kernelsrcdir}} %{_prefix}/src/linux%{_alt_kernel}
575
576 %postun headers
577 if [ "$1" = "0" ]; then
578         if [ -L %{_prefix}/src/linux%{_alt_kernel} ]; then
579                 if [ "$(readlink %{_prefix}/src/linux%{_alt_kernel})" = "linux%{_alt_kernel}-%{version}" ]; then
580                         rm -f %{_prefix}/src/linux%{_alt_kernel}
581                 fi
582         fi
583 fi
584
585 %triggerin module-build -- %{name} = %{epoch}:%{version}-%{release}
586 ln -sfn %{_kernelsrcdir} /lib/modules/%{kernel_release}/build
587 ln -sfn %{_kernelsrcdir} /lib/modules/%{kernel_release}/source
588
589 %triggerun module-build -- %{name} = %{epoch}:%{version}-%{release}
590 if [ "$1" = 0 ]; then
591         rm -f /lib/modules/%{kernel_release}/{build,source}
592 fi
593
594 %files
595 %defattr(644,root,root,755)
596 /boot/vmlinuz-%{kernel_release}
597 /boot/System.map-%{kernel_release}
598 /boot/config-%{kernel_release}
599 %ghost %{initrd_dir}/initramfs-%{kernel_release}.img
600
601 %dir /lib/modules/%{kernel_release}
602 %dir /lib/modules/%{kernel_release}/kernel
603 /lib/modules/%{kernel_release}/kernel/arch
604 /lib/modules/%{kernel_release}/kernel/block
605 /lib/modules/%{kernel_release}/kernel/crypto
606 /lib/modules/%{kernel_release}/kernel/drivers
607 %exclude /lib/modules/%{kernel_release}/kernel/drivers/gpu
608 /lib/modules/%{kernel_release}/kernel/fs
609 /lib/modules/%{kernel_release}/kernel/kernel
610 /lib/modules/%{kernel_release}/kernel/lib
611 /lib/modules/%{kernel_release}/kernel/net
612 /lib/modules/%{kernel_release}/kernel/mm
613 %dir /lib/modules/%{kernel_release}/kernel/sound
614 /lib/modules/%{kernel_release}/kernel/sound/ac97_bus.ko*
615 /lib/modules/%{kernel_release}/kernel/sound/sound*.ko*
616 %exclude /lib/modules/%{kernel_release}/kernel/drivers/media/pci/cx88/cx88-alsa.ko*
617 %exclude /lib/modules/%{kernel_release}/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko*
618 %exclude /lib/modules/%{kernel_release}/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko*
619 %dir /lib/modules/%{kernel_release}/misc
620 %exclude /lib/modules/%{kernel_release}/kernel/drivers/pcmcia/[!p]*
621 %exclude /lib/modules/%{kernel_release}/kernel/drivers/pcmcia/pd6729.ko*
622 %exclude /lib/modules/%{kernel_release}/kernel/drivers/*/pcmcia
623 %exclude /lib/modules/%{kernel_release}/kernel/drivers/ata/pata_pcmcia.ko*
624 %exclude /lib/modules/%{kernel_release}/kernel/drivers/bluetooth/*_cs.ko*
625 %exclude /lib/modules/%{kernel_release}/kernel/drivers/ide/ide-cs.ko*
626 %exclude /lib/modules/%{kernel_release}/kernel/drivers/net/wireless/*_cs.ko*
627 %exclude /lib/modules/%{kernel_release}/kernel/drivers/parport/parport_cs.ko*
628 %exclude /lib/modules/%{kernel_release}/kernel/drivers/tty/serial/8250/serial_cs.ko*
629 %exclude /lib/modules/%{kernel_release}/kernel/drivers/usb/host/sl811_cs.ko*
630 /lib/modules/%{kernel_release}/kernel/security
631 /lib/modules/%{kernel_release}/kernel/virt
632
633 %dir %{_sysconfdir}/modprobe.d/%{kernel_release}
634
635 # provided by build
636 /lib/modules/%{kernel_release}/modules.order
637 /lib/modules/%{kernel_release}/modules.builtin*
638
639 # rest modules.* are ghost (regenerated by post depmod -a invocation)
640 %ghost /lib/modules/%{kernel_release}/modules.alias
641 %ghost /lib/modules/%{kernel_release}/modules.alias.bin
642 %ghost /lib/modules/%{kernel_release}/modules.dep
643 %ghost /lib/modules/%{kernel_release}/modules.dep.bin
644 %ghost /lib/modules/%{kernel_release}/modules.devname
645 %ghost /lib/modules/%{kernel_release}/modules.softdep
646 %ghost /lib/modules/%{kernel_release}/modules.symbols
647 %ghost /lib/modules/%{kernel_release}/modules.symbols.bin
648
649 # symlinks pointing to kernelsrcdir
650 %ghost /lib/modules/%{kernel_release}/build
651 %ghost /lib/modules/%{kernel_release}/source
652
653 %files vmlinux
654 %defattr(644,root,root,755)
655 /boot/vmlinux-%{kernel_release}
656
657 %files drm
658 %defattr(644,root,root,755)
659 /lib/modules/%{kernel_release}/kernel/drivers/gpu
660
661 %files pcmcia
662 %defattr(644,root,root,755)
663 /lib/modules/%{kernel_release}/kernel/drivers/pcmcia/*ko*
664 /lib/modules/%{kernel_release}/kernel/drivers/*/pcmcia
665 %exclude /lib/modules/%{kernel_release}/kernel/drivers/pcmcia/pcmcia*ko*
666 /lib/modules/%{kernel_release}/kernel/drivers/bluetooth/*_cs.ko*
667 /lib/modules/%{kernel_release}/kernel/drivers/ata/pata_pcmcia.ko*
668 /lib/modules/%{kernel_release}/kernel/drivers/ide/ide-cs.ko*
669 /lib/modules/%{kernel_release}/kernel/drivers/net/wireless/*_cs.ko*
670 /lib/modules/%{kernel_release}/kernel/drivers/parport/parport_cs.ko*
671 /lib/modules/%{kernel_release}/kernel/drivers/tty/serial/8250/serial_cs.ko*
672 /lib/modules/%{kernel_release}/kernel/drivers/usb/host/sl811_cs.ko*
673
674 %files sound-alsa
675 %defattr(644,root,root,755)
676 /lib/modules/%{kernel_release}/kernel/sound
677 %exclude %dir /lib/modules/%{kernel_release}/kernel/sound
678 %exclude /lib/modules/%{kernel_release}/kernel/sound/ac97_bus.ko*
679 %exclude /lib/modules/%{kernel_release}/kernel/sound/sound*.ko*
680 /lib/modules/%{kernel_release}/kernel/drivers/media/pci/cx88/cx88-alsa.ko*
681 /lib/modules/%{kernel_release}/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko*
682 /lib/modules/%{kernel_release}/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko*
683
684 %files headers -f files.headers_exclude_kbuild
685 %defattr(644,root,root,755)
686 %dir %{_kernelsrcdir}
687 %{_kernelsrcdir}/include
688 %dir %{_kernelsrcdir}/arch
689 %dir %{_kernelsrcdir}/arch/[!K]*
690 %{_kernelsrcdir}/arch/*/include
691 %dir %{_kernelsrcdir}/security
692 %dir %{_kernelsrcdir}/security/selinux
693 %{_kernelsrcdir}/security/selinux/include
694 %dir %{_kernelsrcdir}/usr
695 %dir %{_kernelsrcdir}/usr/include
696 %{_kernelsrcdir}/.config
697 %{_kernelsrcdir}/Module.symvers
698
699 %files module-build -f files.mb_include_modulebuild_and_dirs
700 %defattr(644,root,root,755)
701 %exclude %dir %{_kernelsrcdir}/arch/um
702 %{_kernelsrcdir}/arch/*/kernel/asm-offsets*
703 %{_kernelsrcdir}/arch/*/kernel/sigframe*.h
704 %{_kernelsrcdir}/drivers/media/pci/bt8xx/bttv.h
705 %{_kernelsrcdir}/kernel/bounds.c
706 %{_kernelsrcdir}/scripts/basic/*.c
707 %attr(755,root,root) %{_kernelsrcdir}/scripts/kconfig/*.sh
708 %{_kernelsrcdir}/scripts/kconfig/*.pl
709 %{_kernelsrcdir}/scripts/kconfig/*.glade
710 %{_kernelsrcdir}/scripts/kconfig/*.cc
711 %{_kernelsrcdir}/scripts/kconfig/*.y
712 %{_kernelsrcdir}/scripts/kconfig/*.l
713 %{_kernelsrcdir}/scripts/kconfig/[c-k]*.c
714 %{_kernelsrcdir}/scripts/kconfig/[c-k]*.h
715 %{_kernelsrcdir}/scripts/kconfig/l*.h
716 %{_kernelsrcdir}/scripts/kconfig/[m-o]*.c
717 %{_kernelsrcdir}/scripts/kconfig/[m-o]*.h
718 %{_kernelsrcdir}/scripts/kconfig/preprocess.c
719 %{_kernelsrcdir}/scripts/kconfig/[q-u]*.c
720 %{_kernelsrcdir}/scripts/kconfig/[q-u]*.h
721 %{_kernelsrcdir}/scripts/kconfig/lxdialog
722 %{_kernelsrcdir}/scripts/mod/*.c
723 %{_kernelsrcdir}/scripts/mod/modpost.h
724 %attr(755,root,root) %{_kernelsrcdir}/scripts/mkcompile_h
725 %{_kernelsrcdir}/scripts/mkmakefile
726 %attr(755,root,root) %{_kernelsrcdir}/scripts/setlocalversion
727 %{_kernelsrcdir}/scripts/subarch.include
728 %{_kernelsrcdir}/scripts/*.c
729 %{_kernelsrcdir}/scripts/*.h
730 %attr(755,root,root) %{_kernelsrcdir}/scripts/*.sh
731 %{_kernelsrcdir}/scripts/selinux/genheaders/*.c
732 %{_kernelsrcdir}/scripts/selinux/mdp/*.c
733 %exclude %dir %{_kernelsrcdir}/security
734 %exclude %dir %{_kernelsrcdir}/security/selinux
735
736 %if %{with doc}
737 %files doc
738 %defattr(644,root,root,755)
739 %dir %{_docdir}/%{name}-%{version}
740
741 %{_docdir}/%{name}-%{version}/[!jkz]*
742 %{_docdir}/%{name}-%{version}/kbuild
743 %{_docdir}/%{name}-%{version}/kernel-hacking
744 %endif
745
746 %if %{with source}
747 %files source -f files.source_exclude_modulebuild_and_dirs
748 %defattr(644,root,root,755)
749 %{_kernelsrcdir}/arch/*/[!Mik]*
750 %{_kernelsrcdir}/arch/*/kernel/[!M]*
751 %{_kernelsrcdir}/arch/ia64/install.sh
752 %{_kernelsrcdir}/arch/m68k/ifpsp060/[!M]*
753 %{_kernelsrcdir}/arch/m68k/ifpsp060/MISC
754 %{_kernelsrcdir}/arch/m68k/install.sh
755 %{_kernelsrcdir}/arch/parisc/install.sh
756 %{_kernelsrcdir}/arch/x86/ia32/[!M]*
757 %{_kernelsrcdir}/arch/arm64/kvm
758 %{_kernelsrcdir}/arch/mips/kvm
759 %{_kernelsrcdir}/arch/powerpc/kexec
760 %{_kernelsrcdir}/arch/powerpc/kvm
761 %{_kernelsrcdir}/arch/s390/kvm
762 %{_kernelsrcdir}/arch/x86/kvm
763 %exclude %{_kernelsrcdir}/arch/*/kernel/asm-offsets*
764 %exclude %{_kernelsrcdir}/arch/*/kernel/sigframe*.h
765 %exclude %{_kernelsrcdir}/drivers/media/pci/bt8xx/bttv.h
766 %{_kernelsrcdir}/block
767 %{_kernelsrcdir}/certs
768 %{_kernelsrcdir}/crypto
769 %{_kernelsrcdir}/drivers
770 %{_kernelsrcdir}/fs
771 %{_kernelsrcdir}/init
772 %{_kernelsrcdir}/ipc
773 %{_kernelsrcdir}/kernel
774 %exclude %{_kernelsrcdir}/kernel/bounds.c
775 %{_kernelsrcdir}/lib
776 %{_kernelsrcdir}/mm
777 %{_kernelsrcdir}/net
778 %{_kernelsrcdir}/virt
779 %{_kernelsrcdir}/samples
780 %{_kernelsrcdir}/scripts/*
781 %exclude %{_kernelsrcdir}/scripts/Kbuild.include
782 %exclude %{_kernelsrcdir}/scripts/Makefile*
783 %exclude %{_kernelsrcdir}/scripts/basic
784 %exclude %{_kernelsrcdir}/scripts/kconfig
785 %exclude %{_kernelsrcdir}/scripts/mkcompile_h
786 %exclude %{_kernelsrcdir}/scripts/mkmakefile
787 %exclude %{_kernelsrcdir}/scripts/mod
788 %exclude %{_kernelsrcdir}/scripts/setlocalversion
789 %exclude %{_kernelsrcdir}/scripts/*.c
790 %exclude %{_kernelsrcdir}/scripts/*.h
791 %exclude %{_kernelsrcdir}/scripts/*.sh
792 %exclude %dir %{_kernelsrcdir}/scripts/selinux
793 %exclude %{_kernelsrcdir}/scripts/selinux/Makefile
794 %exclude %dir %{_kernelsrcdir}/scripts/selinux/genheaders
795 %exclude %{_kernelsrcdir}/scripts/selinux/genheaders/Makefile
796 %exclude %{_kernelsrcdir}/scripts/selinux/genheaders/*.c
797 %exclude %dir %{_kernelsrcdir}/scripts/selinux/mdp
798 %exclude %{_kernelsrcdir}/scripts/selinux/mdp/Makefile
799 %exclude %{_kernelsrcdir}/scripts/selinux/mdp/*.c
800 %{_kernelsrcdir}/sound
801 %{_kernelsrcdir}/security
802 %exclude %{_kernelsrcdir}/security/selinux/include
803 %{_kernelsrcdir}/tools/*
804 %{_kernelsrcdir}/usr
805 %{_kernelsrcdir}/COPYING
806 %{_kernelsrcdir}/CREDITS
807 %{_kernelsrcdir}/LICENSES
808 %{_kernelsrcdir}/MAINTAINERS
809 %{_kernelsrcdir}/README
810 %endif