]> git.pld-linux.org Git - packages/kernel.git/blob - kernel.spec
d519fab496c0fb709025a1764c5266d18f2a4e2c
[packages/kernel.git] / kernel.spec
1 #
2 # LATEST VERSION CHECKER:
3 # # curl -s https://www.kernel.org/finger_banner
4 #
5 # TODO:
6 # - benchmark NO_HZ & HZ=1000 vs HZ=300 on i686
7 #
8 # HOWTO update configuration files:
9 # - run build
10 # - add new options to proper config (kernel-multiarch.config, kernel-x86.config, kernel-powerpc.config etc)
11 # - sort configuration files using:
12 #   ./kernel-config-sort.pl ~/rpm/BUILD/kernel-%{version}/linux-%{version}/ -a x86 kernel-x86.config
13 #   ./kernel-config-sort.pl ~/rpm/BUILD/kernel-%{version}/linux-%{version} kernel-multiarch.config
14 #
15 # Conditional build:
16 %bcond_without  source          # don't build kernel-source package
17 %bcond_without  doc                     # don't build kernel-doc package
18
19 %bcond_with     verbose         # verbose build (V=1)
20
21 %bcond_with     fbcondecor      # build fbcondecor (disable FB_TILEBLITTING and affected fb modules)
22 %bcond_with     pae             # build PAE (HIGHMEM64G) support on 32bit i686 athlon pentium3 pentium4
23 %bcond_with     nfsroot         # build with root on NFS support
24
25 %bcond_without  ipv6            # ipv6 support
26
27 %bcond_without  aufs            # aufs4 support
28
29 %bcond_with     rt              # real-time kernel (CONFIG_PREEMPT_RT) for low latencies
30
31 %bcond_with     vanilla         # don't include any patches
32 %bcond_with     rescuecd        # build kernel for our rescue
33 %bcond_with     myown           # build with your own config (kernel-myown.config)
34
35 %{?debug:%define with_verbose 1}
36
37 %define         have_drm        1
38 %define         have_sound      1
39
40 %if %{with rescuecd}
41 %define         have_drm        0
42 %define         have_sound      0
43 %endif
44
45 %if %{with myown}
46 %define         have_drm        0
47 %define         have_sound      0
48 %endif
49
50 %ifarch sparc sparc64
51 %define         have_drm        0
52 %endif
53
54 %define         rel             1
55 %define         basever         6.8
56 %define         postver         .0
57
58 # define this to '-%{basever}' for longterm branch
59 %define         versuffix       %{nil}
60
61 # __alt_kernel is list of features, empty string if none set
62 # _alt kernel is defined as: %{nil}%{?alt_kernel:-%{?alt_kernel}} (defined in rpm.macros)
63 # alt_kernel should be defined if __alt_kernel has non-empty value (for %{?alt_kernel:foo} constructs)
64 %define         __alt_kernel    %{nil}
65
66 %if "%{__alt_kernel}" != ""
67 %define         alt_kernel      %{__alt_kernel}
68 %endif
69
70 # these override whatever name was picked from bconds
71 %if %{with myown} && "%{_alt_kernel}" == ""
72 %define         alt_kernel      myown
73 %endif
74 %if %{with rescuecd}
75 %define         alt_kernel      rescuecd
76 %endif
77 %if %{with vanilla}
78 %define         alt_kernel      vanilla
79 %endif
80 %if %{with pae}
81 %define         alt_kernel      pae
82 %endif
83 %if %{with rt}
84 %define         alt_kernel      rt
85 %endif
86
87 # kernel release (used in filesystem and eventually in uname -r)
88 # modules will be looked from /lib/modules/%{kernel_release}
89 # localversion is just that without version for "> localversion"
90 %define         localversion    %{rel}
91 %define         kernel_release  %{version}%{?alt_kernel:.%{alt_kernel}}-%{localversion}
92
93 %define         kmod_ver        26-2
94
95 Summary:        The Linux kernel (the core of the Linux operating system)
96 Summary(de.UTF-8):      Der Linux-Kernel (Kern des Linux-Betriebssystems)
97 Summary(et.UTF-8):      Linuxi kernel (ehk operatsioonisüsteemi tuum)
98 Summary(fr.UTF-8):      Le Kernel-Linux (La partie centrale du systeme)
99 Summary(pl.UTF-8):      JÄ…dro Linuksa
100 Name:           kernel%{versuffix}%{_alt_kernel}
101 Version:        %{basever}%{postver}
102 Release:        %{rel}
103 Epoch:          3
104 License:        GPL v2
105 Group:          Base/Kernel
106 Source0:        https://www.kernel.org/pub/linux/kernel/v6.x/linux-%{basever}.tar.xz
107 # Source0-md5:  72d623b959a11850b57406f0b9fe3946
108 %if "%{postver}" != ".0"
109 Patch0:         https://www.kernel.org/pub/linux/kernel/v6.x/patch-%{version}.xz
110 # Patch0-md5:   5b31116070986a56ee2747daf53ca48c
111 %endif
112 Source1:        kernel.sysconfig
113
114 Source3:        kernel-autoconf.h
115 Source4:        kernel-config.h
116 Source6:        kernel-config.awk
117 Source7:        kernel-module-build.pl
118 Source8:        kernel-track-config-change.awk
119 # not used by kernel.spec, but it's good to have it in SOURCES
120 Source9:        kernel-config-sort.pl
121 Source10:       kernel.make
122
123 Source20:       kernel-multiarch.config
124 Source21:       kernel-x86.config
125 Source22:       kernel-sparc.config
126 Source23:       kernel-alpha.config
127 Source24:       kernel-powerpc.config
128 Source26:       kernel-arm.config
129 Source27:       kernel-arm64.config
130
131 Source41:       kernel-patches.config
132 Source44:       kernel-rt.config
133
134 Source58:       kernel-inittmpfs.config
135
136 Patch2:         android-enable-building-binder-as-module.patch
137 # http://dev.gentoo.org/~spock/projects/fbcondecor/archive/fbcondecor-0.9.4-2.6.25-rc6.patch
138 Patch3:         kernel-fbcondecor.patch
139 Patch6:         linux-wistron-nx.patch
140
141 # netfilter related stuff mostly based on patch-o-matic-ng
142 # snapshot 20070806 with some fixes. Some modules
143 # were ported to nf_conntrack.
144
145 Patch10:        kernel-pom-ng-IPV4OPTSSTRIP.patch
146
147 ### End netfilter
148
149 # by Baggins request:
150 # derived from ftp://ftp.cmf.nrl.navy.mil/pub/chas/linux-atm/vbr/vbr-kernel-diffs
151 Patch55:        kernel-atm-vbr.patch
152 Patch56:        kernel-atmdd.patch
153
154 # http://synce.svn.sourceforge.net/svnroot/synce/trunk/patches/linux-2.6.22-rndis_host-wm5.patch
155 Patch59:        kernel-rndis_host-wm5.patch
156
157 # see update-source.sh
158 Patch145:       kernel-aufs.patch
159 Patch147:       kernel-aufs-make.patch
160
161 # Show normal colors in menuconfig with ncurses ABI 6
162 Patch250:       kernel-fix_256colors_menuconfig.patch
163
164 # https://rt.wiki.kernel.org/
165 # https://www.kernel.org/pub/linux/kernel/projects/rt/4.9/patch-4.9.6-rt4.patch.xz
166 Patch500:       kernel-rt.patch
167
168 Patch2000:      kernel-small_fixes.patch
169 Patch2001:      kernel-pwc-uncompress.patch
170
171 # for rescuecd
172 # based on ftp://ftp.leg.uct.ac.za/pub/linux/rip/tmpfs_root-2.6.30.diff.gz
173 Patch7000:      kernel-inittmpfs.patch
174
175 # ARM only
176 Patch8000:      rpi-sound.patch
177 Patch8001:      kernel-pinebook-pro.patch
178 Patch8002:      atheros-disallow-retrain-nongen1-pcie.patch
179 Patch8004:      ath-regd.patch
180 Patch8005:      rkvdec-hevc.patch
181
182 URL:            https://www.kernel.org/
183 AutoReqProv:    no
184 BuildRequires:  /sbin/depmod
185 BuildRequires:  bc >= 1.06.95
186 BuildRequires:  binutils >= 3:2.23
187 BuildRequires:  bison >= 2.0
188 %ifarch sparc sparc64
189 BuildRequires:  elftoaout
190 %endif
191 BuildRequires:  elfutils-devel
192 BuildRequires:  flex >= 2.5.35
193 BuildRequires:  gcc >= 6:7.2.0-6
194 BuildRequires:  gcc-c++
195 BuildRequires:  gcc-plugin-devel
196 BuildRequires:  hostname
197 BuildRequires:  kmod >= %{kmod_ver}
198 BuildRequires:  libstdc++-devel
199 BuildRequires:  make >= 1:3.81
200 BuildRequires:  openssl-devel >= 1.0.0
201 BuildRequires:  openssl-tools >= 1.0.0
202 BuildRequires:  perl-base >= 5
203 BuildRequires:  rpm-build >= 4.5-24
204 BuildRequires:  rpmbuild(macros) >= 2.019
205 BuildRequires:  tar >= 1:1.22
206 %ifarch ppc
207 BuildRequires:  uboot-mkimage
208 %endif
209 BuildRequires:  xz >= 1:4.999.7
210 BuildConflicts: dwarves < 1.16
211 Requires(post): coreutils
212 Requires(post): geninitrd >= 12787-6
213 Requires(post): kmod >= %{kmod_ver}
214 Requires:       /sbin/depmod
215 Requires:       coreutils
216 Requires:       geninitrd >= 12787-6
217 Requires:       kmod >= %{kmod_ver}
218 %if %{with pae}
219 %ifarch i686 athlon pentium3 pentium4
220 Requires:       cpuinfo(pae)
221 %endif
222 %endif
223 Suggests:       dracut
224 Suggests:       keyutils
225 Suggests:       linux-firmware
226 Provides:       %{name}(netfilter) = 20070806
227 Provides:       %{name}(vermagic) = %{kernel_release}
228 Obsoletes:      kernel%{_alt_kernel}-char-lirc-ene0100 < 0.9.0
229 Obsoletes:      kernel%{_alt_kernel}-char-lirc-it87 < 0.9.0
230 Obsoletes:      kernel%{_alt_kernel}-char-lirc-ite8709 < 0.9.0
231 Obsoletes:      kernel%{_alt_kernel}-char-lirc-mceusb < 0.9.0
232 Obsoletes:      kernel%{_alt_kernel}-char-lirc-streamzap < 0.9.0
233 Obsoletes:      kernel%{_alt_kernel}-isdn-mISDN < 2.0.35
234 Obsoletes:      kernel-firmware < 3:2.6.33
235 Obsoletes:      kernel-misc-acer_acpi < 0.3-2
236 Obsoletes:      kernel-misc-fuse < 2.8.5-2
237 Obsoletes:      kernel-misc-uvc < 0.215.1-10
238 Obsoletes:      kernel-modules < 2.2.2-2
239 Obsoletes:      kernel-net-ar81 < 1.0.1.0-3
240 Obsoletes:      kernel-net-hostap < 0.4.7-2
241 Obsoletes:      kernel-net-ieee80211 < 1.2.18-7
242 Obsoletes:      kernel-net-ipp2p < 0.8.2.-17
243 Obsoletes:      kernel-net-rt61 < 1.1.0-2.2007122707.13
244 Obsoletes:      kernel-smp < 3:2.6.21
245 Conflicts:      e2fsprogs < 1.29
246 Conflicts:      isdn4k-utils < 3.1pre1
247 Conflicts:      jfsutils < 1.1.3
248 Conflicts:      libcap-libs < 1:2.34
249 Conflicts:      libusb < 1.0.9
250 Conflicts:      linux-firmware < 20120720
251 Conflicts:      lvm2 < 2.02.40
252 Conflicts:      module-init-tools < 3.16
253 Conflicts:      nfs-utils < 1.0.5
254 Conflicts:      oprofile < 0.9
255 Conflicts:      ppp < 1:2.4.0
256 Conflicts:      procps < 3.2.0
257 Conflicts:      quota-tools < 3.09
258 Conflicts:      reiserfsprogs < 3.6.3
259 Conflicts:      rpm < 4.4.2-0.2
260 Conflicts:      udev < 1:081
261 Conflicts:      util-linux < 2.10o
262 Conflicts:      xfsprogs < 2.6.0
263 %if %{with pae}
264 ExclusiveArch:  i686 pentium3 pentium4 athlon
265 %else
266 ExclusiveArch:  i486 i586 i686 pentium3 pentium4 athlon %{x8664} x32 alpha %{arm} ppc ppc64 sparc sparc64 aarch64
267 %endif
268 ExclusiveOS:    Linux
269 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
270
271 %define         kmod_compress_cmd       %{__xz}
272
273 %ifarch %{ix86} %{x8664} x32
274 %define         target_arch_dir         x86
275 %endif
276 %ifarch ppc ppc64
277 %define         target_arch_dir         powerpc
278 %endif
279 %ifarch sparc sparc64
280 %define         target_arch_dir         sparc
281 %endif
282 %ifarch aarch64
283 %define         target_arch_dir         arm64
284 %endif
285 %ifnarch %{ix86} %{x8664} x32 ppc ppc64 sparc sparc64 aarch64
286 %define         target_arch_dir         %{_target_base_arch}
287 %endif
288
289 %define         defconfig       arch/%{target_arch_dir}/defconfig
290
291 # No ELF objects there to strip (skips processing 27k files)
292 %define         _noautostrip    \\(.*%{_kernelsrcdir}/.*\\|.*/vmlinux.*\\)
293 %define         _noautochrpath  .*%{_kernelsrcdir}/.*
294 %define         _enable_debug_packages  0
295
296 %define         initrd_dir      /boot
297
298 %define         topdir          %{_builddir}/%{name}-%{version}
299 %define         srcdir          %{topdir}/linux-%{basever}
300 %define         objdir          %{topdir}/%{targetobj}
301 %define         targetobj       %{_target_base_arch}-gcc-%(%{__cc} -dumpversion)
302
303 %define         _kernelsrcdir   /usr/src/linux%{versuffix}%{_alt_kernel}-%{version}
304
305 %if "%{_target_base_arch}" != "%{_host_base_arch}"
306         %define CrossOpts ARCH=%{_target_base_arch} CROSS_COMPILE=%{_target_cpu}-pld-linux-
307         %define DepMod /bin/true
308
309         %if "%{_host_base_arch}" == "sparc" && "%{_target_base_arch}" == "sparc64"
310         %define CrossOpts ARCH=%{_target_base_arch} CC="%{__cc}"
311         %define DepMod /sbin/depmod
312         %endif
313
314         %if "%{_host_base_arch}" == "sparc64" && "%{_target_base_arch}" == "sparc"
315         %define CrossOpts ARCH=%{_target_base_arch} CC="%{__cc}"
316         %define DepMod /sbin/depmod
317         %endif
318
319         %if "%{_host_base_arch}" == "x86_64" && "%{_target_base_arch}" == "i386"
320         %define CrossOpts ARCH=%{_target_base_arch} CC="%{__cc}"
321         %define DepMod /sbin/depmod
322         %endif
323
324         %if "%{_target_base_arch}" == "ppc" || "%{_target_base_arch}" == "ppc64"
325         %define CrossOpts ARCH=powerpc CROSS_COMPILE=%{_target_cpu}-pld-linux-
326         %endif
327 %else
328         %ifarch ppc ppc64
329         %define CrossOpts ARCH=powerpc CC="%{__cc}"
330         %else
331         %ifarch aarch64
332         %define CrossOpts ARCH=arm64 CC="%{__cc}"
333         %else
334         %define CrossOpts ARCH=%{_target_base_arch} CC="%{__cc}"
335         %endif
336         %endif
337         %define DepMod /sbin/depmod
338 %endif
339 # use 64-bit offsets for fixdeps to work with 64-bit inodes
340 %define MakeOpts %{CrossOpts} HOSTCC="%{__cc} -D_FILE_OFFSET_BITS=64"
341
342 %define __features \
343 %{?with_fbcondecor:Fbsplash/fbcondecor - enabled }\
344 %{?with_nfsroot:Root on NFS - enabled}\
345 %{?with_rt:CONFIG_PREEMPT_RT - enabled}\
346
347 %define Features %(echo "%{__features}" | sed '/^$/d')
348
349 %description
350 This package contains the Linux kernel that is used to boot and run
351 your system. It contains few device drivers for specific hardware.
352 Most hardware is instead supported by modules loaded after booting.
353
354 %{Features}
355
356 %description -l de.UTF-8
357 Das Kernel-Paket enthält den Linux-Kernel (vmlinuz), den Kern des
358 Linux-Betriebssystems. Der Kernel ist für grundliegende
359 Systemfunktionen verantwortlich: Speicherreservierung,
360 Prozeß-Management, Geräte Ein- und Ausgaben, usw.
361
362 %{Features}
363
364 %description -l fr.UTF-8
365 Le package kernel contient le kernel linux (vmlinuz), la partie
366 centrale d'un système d'exploitation Linux. Le noyau traite les
367 fonctions basiques d'un système d'exploitation: allocation mémoire,
368 allocation de process, entrée/sortie de peripheriques, etc.
369
370 %{Features}
371
372 %description -l pl.UTF-8
373 Pakiet zawiera jÄ…dro Linuksa niezbÄ™dne do prawidÅ‚owego dziaÅ‚ania
374 Twojego komputera. Zawiera w sobie sterowniki do sprzÄ™tu znajdujÄ…cego
375 siÄ™ w komputerze, takiego jak sterowniki dysków itp.
376
377 %{Features}
378
379 %package vmlinux
380 Summary:        vmlinux - uncompressed kernel image
381 Summary(de.UTF-8):      vmlinux - dekompressiertes Kernel Bild
382 Summary(pl.UTF-8):      vmlinux - rozpakowany obraz jÄ…dra
383 Group:          Base/Kernel
384 Obsoletes:      kernel-smp-vmlinux < 3:2.6.21
385
386 %description vmlinux
387 vmlinux - uncompressed kernel image.
388
389 %description vmlinux -l de.UTF-8
390 vmlinux - dekompressiertes Kernel Bild.
391
392 %description vmlinux -l pl.UTF-8
393 vmlinux - rozpakowany obraz jÄ…dra.
394
395 %package drm
396 Summary:        DRM kernel modules
397 Summary(de.UTF-8):      DRM Kernel Treiber
398 Summary(pl.UTF-8):      Sterowniki DRM
399 Group:          Base/Kernel
400 Requires(postun):       %{name} = %{epoch}:%{version}-%{release}
401 Requires:       %{name} = %{epoch}:%{version}-%{release}
402 Provides:       kernel(vboxvideo) = %{kernel_release}
403 Obsoletes:      kernel-smp-drm < 3:2.6.21
404 AutoReqProv:    no
405
406 %description drm
407 DRM kernel modules.
408
409 %description drm -l de.UTF-8
410 DRM Kernel Treiber.
411
412 %description drm -l pl.UTF-8
413 Sterowniki DRM.
414
415 %package sound-alsa
416 Summary:        ALSA kernel modules
417 Summary(de.UTF-8):      ALSA Kernel Module
418 Summary(pl.UTF-8):      Sterowniki dźwiÄ™ku ALSA
419 Group:          Base/Kernel
420 Requires(postun):       %{name} = %{epoch}:%{version}-%{release}
421 Requires:       %{name} = %{epoch}:%{version}-%{release}
422 Obsoletes:      kernel-smp-sound-alsa < 3:2.6.21
423 AutoReqProv:    no
424
425 %description sound-alsa
426 ALSA (Advanced Linux Sound Architecture) sound drivers.
427
428 %description sound-alsa -l de.UTF-8
429 ALSA (Advanced Linux Sound Architecture) Sound-Treiber.
430
431 %description sound-alsa -l pl.UTF-8
432 Sterowniki dźwiÄ™ku ALSA (Advanced Linux Sound Architecture).
433
434 %package headers
435 Summary:        Header files for the Linux kernel
436 Summary(de.UTF-8):      Header Dateien für den Linux-Kernel
437 Summary(pl.UTF-8):      Pliki nagłówkowe jÄ…dra Linuksa
438 Group:          Development/Building
439 Provides:       %{name}-headers(netfilter) = 20070806
440 AutoReqProv:    no
441
442 %description headers
443 These are the C header files for the Linux kernel, which define
444 structures and constants that are needed when rebuilding the kernel or
445 building kernel modules.
446
447 %description headers -l de.UTF-8
448 Dies sind die C Header Dateien für den Linux-Kernel, die definierte
449 Strukturen und Konstante beinhalten, die beim rekompilieren des
450 Kernels oder bei Kernel Modul kompilationen gebraucht werden.
451
452 %description headers -l pl.UTF-8
453 Pakiet zawiera pliki nagłówkowe jÄ…dra, niezbÄ™dne do rekompilacji jÄ…dra
454 oraz budowania modułów jÄ…dra.
455
456 %package module-build
457 Summary:        Development files for building kernel modules
458 Summary(de.UTF-8):      Development Dateien die beim Kernel Modul kompilationen gebraucht werden
459 Summary(pl.UTF-8):      Pliki sÅ‚użące do budowania modułów jÄ…dra
460 Group:          Development/Building
461 Requires:       %{name}-headers = %{epoch}:%{version}-%{release}
462 Requires:       elfutils-devel
463 Requires:       make
464 Conflicts:      rpmbuild(macros) < 2.019
465 AutoReqProv:    no
466
467 %description module-build
468 Development files from kernel source tree needed to build Linux kernel
469 modules from external packages.
470
471 %description module-build -l de.UTF-8
472 Development Dateien des Linux-Kernels die beim kompilieren externer
473 Kernel Module gebraucht werden.
474
475 %description module-build -l pl.UTF-8
476 Pliki ze drzewa ÅºródeÅ‚ jÄ…dra potrzebne do budowania modułów jÄ…dra
477 Linuksa z zewnÄ™trznych pakietów.
478
479 %package source
480 Summary:        Kernel source tree
481 Summary(de.UTF-8):      Der Kernel Quelltext
482 Summary(pl.UTF-8):      Kod ÅºródÅ‚owy jÄ…dra Linuksa
483 Group:          Development/Building
484 Requires:       %{name}-module-build = %{epoch}:%{version}-%{release}
485 AutoReqProv:    no
486 BuildArch:      noarch
487
488 %description source
489 This is the source code for the Linux kernel. You can build a custom
490 kernel that is better tuned to your particular hardware.
491
492 %description source -l de.UTF-8
493 Das Kernel-Source-Paket enthält den source code (C/Assembler-Code) des
494 Linux-Kernels. Die Source-Dateien werden gebraucht, um viele
495 C-Programme zu kompilieren, da sie auf Konstanten zurückgreifen, die
496 im Kernel-Source definiert sind. Die Source-Dateien können auch
497 benutzt werden, um einen Kernel zu kompilieren, der besser auf Ihre
498 Hardware ausgerichtet ist.
499
500 %description source -l fr.UTF-8
501 Le package pour le kernel-source contient le code source pour le noyau
502 linux. Ces sources sont nécessaires pour compiler la plupart des
503 programmes C, car il dépend de constantes définies dans le code
504 source. Les sources peuvent Ãªtre aussi utilisée pour compiler un noyau
505 personnalisé pour avoir de meilleures performances sur des matériels
506 particuliers.
507
508 %description source -l pl.UTF-8
509 Pakiet zawiera kod ÅºródÅ‚owy jÄ…dra systemu.
510
511 %package doc
512 Summary:        Kernel documentation
513 Summary(de.UTF-8):      Kernel Dokumentation
514 Summary(pl.UTF-8):      Dokumentacja do jÄ…dra Linuksa
515 Group:          Documentation
516 AutoReqProv:    no
517 BuildArch:      noarch
518
519 %description doc
520 This is the documentation for the Linux kernel, as found in
521 /usr/src/linux/Documentation directory.
522
523 %description doc -l de.UTF-8
524 Dies ist die Kernel Dokumentation wie sie im 'Documentation'
525 Verzeichniss vorgefunden werden kann.
526
527 %description doc -l pl.UTF-8
528 Pakiet zawiera dokumentacjÄ™ do jÄ…dra Linuksa pochodzÄ…cÄ… z katalogu
529 /usr/src/linux/Documentation.
530
531 %prep
532 %setup -qc
533 ln -s %{SOURCE7} kernel-module-build.pl
534 ln -s %{SOURCE10} Makefile
535 cd linux-%{basever}
536
537 %if "%{postver}" != ".0"
538 %patch0 -p1
539 %endif
540
541 %if %{without vanilla}
542 %patch2 -p1
543
544 %if %{with fbcondecor}
545 %patch3 -p1
546 %endif
547 %patch6 -p1
548
549 ## netfilter
550 #
551
552 # kernel-pom-ng-IPV4OPTSSTRIP.patch
553 %patch10 -p1
554
555 ##
556 # end of netfilter
557
558 %patch55 -p1
559 %patch56 -p1
560
561 # kernel-rndis_host-wm5.patch
562 %patch59 -p1
563
564 %if %{with aufs}
565 # aufs
566 %patch145 -p1
567 %patch147 -p1
568 %endif
569
570 %if %{with rescuecd}
571 %patch7000 -p1
572 %endif
573
574 %ifarch %{arm} aarch64
575 %patch8000 -p1
576 %patch8001 -p1
577 %patch8002 -p1
578 %patch8004 -p1
579 %patch8005 -p1
580 %endif
581
582 %if %{with rt}
583 %patch500 -p1
584 rm -f localversion-rt
585 %endif
586
587 %patch250 -p1
588
589 %endif # vanilla
590
591 # Small fixes:
592 %patch2000 -p1
593 %patch2001 -p1
594
595 chmod 755 tools/objtool/sync-check.sh
596
597 # Fix EXTRAVERSION in main Makefile
598 sed -i 's#EXTRAVERSION =.*#EXTRAVERSION = %{?alt_kernel:.%{alt_kernel}}#g' Makefile
599
600 # cleanup backups after patching
601 find '(' -name '*~' -o -name '*.orig' -o -name '.gitignore' ')' -print0 | xargs -0 -r -l512 rm -f
602
603 find -name '*.py' -print0 | \
604         xargs -0 %{__sed} -i -e '1s,/usr/bin/python$,%{__python},' \
605                              -e '1s,/usr/bin/env python$,%{__python},' \
606                              -e '1s,/usr/bin/env python3$,%{__python3},'
607
608 %{__sed} -i -e '1s,/usr/bin/python$,%{__python},' \
609             -e '1s,/usr/bin/env python$,%{__python},' \
610             -e '1s,/usr/bin/env python3$,%{__python3},' \
611         scripts/bloat-o-meter \
612         scripts/diffconfig \
613         scripts/dtc/dt-extract-compatibles \
614         scripts/jobserver-exec \
615         scripts/show_delta \
616         tools/hv/vmbus_testing \
617         tools/kvm/kvm_stat/kvm_stat \
618         tools/testing/selftests/exec/binfmt_script.py
619
620 find -name '*.pl' -print0 | \
621         xargs -0 %{__sed} -i -e '1s,/usr/bin/env perl,%{__perl},' \
622
623 %{__sed} -i -e '1s,/usr/bin/env perl,%{__perl},' \
624         scripts/dtc/dt_to_config \
625         scripts/cleanfile \
626         scripts/cleanpatch \
627         scripts/documentation-file-ref-check \
628         scripts/get_dvb_firmware \
629         scripts/kernel-doc \
630         scripts/sphinx-pre-install \
631         scripts/stackdelta
632
633 %{__sed} -i -e '1s,/usr/bin/env bash,%{__bash},' \
634         tools/testing/selftests/powerpc/security/mitigation-patching.sh \
635         scripts/config \
636         scripts/coccicheck
637
638 %build
639 install -d %{objdir}
640 cat > %{targetobj}.mk <<'EOF'
641 # generated by %{name}.spec
642 KERNELSRC       := %{srcdir}
643 KERNELOUTPUT    := %{objdir}
644
645 SRCARCH         := %{target_arch_dir}
646 ARCH            := %{_target_base_arch}
647 Q               := %{!?with_verbose:@}
648 MAKE_OPTS       := %{MakeOpts}
649 DEFCONFIG       := %{defconfig}
650 EOF
651
652 RescueConfig() {
653         set -x
654                 # CONFIG_SOUND is not set
655                 # CONFIG_AUDIT is not set
656                 # CONFIG_TR is not set
657                 # CONFIG_BT is not set
658                 # CONFIG_VIDEO_DEV is not set
659                 # CONFIG_DVB_CORE is not set
660                 # CONFIG_HAMRADIO is not set
661                 # CONFIG_ARCNET is not set
662                 # CONFIG_DRM is not set
663                 # CONFIG_WATCHDOG is not set
664                 # CONFIG_INPUT_JOYSTICK is not set
665                 # CONFIG_DEBUG_KERNEL is not set
666                 # CONFIG_ISDN is not set
667                 # CONFIG_AGP is not set
668                 # CONFIG_SECURITY is not set
669                 # CONFIG_PARIDE is not set
670                 # CONFIG_CPU_FREQ is not set
671                 # CONFIG_GAMEPORT is not set
672                 # CONFIG_KVM is not set
673                 # CONFIG_PHONE is not set
674                 # CONFIG_STRICT_DEVMEM is not set
675                 # CONFIG_IMA is not set
676                 # CONFIG_MEDIA_SUPPORT is not set
677                 # CONFIG_UWB is not set
678                 # CONFIG_PWM is not set
679                 # CONFIG_COMEDI_NI_LABPC_ISA is not set
680                 # CONFIG_FB_SYS_FILLRECT is not set
681                 # CONFIG_FB_SYS_COPYAREA is not set
682                 # CONFIG_FB_SYS_IMAGEBLIT is not set
683                 # CONFIG_FB_SYS_FOPS is not set
684                 # CONFIG_FB_HECUBA is not set
685                 # CONFIG_FB_SVGALIB is not set
686                 # CONFIG_FB_CIRRUS is not set
687                 # CONFIG_FB_PM2 is not set
688                 # CONFIG_FB_CYBER2000 is not set
689                 # CONFIG_FB_ARC is not set
690                 # CONFIG_FB_ASILIANT is not set
691                 # CONFIG_FB_IMSTT is not set
692                 # CONFIG_FB_VGA16 is not set
693                 # CONFIG_FB_UVESA is not set
694                 # CONFIG_FB_N411 is not set
695                 # CONFIG_FB_HGA is not set
696                 # CONFIG_FB_S1D13XXX is not set
697                 # CONFIG_FB_NVIDIA is not set
698                 # CONFIG_FB_RIVA is not set
699                 # CONFIG_FB_I740 is not set
700                 # CONFIG_FB_LE80578 is not set
701                 # CONFIG_FB_CARILLO_RANCH is not set
702                 # CONFIG_FB_MATROX is not set
703                 # CONFIG_FB_RADEON is not set
704                 # CONFIG_FB_ATY128 is not set
705                 # CONFIG_FB_ATY is not set
706                 # CONFIG_FB_S3 is not set
707                 # CONFIG_FB_SAVAGE is not set
708                 # CONFIG_FB_SIS is not set
709                 # CONFIG_FB_VIA is not set
710                 # CONFIG_FB_NEOMAGIC is not set
711                 # CONFIG_FB_KYRO is not set
712                 # CONFIG_FB_3DFX is not set
713                 # CONFIG_FB_VOODOO1 is not set
714                 # CONFIG_FB_VT8623 is not set
715                 # CONFIG_FB_TRIDENT is not set
716                 # CONFIG_FB_ARK is not set
717                 # CONFIG_FB_PM3 is not set
718                 # CONFIG_FB_CARMINE is not set
719                 # CONFIG_FB_GEODE is not set
720                 # CONFIG_FB_TMIO is not set
721                 # CONFIG_FB_SM501 is not set
722                 # CONFIG_FB_SMSCUFX is not set
723                 # CONFIG_FB_UDL is not set
724                 # CONFIG_FB_GOLDFISH is not set
725                 # CONFIG_XEN_FBDEV_FRONTEND is not set
726                 # CONFIG_FB_METRONOME is not set
727                 # CONFIG_FB_MB862XX is not set
728                 # CONFIG_FB_BROADSHEET is not set
729                 # CONFIG_FB_AUO_K190X is not set
730                 # CONFIG_FB_AUO_K1900 is not set
731                 # CONFIG_FB_AUO_K1901 is not set
732                 # CONFIG_FB_HYPERV is not set
733                 CONFIG_AUFS=y
734                 CONFIG_AUFS_FS=y
735                 CONFIG_AUFS_BR_RAMFS=y
736                 CONFIG_AUFS_RDU=y
737                 CONFIG_BLK_DEV_LOOP=y
738                 CONFIG_ISO9660_FS=y
739                 CONFIG_NLS_UTF8=y
740                 CONFIG_SQUASHFS=y
741                 CONFIG_FB=y
742                 CONFIG_FB_EFI=y
743                 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
744 EOCONFIG
745
746         return 0
747 }
748
749 BuildConfig() {
750         %{?debug:set -x}
751         set -e
752
753         Config="kernel-%{target_arch_dir}.config"
754         echo >&2 "Building config file for %{_target_cpu} using $Config et al."
755
756         # prepare local and important options
757         cat <<-EOCONFIG > important.config
758                 LOCALVERSION="-%{localversion}"
759
760 %if 0%{?debug:1}
761                 CONFIG_DEBUG_PREEMPT=y
762                 CONFIG_RT_DEADLOCK_DETECT=y
763 %else
764                 CONFIG_DEBUG_PREEMPT=n
765 %endif
766
767 %if %{without ipv6}
768                 CONFIG_IPV6=n
769 %endif
770
771 %ifarch i686 athlon pentium3 pentium4
772         %if %{with pae}
773                 CONFIG_HIGHMEM4G=n
774                 CONFIG_HIGHMEM64G=y
775                 CONFIG_X86_PAE=y
776                 CONFIG_NUMA=n
777         %else
778                 CONFIG_X86_PAE=n
779         %endif
780 %endif
781
782 %if %{with fbcondecor}
783                 CONFIG_FB_S3=n
784                 CONFIG_FB_VT8623=n
785                 CONFIG_FB_ARK=n
786                 CONFIG_FB_TILEBLITTING=n
787                 CONFIG_FB_CON_DECOR=y
788 %endif
789
790 %if %{with nfsroot}
791                 CONFIG_NFS_FS=y
792                 CONFIG_ROOT_NFS=y
793 %endif
794
795 %ifarch x32
796                 CONFIG_BPF_PRELOAD=n
797 %endif
798 %if %{_ver_ge %(rpm -q --qf='%%{VERSION}' gcc) 12}
799                 CONFIG_INIT_STACK_ALL_ZERO=y
800                 CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL=n
801 %else
802                 CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL=y
803 %endif
804 EOCONFIG
805
806 %if %{with rescuecd}
807         RescueConfig rescue.config
808 %endif
809         # prepare kernel-style config file from multiple config files
810         %{__awk} -v arch="all %{target_arch_dir} %{_target_base_arch} %{_target_cpu}" -f %{SOURCE6} \
811 %if %{with myown}
812                 $RPM_SOURCE_DIR/kernel-%{alt_kernel}.config \
813 %endif
814                 important.config \
815 %if %{without vanilla}
816 %if %{with rescuecd}
817                 %{SOURCE58} \
818                 rescue.config \
819 %endif
820                 \
821 %if %{with rt}
822                 %{SOURCE44} \
823 %endif
824                 %{SOURCE41} %{?0:patches} \
825 %endif
826                 %{SOURCE20} \
827                 $RPM_SOURCE_DIR/$Config
828 }
829
830 cd %{objdir}
831 install -d arch/%{target_arch_dir}
832 BuildConfig > %{defconfig}
833 ln -sf %{defconfig} .config
834 cd -
835
836 %{__make} \
837         TARGETOBJ=%{targetobj} \
838         %{?with_verbose:V=1} \
839         oldconfig
840
841 %{__awk} %{?debug:-v dieOnError=1} -v infile=%{objdir}/%{defconfig} -f %{SOURCE8} %{objdir}/.config
842
843 %{__make} \
844         TARGETOBJ=%{targetobj} \
845         %{?with_verbose:V=1} \
846         scripts
847
848 # build kernel
849 export DTC_FLAGS=-@
850 ICECC_EXTRAFILES="${ICECC_EXTRAFILES:+$ICECC_EXTRAFILES:}$(test -d %{objdir}/scripts/gcc-plugins && find %{objdir}/scripts/gcc-plugins -name '*.so' | paste -s -d :)"
851 %{__make} \
852         TARGETOBJ=%{targetobj} \
853         %{?with_verbose:V=1} \
854         all
855
856 %install
857 rm -rf $RPM_BUILD_ROOT
858 %{__make} %{MakeOpts} %{!?with_verbose:-s} modules_install \
859         -C %{objdir} \
860         %{?with_verbose:V=1} \
861         DEPMOD=%{DepMod} \
862         INSTALL_MOD_PATH=$RPM_BUILD_ROOT \
863         INSTALL_MOD_STRIP="--strip-debug --remove-section=.comment --remove-section=.note.GNU-stack" \
864         KERNELRELEASE=%{kernel_release}
865
866 %ifarch %{arm} aarch64
867 export DTC_FLAGS=-@
868 %{__make} %{MakeOpts} %{!?with_verbose:-s} dtbs_install \
869         -C %{objdir} \
870         %{?with_verbose:V=1} \
871         INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/boot/dtb-%{kernel_release}
872 %endif
873
874 install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/misc
875
876 # create directories which may be missing, to simplyfy %files
877 install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/kernel/{arch,sound,mm}
878
879 # rpm obeys filelinkto checks for ghosted symlinks, convert to files
880 rm -f $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/{build,source}
881 touch $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/{build,source}
882
883 # no point embed content for %ghost files. empty them
884 for a in \
885         dep{,.bin} \
886         alias{,.bin} \
887         devname \
888         softdep \
889         symbols{,.bin} \
890 ; do
891         test -f $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.$a
892         > $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.$a
893 done
894
895 # /boot
896 install -d $RPM_BUILD_ROOT/boot
897 cp -a %{objdir}/System.map $RPM_BUILD_ROOT/boot/System.map-%{kernel_release}
898 cp -aL %{objdir}/.config $RPM_BUILD_ROOT/boot/config-%{kernel_release}
899 %ifarch %{ix86} %{x8664} x32
900         cp -a %{objdir}/arch/%{target_arch_dir}/boot/bzImage $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
901         install -p %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinux-%{kernel_release}
902 %endif
903 %ifarch ppc ppc64
904         install -p %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
905         install -p %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinux-%{kernel_release}
906 %endif
907 %ifarch alpha sparc sparc64
908         %{__gzip} -cfv %{objdir}/vmlinux > %{objdir}/vmlinuz
909         cp -a %{objdir}/vmlinuz $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
910         install -p %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
911         %ifarch sparc
912                 elftoaout %{objdir}/arch/sparc/boot/image -o %{objdir}/vmlinux.aout
913                 install -p %{objdir}/vmlinux.aout $RPM_BUILD_ROOT/boot/vmlinux.aout-%{kernel_release}
914         %endif
915         %ifarch sparc64
916                 elftoaout %{objdir}/arch/sparc64/boot/image -o %{objdir}/vmlinux.aout
917                 install -p %{objdir}/vmlinux.aout $RPM_BUILD_ROOT/boot/vmlinux.aout-%{kernel_release}
918         %endif
919 %endif
920 %ifarch %{arm}
921         install -p %{objdir}/arch/arm/boot/zImage $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
922 %endif
923 %ifarch aarch64
924         cp -a %{objdir}/arch/%{target_arch_dir}/boot/Image.gz $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
925 %endif
926
927 # ghosted initrd
928 touch $RPM_BUILD_ROOT%{initrd_dir}/initrd-%{kernel_release}.gz
929 touch $RPM_BUILD_ROOT%{initrd_dir}/initramfs-%{kernel_release}.img
930
931 %if "%{_target_base_arch}" != "%{_host_base_arch}"
932 touch $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.dep
933 %endif
934
935 # /etc/depmod.d /etc/modrobe.d
936 install -d $RPM_BUILD_ROOT%{_sysconfdir}/{depmod.d,modprobe.d}/%{kernel_release}
937
938 install -d $RPM_BUILD_ROOT/etc/sysconfig
939 install %{SOURCE1} $RPM_BUILD_ROOT/etc/sysconfig/kernel
940
941 # /usr/src/linux
942 install -d $RPM_BUILD_ROOT%{_kernelsrcdir}
943
944 # test if we can hardlink -- %{_builddir} and $RPM_BUILD_ROOT on same partition
945 if cp -al %{srcdir}/COPYING $RPM_BUILD_ROOT/COPYING 2>/dev/null; then
946         l=l
947         rm -f $RPM_BUILD_ROOT/COPYING
948 fi
949
950 cp -a$l %{srcdir}/* $RPM_BUILD_ROOT%{_kernelsrcdir}
951 cp -a %{objdir}/Module.symvers $RPM_BUILD_ROOT%{_kernelsrcdir}
952 cp -aL %{objdir}/.config $RPM_BUILD_ROOT%{_kernelsrcdir}
953 cp -a %{objdir}/include $RPM_BUILD_ROOT%{_kernelsrcdir}
954 # copy arch/x86/include/generated
955 for dir in $(cd %{objdir} && find arch -name generated -type d); do
956         cp -a %{objdir}/$dir $RPM_BUILD_ROOT%{_kernelsrcdir}/$dir
957         find $RPM_BUILD_ROOT%{_kernelsrcdir}/$dir -name '.*.cmd' -exec rm "{}" ";"
958 done
959
960 %ifarch %{x8664} x32
961 # Needed for CONFIG_STACK_VALIDATION / ORC_UNWINDER enabled builds
962 install -d $RPM_BUILD_ROOT%{_kernelsrcdir}/tools/objtool
963 cp -a %{objdir}/tools/objtool/fixdep $RPM_BUILD_ROOT%{_kernelsrcdir}/tools/objtool
964 cp -a %{objdir}/tools/objtool/objtool $RPM_BUILD_ROOT%{_kernelsrcdir}/tools/objtool
965 %endif
966
967 # version.h location changed in 3.7, but a lot of external modules don't know about it
968 # add a compatibility symlink
969 ln -s ../generated/uapi/linux/version.h $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/version.h
970
971 # disable this here, causes a lot of build-time problems and our rpm-build disables it anyway
972 %{__sed} -i -e 's|\(CONSTIFY_PLUGIN.*:=.*\)|# \1|' $RPM_BUILD_ROOT%{_kernelsrcdir}/Makefile
973
974 # collect module-build files and directories
975 # Usage: kernel-module-build.pl $rpmdir $fileoutdir
976 fileoutdir=$(pwd)
977 cd $RPM_BUILD_ROOT%{_kernelsrcdir}
978 %{__perl} %{topdir}/kernel-module-build.pl %{_kernelsrcdir} $fileoutdir
979 cd -
980
981 for f in `find %{objdir}/scripts -type f -print | grep -v "/\.\|\.o$"` ; do
982         ff=${f##%{objdir}/}
983         if [ -x "$f" ]; then
984                 echo "%attr(755,root,root) %{_kernelsrcdir}/$ff" >>files.mb_include_modulebuild_and_dirs
985         else
986                 echo "%{_kernelsrcdir}/$ff" >>files.mb_include_modulebuild_and_dirs
987         fi
988         echo "%exclude %{_kernelsrcdir}/$ff" >>files.source_exclude_modulebuild_and_dirs
989         cp -a "$f" "$RPM_BUILD_ROOT%{_kernelsrcdir}/$ff"
990 done
991
992 %if %{with doc}
993 # move to %{_docdir} so we wouldn't depend on any kernel package for dirs
994 install -d $RPM_BUILD_ROOT%{_docdir}
995 mv $RPM_BUILD_ROOT{%{_kernelsrcdir}/Documentation,%{_docdir}/%{name}-%{version}}
996
997 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/dontdiff
998 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/Makefile
999 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/*/*/Makefile
1000 %else
1001 %{__rm} -r $RPM_BUILD_ROOT%{_kernelsrcdir}/Documentation
1002 %endif
1003
1004 %clean
1005 rm -rf $RPM_BUILD_ROOT
1006
1007 %preun
1008 if [ -x /sbin/new-kernel-pkg ]; then
1009         /sbin/new-kernel-pkg --remove %{kernel_release}
1010 fi
1011
1012 %post
1013 [ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
1014 if [[ "$CREATE_SYMLINKS" != [Nn][Oo] ]]; then
1015         mv -f /boot/vmlinuz{,.old} 2> /dev/null
1016         mv -f /boot/System.map{,.old} 2> /dev/null
1017         ln -sf vmlinuz-%{kernel_release} /boot/vmlinuz
1018         ln -sf System.map-%{kernel_release} /boot/System.map
1019 %ifarch %{arm} aarch64
1020         test -L /boot/dtb.old && rm /boot/dtb.old
1021         test ! -e /boot/dtb.old && mv -f /boot/dtb{,.old} 2> /dev/null
1022         ln -sf dtb-%{kernel_release} /boot/dtb
1023 %endif
1024 %if 0%{?alt_kernel:1}
1025         mv -f /boot/vmlinuz%{_alt_kernel}{,.old} 2> /dev/null
1026         mv -f /boot/System%{_alt_kernel}.map{,.old} 2> /dev/null
1027         ln -sf vmlinuz-%{kernel_release} /boot/vmlinuz%{_alt_kernel}
1028         ln -sf System.map-%{kernel_release} /boot/System.map%{_alt_kernel}
1029 %ifarch %{arm} aarch64
1030         test -L /boot/dtb%{_alt_kernel}.old && rm /boot/dtb%{_alt_kernel}.old
1031         test ! -e /boot/dtb%{_alt_kernel}.old && mv -f /boot/dtb%{_alt_kernel}{,.old} 2> /dev/null
1032         ln -sf dtb-%{kernel_release} /boot/dtb%{_alt_kernel}
1033 %endif
1034 %endif
1035 fi
1036
1037 %depmod %{kernel_release}
1038
1039 %posttrans
1040 # use posttrans to generate initrd after all dependant module packages (-drm, etc) are installed
1041 [ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
1042 initrd_file=""
1043 if [[ "$USE_GENINITRD" != [Nn][Oo] ]]; then
1044         /sbin/geninitrd -f --initrdfs=initramfs %{initrd_dir}/initrd-%{kernel_release}.gz %{kernel_release} || :
1045         initrd_file="initrd-%{kernel_release}.gz"
1046 fi
1047
1048 # if dracut is present then generate full-featured initramfs
1049 if [[ "$USE_DRACUT" != [Nn][Oo] ]] && [ -x /sbin/dracut ]; then
1050         /sbin/dracut --force --quiet /boot/initramfs-%{kernel_release}.img %{kernel_release}
1051         [ -n "$initrd_file" ] || initrd_file="initramfs-%{kernel_release}.img"
1052 fi
1053
1054 if [[ "$CREATE_SYMLINKS" != [Nn][Oo] ]]; then
1055         mv -f %{initrd_dir}/initrd{,.old} 2> /dev/null
1056         if [ -n "$initrd_file" ] ; then
1057                 ln -sf "$initrd_file" %{initrd_dir}/initrd
1058         fi
1059 %if 0%{?alt_kernel:1}
1060         mv -f %{initrd_dir}/initrd%{_alt_kernel}{,.old} 2> /dev/null
1061         if [ -n "$initrd_file" ] ; then
1062                 ln -sf "$initrd_file" %{initrd_dir}/initrd%{_alt_kernel}
1063         fi
1064 %endif
1065 fi
1066
1067 # update boot loaders when old package files are gone from filesystem
1068 if [ -x /sbin/update-grub -a -f /etc/sysconfig/grub ]; then
1069         if [ "$(. /etc/sysconfig/grub; echo ${UPDATE_GRUB:-no})" = "yes" ]; then
1070                 /sbin/update-grub >/dev/null
1071         fi
1072 fi
1073 if [ -x /sbin/new-kernel-pkg ]; then
1074         /sbin/new-kernel-pkg --initrdfile=%{initrd_dir}/$initrd_file --install %{kernel_release} --banner "PLD Linux (%{pld_release})%{?alt_kernel: / %{alt_kernel}}"
1075 fi
1076 if [ -x /sbin/rc-boot ]; then
1077         /sbin/rc-boot 1>&2 || :
1078 fi
1079 if [ -x /sbin/efi-boot-update ]; then
1080         /sbin/efi-boot-update --auto || :
1081 fi
1082
1083 %post vmlinux
1084 [ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
1085 if [[ "$CREATE_SYMLINKS" != [Nn][Oo] ]]; then
1086         mv -f /boot/vmlinux{,.old} 2> /dev/null
1087         ln -sf vmlinux-%{kernel_release} /boot/vmlinux
1088 %if 0%{?alt_kernel:1}
1089         mv -f /boot/vmlinux-%{alt_kernel}{,.old} 2> /dev/null
1090         ln -sf vmlinux-%{kernel_release} /boot/vmlinux-%{alt_kernel}
1091 %endif
1092 fi
1093
1094 %post drm
1095 %depmod %{kernel_release}
1096
1097 %postun drm
1098 %depmod %{kernel_release}
1099
1100 %post sound-alsa
1101 %depmod %{kernel_release}
1102
1103 %postun sound-alsa
1104 %depmod %{kernel_release}
1105
1106 %post headers
1107 ln -snf %{basename:%{_kernelsrcdir}} %{_prefix}/src/linux%{versuffix}%{_alt_kernel}
1108
1109 %postun headers
1110 if [ "$1" = "0" ]; then
1111         if [ -L %{_prefix}/src/linux%{versuffix}%{_alt_kernel} ]; then
1112                 if [ "$(readlink %{_prefix}/src/linux%{versuffix}%{_alt_kernel})" = "linux%{versuffix}%{_alt_kernel}-%{version}" ]; then
1113                         rm -f %{_prefix}/src/linux%{versuffix}%{_alt_kernel}
1114                 fi
1115         fi
1116 fi
1117
1118 %triggerin module-build -- %{name} = %{epoch}:%{version}-%{release}
1119 ln -sfn %{_kernelsrcdir} /lib/modules/%{kernel_release}/build
1120 ln -sfn %{_kernelsrcdir} /lib/modules/%{kernel_release}/source
1121
1122 %triggerun module-build -- %{name} = %{epoch}:%{version}-%{release}
1123 if [ "$1" = 0 ]; then
1124         rm -f /lib/modules/%{kernel_release}/{build,source}
1125 fi
1126
1127 %files
1128 %defattr(644,root,root,755)
1129 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/kernel
1130 %ifarch sparc sparc64
1131 /boot/vmlinux.aout-%{kernel_release}
1132 %endif
1133 %ifarch %{arm} aarch64
1134 /boot/dtb-%{kernel_release}
1135 %endif
1136 /boot/vmlinuz-%{kernel_release}
1137 /boot/System.map-%{kernel_release}
1138 /boot/config-%{kernel_release}
1139 %ghost %{initrd_dir}/initrd-%{kernel_release}.gz
1140 %ghost %{initrd_dir}/initramfs-%{kernel_release}.img
1141
1142 %dir /lib/modules/%{kernel_release}
1143 %dir /lib/modules/%{kernel_release}/kernel
1144 /lib/modules/%{kernel_release}/kernel/arch
1145 /lib/modules/%{kernel_release}/kernel/block
1146 /lib/modules/%{kernel_release}/kernel/crypto
1147 /lib/modules/%{kernel_release}/kernel/drivers
1148 %if %{have_drm}
1149 %exclude /lib/modules/%{kernel_release}/kernel/drivers/gpu
1150 %endif
1151 /lib/modules/%{kernel_release}/kernel/fs
1152 /lib/modules/%{kernel_release}/kernel/kernel
1153 /lib/modules/%{kernel_release}/kernel/lib
1154 /lib/modules/%{kernel_release}/kernel/net
1155 /lib/modules/%{kernel_release}/kernel/mm
1156 %if %{have_sound}
1157 %dir /lib/modules/%{kernel_release}/kernel/sound
1158 /lib/modules/%{kernel_release}/kernel/sound/ac97_bus.ko*
1159 /lib/modules/%{kernel_release}/kernel/sound/sound*.ko*
1160 %ifnarch sparc
1161 %exclude /lib/modules/%{kernel_release}/kernel/drivers/media/pci/cx88/cx88-alsa.ko*
1162 %exclude /lib/modules/%{kernel_release}/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko*
1163 %exclude /lib/modules/%{kernel_release}/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko*
1164 %exclude /lib/modules/%{kernel_release}/kernel/drivers/usb/gadget/legacy/g_midi.ko*
1165 %endif
1166 %ifarch %{arm}
1167 %exclude /lib/modules/%{kernel_release}/kernel/drivers/staging/vc04_services/bcm2835-audio
1168 %endif
1169 %endif
1170 %dir /lib/modules/%{kernel_release}/misc
1171 %if %{with myown}
1172 /lib/modules/%{kernel_release}/kernel/sound
1173 %endif
1174 /lib/modules/%{kernel_release}/kernel/security
1175 %ifarch %{ix86} %{x8664} x32
1176 /lib/modules/%{kernel_release}/kernel/virt
1177 %endif
1178
1179 %dir %{_sysconfdir}/depmod.d/%{kernel_release}
1180 %dir %{_sysconfdir}/modprobe.d/%{kernel_release}
1181
1182 # provided by build
1183 /lib/modules/%{kernel_release}/modules.order
1184 /lib/modules/%{kernel_release}/modules.builtin*
1185
1186 # rest modules.* are ghost (regenerated by post depmod -a invocation)
1187 %ghost /lib/modules/%{kernel_release}/modules.alias
1188 %ghost /lib/modules/%{kernel_release}/modules.alias.bin
1189 %ghost /lib/modules/%{kernel_release}/modules.dep
1190 %ghost /lib/modules/%{kernel_release}/modules.dep.bin
1191 %ghost /lib/modules/%{kernel_release}/modules.devname
1192 %ghost /lib/modules/%{kernel_release}/modules.softdep
1193 %ghost /lib/modules/%{kernel_release}/modules.symbols
1194 %ghost /lib/modules/%{kernel_release}/modules.symbols.bin
1195
1196 # symlinks pointing to kernelsrcdir
1197 %ghost /lib/modules/%{kernel_release}/build
1198 %ghost /lib/modules/%{kernel_release}/source
1199
1200 %ifarch alpha %{ix86} %{x8664} x32 ppc ppc64 sparc sparc64
1201 %files vmlinux
1202 %defattr(644,root,root,755)
1203 /boot/vmlinux-%{kernel_release}
1204 %endif
1205
1206 %if %{have_drm}
1207 %files drm
1208 %defattr(644,root,root,755)
1209 /lib/modules/%{kernel_release}/kernel/drivers/gpu
1210 %endif
1211
1212 %if %{have_sound}
1213 %files sound-alsa
1214 %defattr(644,root,root,755)
1215 /lib/modules/%{kernel_release}/kernel/sound
1216 %exclude %dir /lib/modules/%{kernel_release}/kernel/sound
1217 %exclude /lib/modules/%{kernel_release}/kernel/sound/ac97_bus.ko*
1218 %exclude /lib/modules/%{kernel_release}/kernel/sound/sound*.ko*
1219 %ifnarch sparc
1220 /lib/modules/%{kernel_release}/kernel/drivers/usb/gadget/legacy/g_midi.ko*
1221 /lib/modules/%{kernel_release}/kernel/drivers/media/pci/cx88/cx88-alsa.ko*
1222 /lib/modules/%{kernel_release}/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko*
1223 /lib/modules/%{kernel_release}/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko*
1224 %endif
1225 %ifarch %{arm}
1226 /lib/modules/%{kernel_release}/kernel/drivers/staging/vc04_services/bcm2835-audio
1227 %endif
1228 %endif
1229
1230 %files headers -f files.headers_exclude_kbuild
1231 %defattr(644,root,root,755)
1232 %dir %{_kernelsrcdir}
1233 %{_kernelsrcdir}/include
1234 %dir %{_kernelsrcdir}/arch
1235 %dir %{_kernelsrcdir}/arch/[!K]*
1236 %{_kernelsrcdir}/arch/*/include
1237 %dir %{_kernelsrcdir}/security
1238 %dir %{_kernelsrcdir}/security/selinux
1239 %{_kernelsrcdir}/security/selinux/include
1240 %dir %{_kernelsrcdir}/tools
1241 %{_kernelsrcdir}/tools/include
1242 %dir %{_kernelsrcdir}/usr
1243 %dir %{_kernelsrcdir}/usr/include
1244 %{_kernelsrcdir}/.config
1245 %{_kernelsrcdir}/Module.symvers
1246
1247 %files module-build -f files.mb_include_modulebuild_and_dirs
1248 %defattr(644,root,root,755)
1249 %ifarch ppc ppc64
1250 %{_kernelsrcdir}/arch/powerpc/lib/crtsavres.*
1251 %endif
1252 %exclude %dir %{_kernelsrcdir}/arch/um
1253 %{_kernelsrcdir}/arch/*/kernel/asm-offsets*
1254 %{_kernelsrcdir}/drivers/media/pci/bt8xx/bttv.h
1255 %{_kernelsrcdir}/kernel/bounds.c
1256 %{_kernelsrcdir}/scripts/basic/*.c
1257 %attr(755,root,root) %{_kernelsrcdir}/scripts/kconfig/*.sh
1258 %{_kernelsrcdir}/scripts/kconfig/*.pl
1259 %{_kernelsrcdir}/scripts/kconfig/*.glade
1260 %{_kernelsrcdir}/scripts/kconfig/*.cc
1261 %{_kernelsrcdir}/scripts/kconfig/*.y
1262 %{_kernelsrcdir}/scripts/kconfig/*.l
1263 %{_kernelsrcdir}/scripts/kconfig/[c-k]*.c
1264 %{_kernelsrcdir}/scripts/kconfig/[c-k]*.h
1265 %{_kernelsrcdir}/scripts/kconfig/l*.h
1266 %{_kernelsrcdir}/scripts/kconfig/[m-o]*.c
1267 %{_kernelsrcdir}/scripts/kconfig/[m-o]*.h
1268 %{_kernelsrcdir}/scripts/kconfig/preprocess.c
1269 %{_kernelsrcdir}/scripts/kconfig/[q-u]*.c
1270 %{_kernelsrcdir}/scripts/kconfig/[q-u]*.h
1271 %{_kernelsrcdir}/scripts/kconfig/lxdialog
1272 %{_kernelsrcdir}/scripts/mod/*.c
1273 %{_kernelsrcdir}/scripts/mod/modpost.h
1274 %attr(755,root,root) %{_kernelsrcdir}/scripts/mkcompile_h
1275 %attr(755,root,root) %{_kernelsrcdir}/scripts/setlocalversion
1276 %{_kernelsrcdir}/scripts/subarch.include
1277 %{_kernelsrcdir}/scripts/*.c
1278 %{_kernelsrcdir}/scripts/*.h
1279 %attr(755,root,root) %{_kernelsrcdir}/scripts/*.sh
1280 %{_kernelsrcdir}/scripts/selinux/genheaders/*.c
1281 %{_kernelsrcdir}/scripts/selinux/mdp/*.c
1282 %exclude %dir %{_kernelsrcdir}/security
1283 %exclude %dir %{_kernelsrcdir}/security/selinux
1284 %ifarch %{x8664} x32
1285 %attr(755,root,root) %{_kernelsrcdir}/tools/objtool/fixdep
1286 %attr(755,root,root) %{_kernelsrcdir}/tools/objtool/objtool
1287 %endif
1288
1289 %if %{with doc}
1290 %files doc
1291 %defattr(644,root,root,755)
1292 %dir %{_docdir}/%{name}-%{version}
1293
1294 %{_docdir}/%{name}-%{version}/[!jkz]*
1295 %{_docdir}/%{name}-%{version}/kbuild
1296 %{_docdir}/%{name}-%{version}/kernel-hacking
1297 %endif
1298
1299 %if %{with source}
1300 %files source -f files.source_exclude_modulebuild_and_dirs
1301 %defattr(644,root,root,755)
1302 %{_kernelsrcdir}/arch/*/[!Mik]*
1303 %{_kernelsrcdir}/arch/*/kernel/[!M]*
1304 %{_kernelsrcdir}/arch/m68k/ifpsp060/[!M]*
1305 %{_kernelsrcdir}/arch/m68k/ifpsp060/MISC
1306 %{_kernelsrcdir}/arch/m68k/install.sh
1307 %{_kernelsrcdir}/arch/parisc/install.sh
1308 %{_kernelsrcdir}/arch/x86/ia32/[!M]*
1309 %{_kernelsrcdir}/arch/powerpc/kexec
1310 %{_kernelsrcdir}/arch/powerpc/kvm
1311 %{_kernelsrcdir}/arch/riscv/kvm
1312 %ifarch ppc ppc64
1313 %exclude %{_kernelsrcdir}/arch/powerpc/lib/crtsavres.*
1314 %endif
1315 %{_kernelsrcdir}/arch/arm64/kvm
1316 %{_kernelsrcdir}/arch/loongarch/kvm
1317 %{_kernelsrcdir}/arch/mips/kvm
1318 %{_kernelsrcdir}/arch/s390/kvm
1319 %{_kernelsrcdir}/arch/x86/kvm
1320 %exclude %{_kernelsrcdir}/arch/*/kernel/asm-offsets*
1321 %exclude %{_kernelsrcdir}/drivers/media/pci/bt8xx/bttv.h
1322 %{_kernelsrcdir}/block
1323 %{_kernelsrcdir}/certs
1324 %{_kernelsrcdir}/crypto
1325 %{_kernelsrcdir}/drivers
1326 %{_kernelsrcdir}/fs
1327 %{_kernelsrcdir}/init
1328 %{_kernelsrcdir}/io_uring
1329 %{_kernelsrcdir}/ipc
1330 %{_kernelsrcdir}/kernel
1331 %exclude %{_kernelsrcdir}/kernel/bounds.c
1332 %{_kernelsrcdir}/lib
1333 %{_kernelsrcdir}/mm
1334 %{_kernelsrcdir}/net
1335 %{_kernelsrcdir}/virt
1336 %{_kernelsrcdir}/rust
1337 %{_kernelsrcdir}/samples
1338 %{_kernelsrcdir}/scripts/*
1339 %exclude %{_kernelsrcdir}/scripts/Kbuild.include
1340 %exclude %{_kernelsrcdir}/scripts/Makefile*
1341 %exclude %{_kernelsrcdir}/scripts/basic
1342 %exclude %{_kernelsrcdir}/scripts/kconfig
1343 %exclude %{_kernelsrcdir}/scripts/mkcompile_h
1344 %exclude %{_kernelsrcdir}/scripts/mod
1345 %exclude %{_kernelsrcdir}/scripts/setlocalversion
1346 %exclude %{_kernelsrcdir}/scripts/subarch.include
1347 %exclude %{_kernelsrcdir}/scripts/*.c
1348 %exclude %{_kernelsrcdir}/scripts/*.h
1349 %exclude %{_kernelsrcdir}/scripts/*.sh
1350 %exclude %dir %{_kernelsrcdir}/scripts/selinux
1351 %exclude %{_kernelsrcdir}/scripts/selinux/Makefile
1352 %exclude %dir %{_kernelsrcdir}/scripts/selinux/genheaders
1353 %exclude %{_kernelsrcdir}/scripts/selinux/genheaders/Makefile
1354 %exclude %{_kernelsrcdir}/scripts/selinux/genheaders/*.c
1355 %exclude %dir %{_kernelsrcdir}/scripts/selinux/mdp
1356 %exclude %{_kernelsrcdir}/scripts/selinux/mdp/Makefile
1357 %exclude %{_kernelsrcdir}/scripts/selinux/mdp/*.c
1358 %{_kernelsrcdir}/sound
1359 %{_kernelsrcdir}/security
1360 %exclude %{_kernelsrcdir}/security/selinux/include
1361 %{_kernelsrcdir}/tools/*
1362 %exclude %{_kernelsrcdir}/tools/include
1363 %ifarch %{x8664} x32
1364 %exclude %{_kernelsrcdir}/tools/objtool/fixdep
1365 %exclude %{_kernelsrcdir}/tools/objtool/objtool
1366 %endif
1367 %{_kernelsrcdir}/usr
1368 %{_kernelsrcdir}/COPYING
1369 %{_kernelsrcdir}/CREDITS
1370 %{_kernelsrcdir}/MAINTAINERS
1371 %{_kernelsrcdir}/README
1372 %endif
This page took 2.228946 seconds and 2 git commands to generate.