--- /dev/null
+# Conditional build:
+%bcond_without source # don't build kernel-source package
+%bcond_without doc # don't build kernel-doc package
+%bcond_with verbose # verbose build (V=1)
+
+%define basever 4.9
+%define postver 309
+%define rel 1
+
+%define alt_kernel 4.9
+
+# kernel release (used in filesystem and eventually in uname -r)
+# modules will be looked from /lib/modules/%{kernel_release}
+# localversion is just that without version for "> localversion"
+%define localversion %{rel}
+%define kernel_release %{version}%{?alt_kernel:-%{alt_kernel}}-%{localversion}
+
+Summary: The Linux kernel (the core of the Linux operating system)
+Summary(de.UTF-8): Der Linux-Kernel (Kern des Linux-Betriebssystems)
+Summary(et.UTF-8): Linuxi kernel (ehk operatsioonisüsteemi tuum)
+Summary(fr.UTF-8): Le Kernel-Linux (La partie centrale du systeme)
+Summary(pl.UTF-8): Jądro Linuksa
+Name: kernel%{_alt_kernel}
+Version: %{basever}.%{postver}
+Release: %{rel}
+Epoch: 3
+License: GPL v2
+Group: Base/Kernel
+Source0: http://www.kernel.org/pub/linux/kernel/v4.x/linux-%{basever}.tar.xz
+# Source0-md5: 0a68ef3615c64bd5ee54a3320e46667d
+%if "%{postver}" != "0"
+Source1: http://www.kernel.org/pub/linux/kernel/v4.x/patch-%{version}.xz
+# Source1-md5: f6543693793209202831577ef0c7583b
+%endif
+
+Source2: kernel-module-build.pl
+Source3: kernel.make
+
+Source10: kernel-x86.config
+Source11: kernel-x86_64.config
+
+URL: http://www.kernel.org/
+BuildRequires: binutils >= 3:2.18
+BuildRequires: bison
+BuildRequires: /sbin/depmod
+BuildRequires: elfutils-devel
+BuildRequires: flex
+BuildRequires: gcc >= 5:3.2
+BuildRequires: gcc-plugin-devel
+BuildRequires: xz >= 1:4.999.7
+AutoReqProv: no
+BuildRequires: hostname
+BuildRequires: kmod
+BuildRequires: openssl-devel
+BuildRequires: perl-base
+BuildRequires: rpm >= 4.5-74
+BuildRequires: rpmbuild(macros) >= 1.652
+Requires(post): coreutils
+Requires(post): dracut
+Requires(post): kmod >= 12-2
+Requires: /sbin/depmod
+Requires: coreutils
+Requires: dracut
+Requires: kmod >= 12-2
+%ifarch i686
+Requires: cpuinfo(pae)
+%endif
+Suggests: keyutils
+Suggests: linux-firmware
+Provides: %{name}(netfilter) = 20070806
+Provides: %{name}(vermagic) = %{kernel_release}
+Obsoletes: kernel%{_alt_kernel}-vanilla
+Obsoletes: kernel-firmware
+Obsoletes: kernel-modules
+Conflicts: e2fsprogs < 1.29
+Conflicts: isdn4k-utils < 3.1pre1
+Conflicts: jfsutils < 1.1.3
+Conflicts: linux-firmware < 20120720
+Conflicts: lvm2 < 2.02.40
+Conflicts: module-init-tools < 3.16
+Conflicts: nfs-utils < 1.0.5
+Conflicts: oprofile < 0.9
+Conflicts: ppp < 1:2.4.0
+Conflicts: procps < 3.2.0
+Conflicts: quota-tools < 3.09
+Conflicts: reiserfsprogs < 3.6.3
+Conflicts: rpm < 4.4.2-0.2
+Conflicts: udev < 1:081
+Conflicts: util-linux < 2.10o
+Conflicts: xfsprogs < 2.6.0
+ExclusiveArch: i686 x86_64
+ExclusiveOS: Linux
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%ifarch i686 x86_64
+%define target_arch_dir x86
+%else
+%define target_arch_dir %{_target_base_arch}
+%endif
+
+%define defconfig arch/%{target_arch_dir}/defconfig
+
+# No ELF objects there to strip (skips processing 27k files)
+%define _noautostrip \\(.*%{_kernelsrcdir}/.*\\|.*/vmlinux.*\\)
+%define _noautochrpath .*%{_kernelsrcdir}/.*
+%define _enable_debug_packages 0
+
+%define initrd_dir /boot
+
+%define topdir %{_builddir}/%{name}-%{version}
+%define srcdir %{topdir}/linux-%{basever}
+%define objdir %{topdir}/%{targetobj}
+%define targetobj %{_target_base_arch}-gcc-%(%{kgcc} -dumpversion)
+
+%define _kernelsrcdir /usr/src/linux%{_alt_kernel}-%{version}
+
+%if "%{_target_base_arch}" != "%{_host_base_arch}"
+ %define CrossOpts ARCH=%{_target_base_arch} CROSS_COMPILE=%{_target_cpu}-tld-linux-
+ %define DepMod /bin/true
+
+ %if "%{_host_base_arch}" == "x86_64" && "%{_target_base_arch}" == "i386"
+ %define CrossOpts ARCH=%{_target_base_arch} CC="%{__cc}"
+ %define DepMod /sbin/depmod
+ %endif
+
+%else
+ %define CrossOpts ARCH=%{_target_base_arch} CC="%{__cc}"
+ %define DepMod /sbin/depmod
+%endif
+%define MakeOpts %{CrossOpts} HOSTCC="%{__cc}"
+
+%description
+This package contains the Linux kernel that is used to boot and run
+your system. It contains few device drivers for specific hardware.
+Most hardware is instead supported by modules loaded after booting.
+
+%description -l de.UTF-8
+Das Kernel-Paket enthält den Linux-Kernel (vmlinuz), den Kern des
+Linux-Betriebssystems. Der Kernel ist für grundliegende
+Systemfunktionen verantwortlich: Speicherreservierung,
+Prozeß-Management, Geräte Ein- und Ausgaben, usw.
+
+%description -l fr.UTF-8
+Le package kernel contient le kernel linux (vmlinuz), la partie
+centrale d'un système d'exploitation Linux. Le noyau traite les
+fonctions basiques d'un système d'exploitation: allocation mémoire,
+allocation de process, entrée/sortie de peripheriques, etc.
+
+%description -l pl.UTF-8
+Pakiet zawiera jądro Linuksa niezbędne do prawidłowego działania
+Twojego komputera. Zawiera w sobie sterowniki do sprzętu znajdującego
+się w komputerze, takiego jak sterowniki dysków itp.
+
+%package vmlinux
+Summary: vmlinux - uncompressed kernel image
+Summary(de.UTF-8): vmlinux - dekompressiertes Kernel Bild
+Summary(pl.UTF-8): vmlinux - rozpakowany obraz jądra
+Group: Base/Kernel
+Obsoletes: kernel-smp-vmlinux
+
+%description vmlinux
+vmlinux - uncompressed kernel image.
+
+%description vmlinux -l de.UTF-8
+vmlinux - dekompressiertes Kernel Bild.
+
+%description vmlinux -l pl.UTF-8
+vmlinux - rozpakowany obraz jądra.
+
+%package drm
+Summary: DRM kernel modules
+Summary(de.UTF-8): DRM Kernel Treiber
+Summary(pl.UTF-8): Sterowniki DRM
+Group: Base/Kernel
+Requires(postun): %{name} = %{epoch}:%{version}-%{release}
+Requires: %{name} = %{epoch}:%{version}-%{release}
+Obsoletes: kernel-smp-drm
+AutoReqProv: no
+
+%description drm
+DRM kernel modules.
+
+%description drm -l de.UTF-8
+DRM Kernel Treiber.
+
+%description drm -l pl.UTF-8
+Sterowniki DRM.
+
+%package pcmcia
+Summary: PCMCIA modules
+Summary(de.UTF-8): PCMCIA Module
+Summary(pl.UTF-8): Moduły PCMCIA
+Group: Base/Kernel
+Requires(postun): %{name} = %{epoch}:%{version}-%{release}
+Requires: %{name} = %{epoch}:%{version}-%{release}
+Obsoletes: kernel-smp-pcmcia
+Conflicts: pcmcia-cs < 3.1.21
+Conflicts: pcmciautils < 004
+AutoReqProv: no
+
+%description pcmcia
+PCMCIA modules.
+
+%description pcmcia -l de.UTF-8
+PCMCIA Module.
+
+%description pcmcia -l pl.UTF-8
+Moduły PCMCIA.
+
+%package sound-alsa
+Summary: ALSA kernel modules
+Summary(de.UTF-8): ALSA Kernel Module
+Summary(pl.UTF-8): Sterowniki dźwięku ALSA
+Group: Base/Kernel
+Requires(postun): %{name} = %{epoch}:%{version}-%{release}
+Requires: %{name} = %{epoch}:%{version}-%{release}
+Obsoletes: kernel-smp-sound-alsa
+AutoReqProv: no
+
+%description sound-alsa
+ALSA (Advanced Linux Sound Architecture) sound drivers.
+
+%description sound-alsa -l de.UTF-8
+ALSA (Advanced Linux Sound Architecture) Sound-Treiber.
+
+%description sound-alsa -l pl.UTF-8
+Sterowniki dźwięku ALSA (Advanced Linux Sound Architecture).
+
+%package headers
+Summary: Header files for the Linux kernel
+Summary(de.UTF-8): Header Dateien für den Linux-Kernel
+Summary(pl.UTF-8): Pliki nagłówkowe jądra Linuksa
+Group: Development/Building
+Provides: %{name}-headers(netfilter) = 20070806
+AutoReqProv: no
+
+%description headers
+These are the C header files for the Linux kernel, which define
+structures and constants that are needed when rebuilding the kernel or
+building kernel modules.
+
+%description headers -l de.UTF-8
+Dies sind die C Header Dateien für den Linux-Kernel, die definierte
+Strukturen und Konstante beinhalten, die beim rekompilieren des
+Kernels oder bei Kernel Modul kompilationen gebraucht werden.
+
+%description headers -l pl.UTF-8
+Pakiet zawiera pliki nagłówkowe jądra, niezbędne do rekompilacji jądra
+oraz budowania modułów jądra.
+
+%package module-build
+Summary: Development files for building kernel modules
+Summary(de.UTF-8): Development Dateien die beim Kernel Modul kompilationen gebraucht werden
+Summary(pl.UTF-8): Pliki służące do budowania modułów jądra
+Group: Development/Building
+Requires: %{name}-headers = %{epoch}:%{version}-%{release}
+Conflicts: rpmbuild(macros) < 1.652
+AutoReqProv: no
+
+%description module-build
+Development files from kernel source tree needed to build Linux kernel
+modules from external packages.
+
+%description module-build -l de.UTF-8
+Development Dateien des Linux-Kernels die beim kompilieren externer
+Kernel Module gebraucht werden.
+
+%description module-build -l pl.UTF-8
+Pliki ze drzewa źródeł jądra potrzebne do budowania modułów jądra
+Linuksa z zewnętrznych pakietów.
+
+%package source
+Summary: Kernel source tree
+Summary(de.UTF-8): Der Kernel Quelltext
+Summary(pl.UTF-8): Kod źródłowy jądra Linuksa
+Group: Development/Building
+Requires: %{name}-module-build = %{epoch}:%{version}-%{release}
+AutoReqProv: no
+
+%description source
+This is the source code for the Linux kernel. You can build a custom
+kernel that is better tuned to your particular hardware.
+
+%description source -l de.UTF-8
+Das Kernel-Source-Paket enthält den source code (C/Assembler-Code) des
+Linux-Kernels. Die Source-Dateien werden gebraucht, um viele
+C-Programme zu kompilieren, da sie auf Konstanten zurückgreifen, die
+im Kernel-Source definiert sind. Die Source-Dateien können auch
+benutzt werden, um einen Kernel zu kompilieren, der besser auf Ihre
+Hardware ausgerichtet ist.
+
+%description source -l fr.UTF-8
+Le package pour le kernel-source contient le code source pour le noyau
+linux. Ces sources sont nécessaires pour compiler la plupart des
+programmes C, car il dépend de constantes définies dans le code
+source. Les sources peuvent être aussi utilisée pour compiler un noyau
+personnalisé pour avoir de meilleures performances sur des matériels
+particuliers.
+
+%description source -l pl.UTF-8
+Pakiet zawiera kod źródłowy jądra systemu.
+
+%package doc
+Summary: Kernel documentation
+Summary(de.UTF-8): Kernel Dokumentation
+Summary(pl.UTF-8): Dokumentacja do jądra Linuksa
+Group: Documentation
+AutoReqProv: no
+
+%description doc
+This is the documentation for the Linux kernel, as found in
+/usr/src/linux/Documentation directory.
+
+%description doc -l de.UTF-8
+Dies ist die Kernel Dokumentation wie sie im 'Documentation'
+Verzeichniss vorgefunden werden kann.
+
+%description doc -l pl.UTF-8
+Pakiet zawiera dokumentację do jądra Linuksa pochodzącą z katalogu
+/usr/src/linux/Documentation.
+
+%prep
+%setup -qc
+ln -s %{SOURCE2} kernel-module-build.pl
+ln -s %{SOURCE3} Makefile
+cd linux-%{basever}
+
+%if "%{postver}" != "0"
+%{__xz} -dc %{SOURCE1} | patch -p1 -s
+%endif
+
+# Fix EXTRAVERSION in main Makefile
+sed -i 's#EXTRAVERSION =.*#EXTRAVERSION = %{?alt_kernel:-%{alt_kernel}}#g' Makefile
+
+# cleanup backups after patching
+find '(' -name '*~' -o -name '*.orig' -o -name '.gitignore' ')' -print0 | xargs -0 -r -l512 rm -f
+
+%build
+install -d %{objdir}
+cat > %{targetobj}.mk <<'EOF'
+# generated by %{name}.spec
+KERNELSRC := %{srcdir}
+KERNELOUTPUT := %{objdir}
+
+SRCARCH := %{target_arch_dir}
+ARCH := %{_target_base_arch}
+Q := %{!?with_verbose:@}
+MAKE_OPTS := %{MakeOpts}
+DEFCONFIG := %{defconfig}
+EOF
+
+cd %{objdir}
+install -d arch/%{target_arch_dir}
+%ifarch i686
+ cat %{SOURCE10} > %{defconfig}
+%endif
+%ifarch x86_64
+ cat %{SOURCE11} > %{defconfig}
+%endif
+sed -i "s:CONFIG_LOCALVERSION=\"\":CONFIG_LOCALVERSION=\"-%{localversion}\":" %{defconfig}
+
+ln -sf %{defconfig} .config
+cd -
+
+%{__make} \
+ TARGETOBJ=%{targetobj} \
+ %{?with_verbose:V=1} \
+ oldconfig
+
+# build kernel
+%{__make} \
+ TARGETOBJ=%{targetobj} \
+ %{?with_verbose:V=1} \
+ all
+
+%install
+rm -rf $RPM_BUILD_ROOT
+%{__make} %{MakeOpts} -j1 %{!?with_verbose:-s} modules_install firmware_install \
+ -C %{objdir} \
+ %{?with_verbose:V=1} \
+ DEPMOD=%{DepMod} \
+ mod_compress_cmd=true \
+ INSTALL_MOD_PATH=$RPM_BUILD_ROOT \
+ INSTALL_FW_PATH=$RPM_BUILD_ROOT/lib/firmware/%{kernel_release} \
+ KERNELRELEASE=%{kernel_release}
+
+install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/misc
+
+# create directories which may be missing, to simplyfy %files
+install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/kernel/{arch,sound,mm}
+
+# rpm obeys filelinkto checks for ghosted symlinks, convert to files
+rm -f $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/{build,source}
+touch $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/{build,source}
+
+# no point embed content for %ghost files. empty them
+for a in \
+ dep{,.bin} \
+ alias{,.bin} \
+ devname \
+ softdep \
+ symbols{,.bin} \
+; do
+ test -f $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.$a
+ > $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.$a
+done
+
+# /boot
+install -d $RPM_BUILD_ROOT/boot
+cp -a %{objdir}/System.map $RPM_BUILD_ROOT/boot/System.map-%{kernel_release}
+cp -aL %{objdir}/.config $RPM_BUILD_ROOT/boot/config-%{kernel_release}
+cp -a %{objdir}/arch/%{target_arch_dir}/boot/bzImage $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
+install -p %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinux-%{kernel_release}
+
+# ghosted initrd
+touch $RPM_BUILD_ROOT%{initrd_dir}/initramfs-%{kernel_release}.img
+
+%if "%{_target_base_arch}" != "%{_host_base_arch}"
+touch $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.dep
+%endif
+
+# /etc/modrobe.d
+install -d $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/%{kernel_release}
+
+# /usr/src/linux
+install -d $RPM_BUILD_ROOT%{_kernelsrcdir}
+
+# test if we can hardlink -- %{_builddir} and $RPM_BUILD_ROOT on same partition
+if cp -al %{srcdir}/COPYING $RPM_BUILD_ROOT/COPYING 2>/dev/null; then
+ l=l
+ rm -f $RPM_BUILD_ROOT/COPYING
+fi
+
+cp -a$l %{srcdir}/* $RPM_BUILD_ROOT%{_kernelsrcdir}
+cp -a %{objdir}/Module.symvers $RPM_BUILD_ROOT%{_kernelsrcdir}
+cp -aL %{objdir}/.config $RPM_BUILD_ROOT%{_kernelsrcdir}
+cp -a %{objdir}/include $RPM_BUILD_ROOT%{_kernelsrcdir}
+# copy arch/x86/include/generated
+for dir in $(cd %{objdir} && find arch -name generated -type d); do
+ cp -a %{objdir}/$dir $RPM_BUILD_ROOT%{_kernelsrcdir}/$dir
+ find $RPM_BUILD_ROOT%{_kernelsrcdir}/$dir -name '.*.cmd' -exec rm "{}" ";"
+done
+
+# version.h location changed in 3.7, but a lot of external modules don't know about it
+# add a compatibility symlink
+ln -s ../generated/uapi/linux/version.h $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/version.h
+
+# disable this here, causes a lot of build-time problems and our rpm-build disables it anyway
+%{__sed} -i -e 's|\(CONSTIFY_PLUGIN.*:=.*\)|# \1|' $RPM_BUILD_ROOT%{_kernelsrcdir}/Makefile
+
+# collect module-build files and directories
+# Usage: kernel-module-build.pl $rpmdir $fileoutdir
+fileoutdir=$(pwd)
+cd $RPM_BUILD_ROOT%{_kernelsrcdir}
+%{__perl} %{topdir}/kernel-module-build.pl %{_kernelsrcdir} $fileoutdir
+cd -
+
+for f in `find %{objdir}/scripts -type f -print | grep -v "/\.\|\.o$"` ; do
+ ff=${f##%{objdir}/}
+ if [ -x "$f" ]; then
+ echo "%attr(755,root,root) %{_kernelsrcdir}/$ff" >>files.mb_include_modulebuild_and_dirs
+ else
+ echo "%{_kernelsrcdir}/$ff" >>files.mb_include_modulebuild_and_dirs
+ fi
+ echo "%exclude %{_kernelsrcdir}/$ff" >>files.source_exclude_modulebuild_and_dirs
+ cp -a "$f" "$RPM_BUILD_ROOT%{_kernelsrcdir}/$ff"
+done
+
+%if %{with doc}
+# move to %{_docdir} so we wouldn't depend on any kernel package for dirs
+install -d $RPM_BUILD_ROOT%{_docdir}
+mv $RPM_BUILD_ROOT{%{_kernelsrcdir}/Documentation,%{_docdir}/%{name}-%{version}}
+
+%{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/dontdiff
+%{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/Makefile
+%{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/*/Makefile
+%{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/*/*/Makefile
+%else
+%{__rm} -r $RPM_BUILD_ROOT%{_kernelsrcdir}/Documentation
+%endif
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%preun
+if [ -x /sbin/new-kernel-pkg ]; then
+ /sbin/new-kernel-pkg --remove %{kernel_release}
+fi
+
+%post
+%depmod %{kernel_release}
+
+%posttrans
+# generate initramfs
+if [ -x /sbin/dracut ]; then
+ /sbin/dracut --force --quiet /boot/initramfs-%{kernel_release}.img %{kernel_release}
+fi
+# update boot loader
+if [ -x /sbin/update-grub -a -f /etc/sysconfig/grub ]; then
+ if [ "$(. /etc/sysconfig/grub; echo ${UPDATE_GRUB:-yes})" = "yes" ]; then
+ /sbin/update-grub >/dev/null
+ fi
+fi
+
+%post drm
+%depmod %{kernel_release}
+
+%postun drm
+%depmod %{kernel_release}
+
+%post pcmcia
+%depmod %{kernel_release}
+
+%postun pcmcia
+%depmod %{kernel_release}
+
+%post sound-alsa
+%depmod %{kernel_release}
+
+%postun sound-alsa
+%depmod %{kernel_release}
+
+%post headers
+ln -snf %{basename:%{_kernelsrcdir}} %{_prefix}/src/linux%{_alt_kernel}
+
+%postun headers
+if [ "$1" = "0" ]; then
+ if [ -L %{_prefix}/src/linux%{_alt_kernel} ]; then
+ if [ "$(readlink %{_prefix}/src/linux%{_alt_kernel})" = "linux%{_alt_kernel}-%{version}" ]; then
+ rm -f %{_prefix}/src/linux%{_alt_kernel}
+ fi
+ fi
+fi
+
+%triggerin module-build -- %{name} = %{epoch}:%{version}-%{release}
+ln -sfn %{_kernelsrcdir} /lib/modules/%{kernel_release}/build
+ln -sfn %{_kernelsrcdir} /lib/modules/%{kernel_release}/source
+
+%triggerun module-build -- %{name} = %{epoch}:%{version}-%{release}
+if [ "$1" = 0 ]; then
+ rm -f /lib/modules/%{kernel_release}/{build,source}
+fi
+
+%files
+%defattr(644,root,root,755)
+/boot/vmlinuz-%{kernel_release}
+/boot/System.map-%{kernel_release}
+/boot/config-%{kernel_release}
+%ghost %{initrd_dir}/initramfs-%{kernel_release}.img
+/lib/firmware/%{kernel_release}
+
+%dir /lib/modules/%{kernel_release}
+%dir /lib/modules/%{kernel_release}/kernel
+/lib/modules/%{kernel_release}/kernel/arch
+/lib/modules/%{kernel_release}/kernel/crypto
+/lib/modules/%{kernel_release}/kernel/drivers
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/gpu
+/lib/modules/%{kernel_release}/kernel/fs
+/lib/modules/%{kernel_release}/kernel/kernel
+/lib/modules/%{kernel_release}/kernel/lib
+/lib/modules/%{kernel_release}/kernel/net
+/lib/modules/%{kernel_release}/kernel/mm
+%dir /lib/modules/%{kernel_release}/kernel/sound
+/lib/modules/%{kernel_release}/kernel/sound/ac97_bus.ko*
+/lib/modules/%{kernel_release}/kernel/sound/sound*.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/media/pci/cx88/cx88-alsa.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko*
+%dir /lib/modules/%{kernel_release}/misc
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/pcmcia/[!p]*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/pcmcia/pd6729.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/*/pcmcia
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/ata/pata_pcmcia.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/bluetooth/*_cs.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/isdn/hardware/avm/avm_cs.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/isdn/hardware/avm/b1pcmcia.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/ide/ide-cs.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/net/wireless/*_cs.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/parport/parport_cs.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/tty/serial/8250/serial_cs.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/usb/host/sl811_cs.ko*
+/lib/modules/%{kernel_release}/kernel/security
+/lib/modules/%{kernel_release}/kernel/virt
+
+%dir %{_sysconfdir}/modprobe.d/%{kernel_release}
+
+# provided by build
+/lib/modules/%{kernel_release}/modules.order
+/lib/modules/%{kernel_release}/modules.builtin*
+
+# rest modules.* are ghost (regenerated by post depmod -a invocation)
+%ghost /lib/modules/%{kernel_release}/modules.alias
+%ghost /lib/modules/%{kernel_release}/modules.alias.bin
+%ghost /lib/modules/%{kernel_release}/modules.dep
+%ghost /lib/modules/%{kernel_release}/modules.dep.bin
+%ghost /lib/modules/%{kernel_release}/modules.devname
+%ghost /lib/modules/%{kernel_release}/modules.softdep
+%ghost /lib/modules/%{kernel_release}/modules.symbols
+%ghost /lib/modules/%{kernel_release}/modules.symbols.bin
+
+# symlinks pointing to kernelsrcdir
+%ghost /lib/modules/%{kernel_release}/build
+%ghost /lib/modules/%{kernel_release}/source
+
+%files vmlinux
+%defattr(644,root,root,755)
+/boot/vmlinux-%{kernel_release}
+
+%files drm
+%defattr(644,root,root,755)
+/lib/modules/%{kernel_release}/kernel/drivers/gpu
+
+%files pcmcia
+%defattr(644,root,root,755)
+/lib/modules/%{kernel_release}/kernel/drivers/pcmcia/*ko*
+/lib/modules/%{kernel_release}/kernel/drivers/*/pcmcia
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/pcmcia/pcmcia*ko*
+/lib/modules/%{kernel_release}/kernel/drivers/bluetooth/*_cs.ko*
+/lib/modules/%{kernel_release}/kernel/drivers/isdn/hardware/avm/avm_cs.ko*
+/lib/modules/%{kernel_release}/kernel/drivers/isdn/hardware/avm/b1pcmcia.ko*
+/lib/modules/%{kernel_release}/kernel/drivers/ata/pata_pcmcia.ko*
+/lib/modules/%{kernel_release}/kernel/drivers/ide/ide-cs.ko*
+/lib/modules/%{kernel_release}/kernel/drivers/net/wireless/*_cs.ko*
+/lib/modules/%{kernel_release}/kernel/drivers/parport/parport_cs.ko*
+/lib/modules/%{kernel_release}/kernel/drivers/tty/serial/8250/serial_cs.ko*
+/lib/modules/%{kernel_release}/kernel/drivers/usb/host/sl811_cs.ko*
+
+%files sound-alsa
+%defattr(644,root,root,755)
+/lib/modules/%{kernel_release}/kernel/sound
+%exclude %dir /lib/modules/%{kernel_release}/kernel/sound
+%exclude /lib/modules/%{kernel_release}/kernel/sound/ac97_bus.ko*
+%exclude /lib/modules/%{kernel_release}/kernel/sound/sound*.ko*
+/lib/modules/%{kernel_release}/kernel/drivers/media/pci/cx88/cx88-alsa.ko*
+/lib/modules/%{kernel_release}/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko*
+/lib/modules/%{kernel_release}/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko*
+
+%files headers -f files.headers_exclude_kbuild
+%defattr(644,root,root,755)
+%dir %{_kernelsrcdir}
+%{_kernelsrcdir}/include
+%dir %{_kernelsrcdir}/arch
+%dir %{_kernelsrcdir}/arch/[!K]*
+%{_kernelsrcdir}/arch/*/include
+%dir %{_kernelsrcdir}/security
+%dir %{_kernelsrcdir}/security/selinux
+%{_kernelsrcdir}/security/selinux/include
+%{_kernelsrcdir}/.config
+%{_kernelsrcdir}/Module.symvers
+
+%files module-build -f files.mb_include_modulebuild_and_dirs
+%defattr(644,root,root,755)
+%exclude %dir %{_kernelsrcdir}/arch/um
+%{_kernelsrcdir}/arch/*/kernel/asm-offsets*
+%{_kernelsrcdir}/arch/*/kernel/sigframe*.h
+%{_kernelsrcdir}/drivers/media/pci/bt8xx/bttv.h
+%{_kernelsrcdir}/kernel/bounds.c
+%{_kernelsrcdir}/scripts/basic/*.c
+%attr(755,root,root) %{_kernelsrcdir}/scripts/kconfig/*.sh
+%{_kernelsrcdir}/scripts/kconfig/*.in
+%{_kernelsrcdir}/scripts/kconfig/*_shipped
+%{_kernelsrcdir}/scripts/kconfig/*.pl
+%{_kernelsrcdir}/scripts/kconfig/*.glade
+%{_kernelsrcdir}/scripts/kconfig/*.cc
+%{_kernelsrcdir}/scripts/kconfig/*.y
+%{_kernelsrcdir}/scripts/kconfig/*.l
+%{_kernelsrcdir}/scripts/kconfig/[c-k]*.c
+%{_kernelsrcdir}/scripts/kconfig/[c-k]*.h
+%{_kernelsrcdir}/scripts/kconfig/l*.h
+%{_kernelsrcdir}/scripts/kconfig/[m-u]*.c
+%{_kernelsrcdir}/scripts/kconfig/[m-u]*.h
+%{_kernelsrcdir}/scripts/kconfig/lxdialog
+%{_kernelsrcdir}/scripts/mod/*.c
+%{_kernelsrcdir}/scripts/mod/modpost.h
+%attr(755,root,root) %{_kernelsrcdir}/scripts/mkcompile_h
+%{_kernelsrcdir}/scripts/mkmakefile
+%{_kernelsrcdir}/scripts/module-common.lds
+%attr(755,root,root) %{_kernelsrcdir}/scripts/setlocalversion
+%{_kernelsrcdir}/scripts/*.c
+%{_kernelsrcdir}/scripts/*.h
+%attr(755,root,root) %{_kernelsrcdir}/scripts/*.sh
+%{_kernelsrcdir}/scripts/selinux/genheaders/*.c
+%{_kernelsrcdir}/scripts/selinux/mdp/*.c
+%exclude %dir %{_kernelsrcdir}/security
+%exclude %dir %{_kernelsrcdir}/security/selinux
+
+%if %{with doc}
+%files doc
+%defattr(644,root,root,755)
+%dir %{_docdir}/%{name}-%{version}
+
+%{_docdir}/%{name}-%{version}/[!jkz]*
+%{_docdir}/%{name}-%{version}/[jkz]*.txt
+%{_docdir}/%{name}-%{version}/kbuild
+%{_docdir}/%{name}-%{version}/kdump
+%{_docdir}/%{name}-%{version}/kernel-documentation.rst
+%lang(ja) %{_docdir}/%{name}-%{version}/ja_JP
+%lang(ko) %{_docdir}/%{name}-%{version}/ko_KR
+%lang(zh_CN) %{_docdir}/%{name}-%{version}/zh_CN
+%endif
+
+%if %{with source}
+%files source -f files.source_exclude_modulebuild_and_dirs
+%defattr(644,root,root,755)
+%{_kernelsrcdir}/arch/*/[!Mik]*
+%{_kernelsrcdir}/arch/*/kernel/[!M]*
+%{_kernelsrcdir}/arch/ia64/install.sh
+%{_kernelsrcdir}/arch/m68k/ifpsp060/[!M]*
+%{_kernelsrcdir}/arch/m68k/ifpsp060/MISC
+%{_kernelsrcdir}/arch/m68k/install.sh
+%{_kernelsrcdir}/arch/parisc/install.sh
+%{_kernelsrcdir}/arch/x86/ia32/[!M]*
+%{_kernelsrcdir}/arch/arm/kvm
+%{_kernelsrcdir}/arch/arm64/kvm
+%{_kernelsrcdir}/arch/mips/kvm
+%{_kernelsrcdir}/arch/powerpc/kvm
+%{_kernelsrcdir}/arch/s390/kvm
+%{_kernelsrcdir}/arch/x86/kvm
+%exclude %{_kernelsrcdir}/arch/*/kernel/asm-offsets*
+%exclude %{_kernelsrcdir}/arch/*/kernel/sigframe*.h
+%exclude %{_kernelsrcdir}/drivers/media/pci/bt8xx/bttv.h
+%{_kernelsrcdir}/block
+%{_kernelsrcdir}/certs
+%{_kernelsrcdir}/crypto
+%{_kernelsrcdir}/drivers
+%{_kernelsrcdir}/firmware
+%{_kernelsrcdir}/fs
+%{_kernelsrcdir}/init
+%{_kernelsrcdir}/ipc
+%{_kernelsrcdir}/kernel
+%exclude %{_kernelsrcdir}/kernel/bounds.c
+%{_kernelsrcdir}/lib
+%{_kernelsrcdir}/mm
+%{_kernelsrcdir}/net
+%{_kernelsrcdir}/virt
+%{_kernelsrcdir}/samples
+%{_kernelsrcdir}/scripts/*
+%exclude %{_kernelsrcdir}/scripts/Kbuild.include
+%exclude %{_kernelsrcdir}/scripts/Makefile*
+%exclude %{_kernelsrcdir}/scripts/basic
+%exclude %{_kernelsrcdir}/scripts/kconfig
+%exclude %{_kernelsrcdir}/scripts/mkcompile_h
+%exclude %{_kernelsrcdir}/scripts/mkmakefile
+%exclude %{_kernelsrcdir}/scripts/mod
+%exclude %{_kernelsrcdir}/scripts/module-common.lds
+%exclude %{_kernelsrcdir}/scripts/setlocalversion
+%exclude %{_kernelsrcdir}/scripts/*.c
+%exclude %{_kernelsrcdir}/scripts/*.h
+%exclude %{_kernelsrcdir}/scripts/*.sh
+%exclude %dir %{_kernelsrcdir}/scripts/selinux
+%exclude %{_kernelsrcdir}/scripts/selinux/Makefile
+%exclude %dir %{_kernelsrcdir}/scripts/selinux/genheaders
+%exclude %{_kernelsrcdir}/scripts/selinux/genheaders/Makefile
+%exclude %{_kernelsrcdir}/scripts/selinux/genheaders/*.c
+%exclude %dir %{_kernelsrcdir}/scripts/selinux/mdp
+%exclude %{_kernelsrcdir}/scripts/selinux/mdp/Makefile
+%exclude %{_kernelsrcdir}/scripts/selinux/mdp/*.c
+%{_kernelsrcdir}/sound
+%{_kernelsrcdir}/security
+%exclude %{_kernelsrcdir}/security/selinux/include
+%{_kernelsrcdir}/tools/*
+%{_kernelsrcdir}/usr
+%{_kernelsrcdir}/COPYING
+%{_kernelsrcdir}/CREDITS
+%{_kernelsrcdir}/MAINTAINERS
+%{_kernelsrcdir}/README
+%{_kernelsrcdir}/REPORTING-BUGS
+%endif