]> git.pld-linux.org Git - packages/kernel.git/blob - kernel.spec
78c6809b8b0591cc1355fe1a22c12111a87154d9
[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             0.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         %endif
778 %endif
779
780 %if %{with fbcondecor}
781                 CONFIG_FB_S3=n
782                 CONFIG_FB_VT8623=n
783                 CONFIG_FB_ARK=n
784                 CONFIG_FB_TILEBLITTING=n
785                 CONFIG_FB_CON_DECOR=y
786 %endif
787
788 %if %{with nfsroot}
789                 CONFIG_NFS_FS=y
790                 CONFIG_ROOT_NFS=y
791 %endif
792
793 %ifarch x32
794                 CONFIG_BPF_PRELOAD=n
795 %endif
796 %if %{_ver_ge %(rpm -q --qf='%%{VERSION}' gcc) 12}
797                 CONFIG_INIT_STACK_ALL_ZERO=y
798                 CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL=n
799 %else
800                 CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL=y
801 %endif
802 EOCONFIG
803
804 %if %{with rescuecd}
805         RescueConfig rescue.config
806 %endif
807         # prepare kernel-style config file from multiple config files
808         %{__awk} -v arch="all %{target_arch_dir} %{_target_base_arch} %{_target_cpu}" -f %{SOURCE6} \
809 %if %{with myown}
810                 $RPM_SOURCE_DIR/kernel-%{alt_kernel}.config \
811 %endif
812                 important.config \
813 %if %{without vanilla}
814 %if %{with rescuecd}
815                 %{SOURCE58} \
816                 rescue.config \
817 %endif
818                 \
819 %if %{with rt}
820                 %{SOURCE44} \
821 %endif
822                 %{SOURCE41} %{?0:patches} \
823 %endif
824                 %{SOURCE20} \
825                 $RPM_SOURCE_DIR/$Config
826 }
827
828 cd %{objdir}
829 install -d arch/%{target_arch_dir}
830 BuildConfig > %{defconfig}
831 ln -sf %{defconfig} .config
832 cd -
833
834 %{__make} \
835         TARGETOBJ=%{targetobj} \
836         %{?with_verbose:V=1} \
837         oldconfig
838
839 %{__awk} %{?debug:-v dieOnError=1} -v infile=%{objdir}/%{defconfig} -f %{SOURCE8} %{objdir}/.config
840
841 %{__make} \
842         TARGETOBJ=%{targetobj} \
843         %{?with_verbose:V=1} \
844         scripts
845
846 # build kernel
847 export DTC_FLAGS=-@
848 ICECC_EXTRAFILES="${ICECC_EXTRAFILES:+$ICECC_EXTRAFILES:}$(test -d %{objdir}/scripts/gcc-plugins && find %{objdir}/scripts/gcc-plugins -name '*.so' | paste -s -d :)"
849 %{__make} \
850         TARGETOBJ=%{targetobj} \
851         %{?with_verbose:V=1} \
852         all
853
854 %install
855 rm -rf $RPM_BUILD_ROOT
856 %{__make} %{MakeOpts} %{!?with_verbose:-s} modules_install \
857         -C %{objdir} \
858         %{?with_verbose:V=1} \
859         DEPMOD=%{DepMod} \
860         INSTALL_MOD_PATH=$RPM_BUILD_ROOT \
861         INSTALL_MOD_STRIP="--strip-debug --remove-section=.comment --remove-section=.note.GNU-stack" \
862         KERNELRELEASE=%{kernel_release}
863
864 %ifarch %{arm} aarch64
865 export DTC_FLAGS=-@
866 %{__make} %{MakeOpts} %{!?with_verbose:-s} dtbs_install \
867         -C %{objdir} \
868         %{?with_verbose:V=1} \
869         INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/boot/dtb-%{kernel_release}
870 %endif
871
872 install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/misc
873
874 # create directories which may be missing, to simplyfy %files
875 install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/kernel/{arch,sound,mm}
876
877 # rpm obeys filelinkto checks for ghosted symlinks, convert to files
878 rm -f $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/{build,source}
879 touch $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/{build,source}
880
881 # no point embed content for %ghost files. empty them
882 for a in \
883         dep{,.bin} \
884         alias{,.bin} \
885         devname \
886         softdep \
887         symbols{,.bin} \
888 ; do
889         test -f $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.$a
890         > $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.$a
891 done
892
893 # /boot
894 install -d $RPM_BUILD_ROOT/boot
895 cp -a %{objdir}/System.map $RPM_BUILD_ROOT/boot/System.map-%{kernel_release}
896 cp -aL %{objdir}/.config $RPM_BUILD_ROOT/boot/config-%{kernel_release}
897 %ifarch %{ix86} %{x8664} x32
898         cp -a %{objdir}/arch/%{target_arch_dir}/boot/bzImage $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
899         install -p %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinux-%{kernel_release}
900 %endif
901 %ifarch ppc ppc64
902         install -p %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
903         install -p %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinux-%{kernel_release}
904 %endif
905 %ifarch alpha sparc sparc64
906         %{__gzip} -cfv %{objdir}/vmlinux > %{objdir}/vmlinuz
907         cp -a %{objdir}/vmlinuz $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
908         install -p %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
909         %ifarch sparc
910                 elftoaout %{objdir}/arch/sparc/boot/image -o %{objdir}/vmlinux.aout
911                 install -p %{objdir}/vmlinux.aout $RPM_BUILD_ROOT/boot/vmlinux.aout-%{kernel_release}
912         %endif
913         %ifarch sparc64
914                 elftoaout %{objdir}/arch/sparc64/boot/image -o %{objdir}/vmlinux.aout
915                 install -p %{objdir}/vmlinux.aout $RPM_BUILD_ROOT/boot/vmlinux.aout-%{kernel_release}
916         %endif
917 %endif
918 %ifarch %{arm}
919         install -p %{objdir}/arch/arm/boot/zImage $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
920 %endif
921 %ifarch aarch64
922         cp -a %{objdir}/arch/%{target_arch_dir}/boot/Image.gz $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
923 %endif
924
925 # ghosted initrd
926 touch $RPM_BUILD_ROOT%{initrd_dir}/initrd-%{kernel_release}.gz
927 touch $RPM_BUILD_ROOT%{initrd_dir}/initramfs-%{kernel_release}.img
928
929 %if "%{_target_base_arch}" != "%{_host_base_arch}"
930 touch $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.dep
931 %endif
932
933 # /etc/depmod.d /etc/modrobe.d
934 install -d $RPM_BUILD_ROOT%{_sysconfdir}/{depmod.d,modprobe.d}/%{kernel_release}
935
936 install -d $RPM_BUILD_ROOT/etc/sysconfig
937 install %{SOURCE1} $RPM_BUILD_ROOT/etc/sysconfig/kernel
938
939 # /usr/src/linux
940 install -d $RPM_BUILD_ROOT%{_kernelsrcdir}
941
942 # test if we can hardlink -- %{_builddir} and $RPM_BUILD_ROOT on same partition
943 if cp -al %{srcdir}/COPYING $RPM_BUILD_ROOT/COPYING 2>/dev/null; then
944         l=l
945         rm -f $RPM_BUILD_ROOT/COPYING
946 fi
947
948 cp -a$l %{srcdir}/* $RPM_BUILD_ROOT%{_kernelsrcdir}
949 cp -a %{objdir}/Module.symvers $RPM_BUILD_ROOT%{_kernelsrcdir}
950 cp -aL %{objdir}/.config $RPM_BUILD_ROOT%{_kernelsrcdir}
951 cp -a %{objdir}/include $RPM_BUILD_ROOT%{_kernelsrcdir}
952 # copy arch/x86/include/generated
953 for dir in $(cd %{objdir} && find arch -name generated -type d); do
954         cp -a %{objdir}/$dir $RPM_BUILD_ROOT%{_kernelsrcdir}/$dir
955         find $RPM_BUILD_ROOT%{_kernelsrcdir}/$dir -name '.*.cmd' -exec rm "{}" ";"
956 done
957
958 %ifarch %{x8664} x32
959 # Needed for CONFIG_STACK_VALIDATION / ORC_UNWINDER enabled builds
960 install -d $RPM_BUILD_ROOT%{_kernelsrcdir}/tools/objtool
961 cp -a %{objdir}/tools/objtool/fixdep $RPM_BUILD_ROOT%{_kernelsrcdir}/tools/objtool
962 cp -a %{objdir}/tools/objtool/objtool $RPM_BUILD_ROOT%{_kernelsrcdir}/tools/objtool
963 %endif
964
965 # version.h location changed in 3.7, but a lot of external modules don't know about it
966 # add a compatibility symlink
967 ln -s ../generated/uapi/linux/version.h $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/version.h
968
969 # disable this here, causes a lot of build-time problems and our rpm-build disables it anyway
970 %{__sed} -i -e 's|\(CONSTIFY_PLUGIN.*:=.*\)|# \1|' $RPM_BUILD_ROOT%{_kernelsrcdir}/Makefile
971
972 # collect module-build files and directories
973 # Usage: kernel-module-build.pl $rpmdir $fileoutdir
974 fileoutdir=$(pwd)
975 cd $RPM_BUILD_ROOT%{_kernelsrcdir}
976 %{__perl} %{topdir}/kernel-module-build.pl %{_kernelsrcdir} $fileoutdir
977 cd -
978
979 for f in `find %{objdir}/scripts -type f -print | grep -v "/\.\|\.o$"` ; do
980         ff=${f##%{objdir}/}
981         if [ -x "$f" ]; then
982                 echo "%attr(755,root,root) %{_kernelsrcdir}/$ff" >>files.mb_include_modulebuild_and_dirs
983         else
984                 echo "%{_kernelsrcdir}/$ff" >>files.mb_include_modulebuild_and_dirs
985         fi
986         echo "%exclude %{_kernelsrcdir}/$ff" >>files.source_exclude_modulebuild_and_dirs
987         cp -a "$f" "$RPM_BUILD_ROOT%{_kernelsrcdir}/$ff"
988 done
989
990 %if %{with doc}
991 # move to %{_docdir} so we wouldn't depend on any kernel package for dirs
992 install -d $RPM_BUILD_ROOT%{_docdir}
993 mv $RPM_BUILD_ROOT{%{_kernelsrcdir}/Documentation,%{_docdir}/%{name}-%{version}}
994
995 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/dontdiff
996 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/Makefile
997 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/*/*/Makefile
998 %else
999 %{__rm} -r $RPM_BUILD_ROOT%{_kernelsrcdir}/Documentation
1000 %endif
1001
1002 %clean
1003 rm -rf $RPM_BUILD_ROOT
1004
1005 %preun
1006 if [ -x /sbin/new-kernel-pkg ]; then
1007         /sbin/new-kernel-pkg --remove %{kernel_release}
1008 fi
1009
1010 %post
1011 [ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
1012 if [[ "$CREATE_SYMLINKS" != [Nn][Oo] ]]; then
1013         mv -f /boot/vmlinuz{,.old} 2> /dev/null
1014         mv -f /boot/System.map{,.old} 2> /dev/null
1015         ln -sf vmlinuz-%{kernel_release} /boot/vmlinuz
1016         ln -sf System.map-%{kernel_release} /boot/System.map
1017 %ifarch %{arm} aarch64
1018         test -L /boot/dtb.old && rm /boot/dtb.old
1019         test ! -e /boot/dtb.old && mv -f /boot/dtb{,.old} 2> /dev/null
1020         ln -sf dtb-%{kernel_release} /boot/dtb
1021 %endif
1022 %if 0%{?alt_kernel:1}
1023         mv -f /boot/vmlinuz%{_alt_kernel}{,.old} 2> /dev/null
1024         mv -f /boot/System%{_alt_kernel}.map{,.old} 2> /dev/null
1025         ln -sf vmlinuz-%{kernel_release} /boot/vmlinuz%{_alt_kernel}
1026         ln -sf System.map-%{kernel_release} /boot/System.map%{_alt_kernel}
1027 %ifarch %{arm} aarch64
1028         test -L /boot/dtb%{_alt_kernel}.old && rm /boot/dtb%{_alt_kernel}.old
1029         test ! -e /boot/dtb%{_alt_kernel}.old && mv -f /boot/dtb%{_alt_kernel}{,.old} 2> /dev/null
1030         ln -sf dtb-%{kernel_release} /boot/dtb%{_alt_kernel}
1031 %endif
1032 %endif
1033 fi
1034
1035 %depmod %{kernel_release}
1036
1037 %posttrans
1038 # use posttrans to generate initrd after all dependant module packages (-drm, etc) are installed
1039 [ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
1040 initrd_file=""
1041 if [[ "$USE_GENINITRD" != [Nn][Oo] ]]; then
1042         /sbin/geninitrd -f --initrdfs=initramfs %{initrd_dir}/initrd-%{kernel_release}.gz %{kernel_release} || :
1043         initrd_file="initrd-%{kernel_release}.gz"
1044 fi
1045
1046 # if dracut is present then generate full-featured initramfs
1047 if [[ "$USE_DRACUT" != [Nn][Oo] ]] && [ -x /sbin/dracut ]; then
1048         /sbin/dracut --force --quiet /boot/initramfs-%{kernel_release}.img %{kernel_release}
1049         [ -n "$initrd_file" ] || initrd_file="initramfs-%{kernel_release}.img"
1050 fi
1051
1052 if [[ "$CREATE_SYMLINKS" != [Nn][Oo] ]]; then
1053         mv -f %{initrd_dir}/initrd{,.old} 2> /dev/null
1054         if [ -n "$initrd_file" ] ; then
1055                 ln -sf "$initrd_file" %{initrd_dir}/initrd
1056         fi
1057 %if 0%{?alt_kernel:1}
1058         mv -f %{initrd_dir}/initrd%{_alt_kernel}{,.old} 2> /dev/null
1059         if [ -n "$initrd_file" ] ; then
1060                 ln -sf "$initrd_file" %{initrd_dir}/initrd%{_alt_kernel}
1061         fi
1062 %endif
1063 fi
1064
1065 # update boot loaders when old package files are gone from filesystem
1066 if [ -x /sbin/update-grub -a -f /etc/sysconfig/grub ]; then
1067         if [ "$(. /etc/sysconfig/grub; echo ${UPDATE_GRUB:-no})" = "yes" ]; then
1068                 /sbin/update-grub >/dev/null
1069         fi
1070 fi
1071 if [ -x /sbin/new-kernel-pkg ]; then
1072         /sbin/new-kernel-pkg --initrdfile=%{initrd_dir}/$initrd_file --install %{kernel_release} --banner "PLD Linux (%{pld_release})%{?alt_kernel: / %{alt_kernel}}"
1073 fi
1074 if [ -x /sbin/rc-boot ]; then
1075         /sbin/rc-boot 1>&2 || :
1076 fi
1077 if [ -x /sbin/efi-boot-update ]; then
1078         /sbin/efi-boot-update --auto || :
1079 fi
1080
1081 %post vmlinux
1082 [ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
1083 if [[ "$CREATE_SYMLINKS" != [Nn][Oo] ]]; then
1084         mv -f /boot/vmlinux{,.old} 2> /dev/null
1085         ln -sf vmlinux-%{kernel_release} /boot/vmlinux
1086 %if 0%{?alt_kernel:1}
1087         mv -f /boot/vmlinux-%{alt_kernel}{,.old} 2> /dev/null
1088         ln -sf vmlinux-%{kernel_release} /boot/vmlinux-%{alt_kernel}
1089 %endif
1090 fi
1091
1092 %post drm
1093 %depmod %{kernel_release}
1094
1095 %postun drm
1096 %depmod %{kernel_release}
1097
1098 %post sound-alsa
1099 %depmod %{kernel_release}
1100
1101 %postun sound-alsa
1102 %depmod %{kernel_release}
1103
1104 %post headers
1105 ln -snf %{basename:%{_kernelsrcdir}} %{_prefix}/src/linux%{versuffix}%{_alt_kernel}
1106
1107 %postun headers
1108 if [ "$1" = "0" ]; then
1109         if [ -L %{_prefix}/src/linux%{versuffix}%{_alt_kernel} ]; then
1110                 if [ "$(readlink %{_prefix}/src/linux%{versuffix}%{_alt_kernel})" = "linux%{versuffix}%{_alt_kernel}-%{version}" ]; then
1111                         rm -f %{_prefix}/src/linux%{versuffix}%{_alt_kernel}
1112                 fi
1113         fi
1114 fi
1115
1116 %triggerin module-build -- %{name} = %{epoch}:%{version}-%{release}
1117 ln -sfn %{_kernelsrcdir} /lib/modules/%{kernel_release}/build
1118 ln -sfn %{_kernelsrcdir} /lib/modules/%{kernel_release}/source
1119
1120 %triggerun module-build -- %{name} = %{epoch}:%{version}-%{release}
1121 if [ "$1" = 0 ]; then
1122         rm -f /lib/modules/%{kernel_release}/{build,source}
1123 fi
1124
1125 %files
1126 %defattr(644,root,root,755)
1127 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/kernel
1128 %ifarch sparc sparc64
1129 /boot/vmlinux.aout-%{kernel_release}
1130 %endif
1131 %ifarch %{arm} aarch64
1132 /boot/dtb-%{kernel_release}
1133 %endif
1134 /boot/vmlinuz-%{kernel_release}
1135 /boot/System.map-%{kernel_release}
1136 /boot/config-%{kernel_release}
1137 %ghost %{initrd_dir}/initrd-%{kernel_release}.gz
1138 %ghost %{initrd_dir}/initramfs-%{kernel_release}.img
1139
1140 %dir /lib/modules/%{kernel_release}
1141 %dir /lib/modules/%{kernel_release}/kernel
1142 /lib/modules/%{kernel_release}/kernel/arch
1143 /lib/modules/%{kernel_release}/kernel/block
1144 /lib/modules/%{kernel_release}/kernel/crypto
1145 /lib/modules/%{kernel_release}/kernel/drivers
1146 %if %{have_drm}
1147 %exclude /lib/modules/%{kernel_release}/kernel/drivers/gpu
1148 %endif
1149 /lib/modules/%{kernel_release}/kernel/fs
1150 /lib/modules/%{kernel_release}/kernel/kernel
1151 /lib/modules/%{kernel_release}/kernel/lib
1152 /lib/modules/%{kernel_release}/kernel/net
1153 /lib/modules/%{kernel_release}/kernel/mm
1154 %if %{have_sound}
1155 %dir /lib/modules/%{kernel_release}/kernel/sound
1156 /lib/modules/%{kernel_release}/kernel/sound/ac97_bus.ko*
1157 /lib/modules/%{kernel_release}/kernel/sound/sound*.ko*
1158 %ifnarch sparc
1159 %exclude /lib/modules/%{kernel_release}/kernel/drivers/media/pci/cx88/cx88-alsa.ko*
1160 %exclude /lib/modules/%{kernel_release}/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko*
1161 %exclude /lib/modules/%{kernel_release}/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko*
1162 %exclude /lib/modules/%{kernel_release}/kernel/drivers/usb/gadget/legacy/g_midi.ko*
1163 %endif
1164 %ifarch %{arm}
1165 %exclude /lib/modules/%{kernel_release}/kernel/drivers/staging/vc04_services/bcm2835-audio
1166 %endif
1167 %endif
1168 %dir /lib/modules/%{kernel_release}/misc
1169 %if %{with myown}
1170 /lib/modules/%{kernel_release}/kernel/sound
1171 %endif
1172 /lib/modules/%{kernel_release}/kernel/security
1173 %ifarch %{ix86} %{x8664} x32
1174 /lib/modules/%{kernel_release}/kernel/virt
1175 %endif
1176
1177 %dir %{_sysconfdir}/depmod.d/%{kernel_release}
1178 %dir %{_sysconfdir}/modprobe.d/%{kernel_release}
1179
1180 # provided by build
1181 /lib/modules/%{kernel_release}/modules.order
1182 /lib/modules/%{kernel_release}/modules.builtin*
1183
1184 # rest modules.* are ghost (regenerated by post depmod -a invocation)
1185 %ghost /lib/modules/%{kernel_release}/modules.alias
1186 %ghost /lib/modules/%{kernel_release}/modules.alias.bin
1187 %ghost /lib/modules/%{kernel_release}/modules.dep
1188 %ghost /lib/modules/%{kernel_release}/modules.dep.bin
1189 %ghost /lib/modules/%{kernel_release}/modules.devname
1190 %ghost /lib/modules/%{kernel_release}/modules.softdep
1191 %ghost /lib/modules/%{kernel_release}/modules.symbols
1192 %ghost /lib/modules/%{kernel_release}/modules.symbols.bin
1193
1194 # symlinks pointing to kernelsrcdir
1195 %ghost /lib/modules/%{kernel_release}/build
1196 %ghost /lib/modules/%{kernel_release}/source
1197
1198 %ifarch alpha %{ix86} %{x8664} x32 ppc ppc64 sparc sparc64
1199 %files vmlinux
1200 %defattr(644,root,root,755)
1201 /boot/vmlinux-%{kernel_release}
1202 %endif
1203
1204 %if %{have_drm}
1205 %files drm
1206 %defattr(644,root,root,755)
1207 /lib/modules/%{kernel_release}/kernel/drivers/gpu
1208 %endif
1209
1210 %if %{have_sound}
1211 %files sound-alsa
1212 %defattr(644,root,root,755)
1213 /lib/modules/%{kernel_release}/kernel/sound
1214 %exclude %dir /lib/modules/%{kernel_release}/kernel/sound
1215 %exclude /lib/modules/%{kernel_release}/kernel/sound/ac97_bus.ko*
1216 %exclude /lib/modules/%{kernel_release}/kernel/sound/sound*.ko*
1217 %ifnarch sparc
1218 /lib/modules/%{kernel_release}/kernel/drivers/usb/gadget/legacy/g_midi.ko*
1219 /lib/modules/%{kernel_release}/kernel/drivers/media/pci/cx88/cx88-alsa.ko*
1220 /lib/modules/%{kernel_release}/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko*
1221 /lib/modules/%{kernel_release}/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko*
1222 %endif
1223 %ifarch %{arm}
1224 /lib/modules/%{kernel_release}/kernel/drivers/staging/vc04_services/bcm2835-audio
1225 %endif
1226 %endif
1227
1228 %files headers -f files.headers_exclude_kbuild
1229 %defattr(644,root,root,755)
1230 %dir %{_kernelsrcdir}
1231 %{_kernelsrcdir}/include
1232 %dir %{_kernelsrcdir}/arch
1233 %dir %{_kernelsrcdir}/arch/[!K]*
1234 %{_kernelsrcdir}/arch/*/include
1235 %dir %{_kernelsrcdir}/security
1236 %dir %{_kernelsrcdir}/security/selinux
1237 %{_kernelsrcdir}/security/selinux/include
1238 %dir %{_kernelsrcdir}/tools
1239 %{_kernelsrcdir}/tools/include
1240 %dir %{_kernelsrcdir}/usr
1241 %dir %{_kernelsrcdir}/usr/include
1242 %{_kernelsrcdir}/.config
1243 %{_kernelsrcdir}/Module.symvers
1244
1245 %files module-build -f files.mb_include_modulebuild_and_dirs
1246 %defattr(644,root,root,755)
1247 %ifarch ppc ppc64
1248 %{_kernelsrcdir}/arch/powerpc/lib/crtsavres.*
1249 %endif
1250 %exclude %dir %{_kernelsrcdir}/arch/um
1251 %{_kernelsrcdir}/arch/*/kernel/asm-offsets*
1252 %{_kernelsrcdir}/drivers/media/pci/bt8xx/bttv.h
1253 %{_kernelsrcdir}/kernel/bounds.c
1254 %{_kernelsrcdir}/scripts/basic/*.c
1255 %attr(755,root,root) %{_kernelsrcdir}/scripts/kconfig/*.sh
1256 %{_kernelsrcdir}/scripts/kconfig/*.pl
1257 %{_kernelsrcdir}/scripts/kconfig/*.glade
1258 %{_kernelsrcdir}/scripts/kconfig/*.cc
1259 %{_kernelsrcdir}/scripts/kconfig/*.y
1260 %{_kernelsrcdir}/scripts/kconfig/*.l
1261 %{_kernelsrcdir}/scripts/kconfig/[c-k]*.c
1262 %{_kernelsrcdir}/scripts/kconfig/[c-k]*.h
1263 %{_kernelsrcdir}/scripts/kconfig/l*.h
1264 %{_kernelsrcdir}/scripts/kconfig/[m-o]*.c
1265 %{_kernelsrcdir}/scripts/kconfig/[m-o]*.h
1266 %{_kernelsrcdir}/scripts/kconfig/preprocess.c
1267 %{_kernelsrcdir}/scripts/kconfig/[q-u]*.c
1268 %{_kernelsrcdir}/scripts/kconfig/[q-u]*.h
1269 %{_kernelsrcdir}/scripts/kconfig/lxdialog
1270 %{_kernelsrcdir}/scripts/mod/*.c
1271 %{_kernelsrcdir}/scripts/mod/modpost.h
1272 %attr(755,root,root) %{_kernelsrcdir}/scripts/mkcompile_h
1273 %attr(755,root,root) %{_kernelsrcdir}/scripts/setlocalversion
1274 %{_kernelsrcdir}/scripts/subarch.include
1275 %{_kernelsrcdir}/scripts/*.c
1276 %{_kernelsrcdir}/scripts/*.h
1277 %attr(755,root,root) %{_kernelsrcdir}/scripts/*.sh
1278 %{_kernelsrcdir}/scripts/selinux/genheaders/*.c
1279 %{_kernelsrcdir}/scripts/selinux/mdp/*.c
1280 %exclude %dir %{_kernelsrcdir}/security
1281 %exclude %dir %{_kernelsrcdir}/security/selinux
1282 %ifarch %{x8664} x32
1283 %attr(755,root,root) %{_kernelsrcdir}/tools/objtool/fixdep
1284 %attr(755,root,root) %{_kernelsrcdir}/tools/objtool/objtool
1285 %endif
1286
1287 %if %{with doc}
1288 %files doc
1289 %defattr(644,root,root,755)
1290 %dir %{_docdir}/%{name}-%{version}
1291
1292 %{_docdir}/%{name}-%{version}/[!jkz]*
1293 %{_docdir}/%{name}-%{version}/kbuild
1294 %{_docdir}/%{name}-%{version}/kernel-hacking
1295 %endif
1296
1297 %if %{with source}
1298 %files source -f files.source_exclude_modulebuild_and_dirs
1299 %defattr(644,root,root,755)
1300 %{_kernelsrcdir}/arch/*/[!Mik]*
1301 %{_kernelsrcdir}/arch/*/kernel/[!M]*
1302 %{_kernelsrcdir}/arch/m68k/ifpsp060/[!M]*
1303 %{_kernelsrcdir}/arch/m68k/ifpsp060/MISC
1304 %{_kernelsrcdir}/arch/m68k/install.sh
1305 %{_kernelsrcdir}/arch/parisc/install.sh
1306 %{_kernelsrcdir}/arch/x86/ia32/[!M]*
1307 %{_kernelsrcdir}/arch/powerpc/kexec
1308 %{_kernelsrcdir}/arch/powerpc/kvm
1309 %{_kernelsrcdir}/arch/riscv/kvm
1310 %ifarch ppc ppc64
1311 %exclude %{_kernelsrcdir}/arch/powerpc/lib/crtsavres.*
1312 %endif
1313 %{_kernelsrcdir}/arch/arm64/kvm
1314 %{_kernelsrcdir}/arch/loongarch/kvm
1315 %{_kernelsrcdir}/arch/mips/kvm
1316 %{_kernelsrcdir}/arch/s390/kvm
1317 %{_kernelsrcdir}/arch/x86/kvm
1318 %exclude %{_kernelsrcdir}/arch/*/kernel/asm-offsets*
1319 %exclude %{_kernelsrcdir}/drivers/media/pci/bt8xx/bttv.h
1320 %{_kernelsrcdir}/block
1321 %{_kernelsrcdir}/certs
1322 %{_kernelsrcdir}/crypto
1323 %{_kernelsrcdir}/drivers
1324 %{_kernelsrcdir}/fs
1325 %{_kernelsrcdir}/init
1326 %{_kernelsrcdir}/io_uring
1327 %{_kernelsrcdir}/ipc
1328 %{_kernelsrcdir}/kernel
1329 %exclude %{_kernelsrcdir}/kernel/bounds.c
1330 %{_kernelsrcdir}/lib
1331 %{_kernelsrcdir}/mm
1332 %{_kernelsrcdir}/net
1333 %{_kernelsrcdir}/virt
1334 %{_kernelsrcdir}/rust
1335 %{_kernelsrcdir}/samples
1336 %{_kernelsrcdir}/scripts/*
1337 %exclude %{_kernelsrcdir}/scripts/Kbuild.include
1338 %exclude %{_kernelsrcdir}/scripts/Makefile*
1339 %exclude %{_kernelsrcdir}/scripts/basic
1340 %exclude %{_kernelsrcdir}/scripts/kconfig
1341 %exclude %{_kernelsrcdir}/scripts/mkcompile_h
1342 %exclude %{_kernelsrcdir}/scripts/mod
1343 %exclude %{_kernelsrcdir}/scripts/setlocalversion
1344 %exclude %{_kernelsrcdir}/scripts/subarch.include
1345 %exclude %{_kernelsrcdir}/scripts/*.c
1346 %exclude %{_kernelsrcdir}/scripts/*.h
1347 %exclude %{_kernelsrcdir}/scripts/*.sh
1348 %exclude %dir %{_kernelsrcdir}/scripts/selinux
1349 %exclude %{_kernelsrcdir}/scripts/selinux/Makefile
1350 %exclude %dir %{_kernelsrcdir}/scripts/selinux/genheaders
1351 %exclude %{_kernelsrcdir}/scripts/selinux/genheaders/Makefile
1352 %exclude %{_kernelsrcdir}/scripts/selinux/genheaders/*.c
1353 %exclude %dir %{_kernelsrcdir}/scripts/selinux/mdp
1354 %exclude %{_kernelsrcdir}/scripts/selinux/mdp/Makefile
1355 %exclude %{_kernelsrcdir}/scripts/selinux/mdp/*.c
1356 %{_kernelsrcdir}/sound
1357 %{_kernelsrcdir}/security
1358 %exclude %{_kernelsrcdir}/security/selinux/include
1359 %{_kernelsrcdir}/tools/*
1360 %exclude %{_kernelsrcdir}/tools/include
1361 %ifarch %{x8664} x32
1362 %exclude %{_kernelsrcdir}/tools/objtool/fixdep
1363 %exclude %{_kernelsrcdir}/tools/objtool/objtool
1364 %endif
1365 %{_kernelsrcdir}/usr
1366 %{_kernelsrcdir}/COPYING
1367 %{_kernelsrcdir}/CREDITS
1368 %{_kernelsrcdir}/MAINTAINERS
1369 %{_kernelsrcdir}/README
1370 %endif
This page took 0.12613 seconds and 2 git commands to generate.