X-Git-Url: https://git.tld-linux.org/?a=blobdiff_plain;f=kernel.spec;fp=kernel.spec;h=22e529fa9ffaa8c5272ac9432d564dd59d0c7650;hb=174fd873504676bf5f5f67c6703258eaf368e58f;hp=0000000000000000000000000000000000000000;hpb=d477374775e9081cbbd046a240c092f7ddebe20e;p=packages%2Fkernel.git diff --git a/kernel.spec b/kernel.spec new file mode 100644 index 0000000..22e529f --- /dev/null +++ b/kernel.spec @@ -0,0 +1,762 @@ +# 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 5.4 +%define postver 188 +%define rel 1 + +%define alt_kernel 5.4 + +# 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/v5.x/linux-%{basever}.tar.xz +# Source0-md5: ce9b2d974d27408a61c53a30d3f98fb9 +%if "%{postver}" != "0" +Source1: http://www.kernel.org/pub/linux/kernel/v5.x/patch-%{version}.xz +# Source1-md5: e77a1b24fd5b319c02114bb2abc3505c +%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 \ + -C %{objdir} \ + %{?with_verbose:V=1} \ + DEPMOD=%{DepMod} \ + mod_compress_cmd=true \ + INSTALL_MOD_PATH=$RPM_BUILD_ROOT \ + 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 + +%dir /lib/modules/%{kernel_release} +%dir /lib/modules/%{kernel_release}/kernel +/lib/modules/%{kernel_release}/kernel/arch +/lib/modules/%{kernel_release}/kernel/block +/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/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/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 +%dir %{_kernelsrcdir}/usr +%dir %{_kernelsrcdir}/usr/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/*.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-o]*.c +%{_kernelsrcdir}/scripts/kconfig/[m-o]*.h +%{_kernelsrcdir}/scripts/kconfig/preprocess.c +%{_kernelsrcdir}/scripts/kconfig/[q-u]*.c +%{_kernelsrcdir}/scripts/kconfig/[q-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/subarch.include +%{_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}/kernel-hacking +%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}/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}/LICENSES +%{_kernelsrcdir}/MAINTAINERS +%{_kernelsrcdir}/README +%endif