]> TLD Linux GIT Repositories - packages/kernel.git/blobdiff - kernel-vanilla.spec
- updated to 4.4.6
[packages/kernel.git] / kernel-vanilla.spec
index 6ccb99f2c40978b4081b9e221e100e020e1a13e4..9108dc2fb1a77b7e4db5b4172f0e1c8a9de43da1 100644 (file)
@@ -1,74 +1,77 @@
 # Conditional build:
-%bcond_without source          # don't build kernel-vanilla-source package
+%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)
 
-%{?debug:%define with_verbose 1}
+%define                basever         4.4
+%define                postver         6
+%define                rel             1
 
-%define                have_drm        1
-%define                have_oss        1
-%define                have_sound      1
-%define                have_isa        1
-
-%define                _basever                3.2
-%define                _postver                .4
-%define                _rel                    0.1
-
-%define                _enable_debug_packages                  0
-
-%define                alt_kernel      vanilla
+%define                alt_kernel      4.4-vanilla
 
 # 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}-%{_localversion}
+# 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}
+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/v3.x/linux-%{_basever}.tar.bz2
-# Source0-md5: 7ceb61f87c097fc17509844b71268935
-%if "%{_postver}" != "%{nil}"
-Source1:       http://www.kernel.org/pub/linux/kernel/v3.x/patch-%{version}.bz2
-# Source1-md5: 02adf3e0450969dec6219ca52ff2a68a
+Source0:       http://www.kernel.org/pub/linux/kernel/v4.x/linux-%{basever}.tar.xz
+# Source0-md5: 9a78fa2eb6c68ca5a40ed5af08142599
+%if "%{postver}" != "0"
+Source1:       http://www.kernel.org/pub/linux/kernel/v4.x/patch-%{version}.xz
+# Source1-md5: d48f09bf61f2500d70f839e190dc7c5a
 %endif
 
-Source2:       kernel-vanilla-autoconf.h
-Source3:       kernel-vanilla-config.h
-Source4:       kernel-vanilla-module-build.pl
+Source2:       kernel-module-build.pl
+Source3:       kernel.make
 
 Source10:      kernel-vanilla-x86.config
 Source11:      kernel-vanilla-x86_64.config
 
-Patch0:                kernel-vanilla-small_fixes.patch
-
 URL:           http://www.kernel.org/
 BuildRequires: binutils >= 3:2.18
 BuildRequires: /sbin/depmod
 BuildRequires: gcc >= 5:3.2
-# for hostname command
-BuildRequires: net-tools
+BuildRequires: xz >= 1:4.999.7
+AutoReqProv:   no
+BuildRequires: hostname
+BuildRequires: kmod
 BuildRequires: perl-base
-BuildRequires: rpm-build >= 4.4.9-56
-BuildRequires: rpmbuild(macros) >= 1.217
-Autoreqprov:   no
+BuildRequires: rpm >= 4.5-74
+BuildRequires: rpmbuild(macros) >= 1.652
 Requires(post):        coreutils
-Requires(post):        geninitrd >= 2.57
-Requires(post):        module-init-tools >= 0.9.9
+Requires(post):        dracut
+Requires(post):        kmod >= 12-2
 Requires:      /sbin/depmod
 Requires:      coreutils
-Requires:      geninitrd >= 2.57
-Requires:      module-init-tools >= 0.9.9
-Obsoletes:     kernel%{_alt_kernel}-firmware
+Requires:      dracut
+Requires:      kmod >= 12-2
+%ifarch i686
+Requires:      cpuinfo(pae)
+%endif
+Suggests:      crda
+Suggests:      keyutils
+Suggests:      linux-firmware
+Provides:      %{name}(netfilter) = 20070806
+Provides:      %{name}(vermagic) = %{kernel_release}
+Obsoletes:     kernel%{_alt_kernel}-char-lirc-ene0100
+Obsoletes:     kernel%{_alt_kernel}-char-lirc-it87
+Obsoletes:     kernel%{_alt_kernel}-char-lirc-ite8709
+Obsoletes:     kernel%{_alt_kernel}-char-lirc-mceusb
+Obsoletes:     kernel%{_alt_kernel}-char-lirc-streamzap
 Obsoletes:     kernel%{_alt_kernel}-isdn-mISDN
+Obsoletes:     kernel-firmware
 Obsoletes:     kernel-misc-acer_acpi
 Obsoletes:     kernel-misc-fuse
 Obsoletes:     kernel-misc-uvc
@@ -77,51 +80,55 @@ Obsoletes:  kernel-net-ar81
 Obsoletes:     kernel-net-hostap
 Obsoletes:     kernel-net-ieee80211
 Obsoletes:     kernel-net-ipp2p
+Obsoletes:     kernel-net-rt61
 Obsoletes:     kernel-smp
 Conflicts:     e2fsprogs < 1.29
 Conflicts:     isdn4k-utils < 3.1pre1
 Conflicts:     jfsutils < 1.1.3
-Conflicts:     module-init-tools < 0.9.10
+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:     udev < 1:071
+Conflicts:     rpm < 4.4.2-0.2
+Conflicts:     udev < 1:081
 Conflicts:     util-linux < 2.10o
 Conflicts:     xfsprogs < 2.6.0
-ExclusiveArch: i586 i686 x86_64
+ExclusiveArch: i686 x86_64
 ExclusiveOS:   Linux
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
-%ifarch i586 i686 x86_64
+%ifarch i686 x86_64
 %define                target_arch_dir         x86
 %else
 %define                target_arch_dir         %{_target_base_arch}
 %endif
 
-%ifarch i586 i686
-%define                kernel_config           x86
-%else
-%define                kernel_config           %{_target_base_arch}
-%endif
-
 %define                defconfig       arch/%{target_arch_dir}/defconfig
 
 # No ELF objects there to strip (skips processing 27k files)
-%define                _noautostrip    .*%{_kernelsrcdir}/.*
+%define                _noautostrip    \\(.*%{_kernelsrcdir}/.*\\|.*/vmlinux.*\\)
 %define                _noautochrpath  .*%{_kernelsrcdir}/.*
+%define                _enable_debug_packages  0
 
 %define                initrd_dir      /boot
 
-%define                _kernelsrcdir   /usr/src/linux-%{version}-%{alt_kernel}
+%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}" != "%{_arch}"
-       %define CrossOpts ARCH=%{_target_base_arch} CROSS_COMPILE=%{_target_cpu}-pld-linux-
+%if "%{_target_base_arch}" != "%{_host_base_arch}"
+       %define CrossOpts ARCH=%{_target_base_arch} CROSS_COMPILE=%{_target_cpu}-tld-linux-
        %define DepMod /bin/true
 
-       %if "%{_arch}" == "x86_64" && "%{_target_base_arch}" == "i386"
+       %if "%{_host_base_arch}" == "x86_64" && "%{_target_base_arch}" == "i386"
        %define CrossOpts ARCH=%{_target_base_arch} CC="%{__cc}"
        %define DepMod /sbin/depmod
        %endif
@@ -130,39 +137,30 @@ BuildRoot:        %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
        %define CrossOpts ARCH=%{_target_base_arch} CC="%{__cc}"
        %define DepMod /sbin/depmod
 %endif
-
-%define Features %(echo "%{__features}" | sed '/^$/d')
+%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.
 
-%{Features}
-
 %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.
 
-%{Features}
-
 %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.
 
-%{Features}
-
 %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.
 
-%{Features}
-
 %package vmlinux
 Summary:       vmlinux - uncompressed kernel image
 Summary(de.UTF-8):     vmlinux - dekompressiertes Kernel Bild
@@ -187,7 +185,7 @@ Group:              Base/Kernel
 Requires(postun):      %{name} = %{epoch}:%{version}-%{release}
 Requires:      %{name} = %{epoch}:%{version}-%{release}
 Obsoletes:     kernel-smp-drm
-Autoreqprov:   no
+AutoReqProv:   no
 
 %description drm
 DRM kernel modules.
@@ -208,7 +206,7 @@ Requires:   %{name} = %{epoch}:%{version}-%{release}
 Obsoletes:     kernel-smp-pcmcia
 Conflicts:     pcmcia-cs < 3.1.21
 Conflicts:     pcmciautils < 004
-Autoreqprov:   no
+AutoReqProv:   no
 
 %description pcmcia
 PCMCIA modules.
@@ -227,7 +225,7 @@ Group:              Base/Kernel
 Requires(postun):      %{name} = %{epoch}:%{version}-%{release}
 Requires:      %{name} = %{epoch}:%{version}-%{release}
 Obsoletes:     kernel-smp-sound-alsa
-Autoreqprov:   no
+AutoReqProv:   no
 
 %description sound-alsa
 ALSA (Advanced Linux Sound Architecture) sound drivers.
@@ -246,7 +244,7 @@ Group:              Base/Kernel
 Requires(postun):      %{name} = %{epoch}:%{version}-%{release}
 Requires:      %{name} = %{epoch}:%{version}-%{release}
 Obsoletes:     kernel-smp-sound-oss
-Autoreqprov:   no
+AutoReqProv:   no
 
 %description sound-oss
 OSS (Open Sound System) drivers.
@@ -262,7 +260,8 @@ 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
-Autoreqprov:   no
+Provides:      %{name}-headers(netfilter) = 20070806
+AutoReqProv:   no
 
 %description headers
 These are the C header files for the Linux kernel, which define
@@ -284,8 +283,8 @@ Summary(de.UTF-8):  Development Dateien die beim Kernel Modul kompilationen gebra
 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.321
-Autoreqprov:   no
+Conflicts:     rpmbuild(macros) < 1.652
+AutoReqProv:   no
 
 %description module-build
 Development files from kernel source tree needed to build Linux kernel
@@ -305,7 +304,7 @@ 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
+AutoReqProv:   no
 
 %description source
 This is the source code for the Linux kernel. You can build a custom
@@ -335,7 +334,7 @@ Summary:    Kernel documentation
 Summary(de.UTF-8):     Kernel Dokumentation
 Summary(pl.UTF-8):     Dokumentacja do jądra Linuksa
 Group:         Documentation
-Autoreqprov:   no
+AutoReqProv:   no
 
 %description doc
 This is the documentation for the Linux kernel, as found in
@@ -350,181 +349,163 @@ Pakiet zawiera dokumentację do jądra Linuksa pochodzącą z katalogu
 /usr/src/linux/Documentation.
 
 %prep
-%setup -q -n linux-%{_basever}
+%setup -qc
+ln -s %{SOURCE2} kernel-module-build.pl
+ln -s %{SOURCE3} Makefile
+cd linux-%{basever}
 
-%if "%{_postver}" != "%{nil}"
-%{__bzip2} -dc %{SOURCE1} | patch -p1 -s
+%if "%{postver}" != "0"
+%{__xz} -dc %{SOURCE1} | patch -p1 -s
 %endif
 
-%patch0 -p1
-
 # Fix EXTRAVERSION in main Makefile
-sed -i 's#EXTRAVERSION =.*#EXTRAVERSION = %{_postver}-%{alt_kernel}#g' 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
-TuneUpConfigForIX86 () {
-       set -x
-%ifarch i586 i686
-       %ifarch i586
-       sed -i "s:# CONFIG_HIGHMEM4G is not set:CONFIG_HIGHMEM4G=y:" $1
-       sed -i "s:CONFIG_HIGHMEM64G=y:# CONFIG_HIGHMEM64G is not set:" $1
-       sed -i ":CONFIG_X86_PAE=y:d" $1
-       %else
-       sed -i 's:CONFIG_M586=y# CONFIG_M586 is not set::' $1
-       sed -i 's:# CONFIG_M686 is not set:CONFIG_M686=y:' $1
-       %endif
-       return 0
+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
-}
-
-BuildConfig() {
-       %{?debug:set -x}
-       # is this a special kernel we want to build?
-       Config="%{kernel_config}"
-       KernelVer=%{kernel_release}
-       echo "Building config file using $Config.conf..."
-       cat $RPM_SOURCE_DIR/kernel-vanilla-$Config.config > %{defconfig}
-       TuneUpConfigForIX86 %{defconfig}
-
-%{?debug:sed -i "s:# CONFIG_DEBUG_SLAB is not set:CONFIG_DEBUG_SLAB=y:" %{defconfig}}
-%{?debug:sed -i "s:# CONFIG_DEBUG_PREEMPT is not set:CONFIG_DEBUG_PREEMPT=y:" %{defconfig}}
-%{?debug:sed -i "s:# CONFIG_RT_DEADLOCK_DETECT is not set:CONFIG_RT_DEADLOCK_DETECT=y:" %{defconfig}}
-
-}
-
-BuildKernel() {
-       %{?debug:set -x}
-       echo "Building kernel $1 ..."
-       %{__make} %CrossOpts mrproper \
-               RCS_FIND_IGNORE='-name build-done -prune -o'
-       ln -sf %{defconfig} .config
-
-       %{__make} %CrossOpts clean \
-               RCS_FIND_IGNORE='-name build-done -prune -o'
-       %{__make} %CrossOpts include/linux/version.h \
-               %{?with_verbose:V=1}
-
-       %{__make} %CrossOpts scripts/mkcompile_h \
-               %{?with_verbose:V=1}
-
-       %{__make} %CrossOpts \
-               %{?with_verbose:V=1}
-}
-
-PreInstallKernel() {
-       Config="%{kernel_config}"
-       KernelVer=%{kernel_release}
-
-       mkdir -p $KERNEL_INSTALL_DIR/boot
-       install System.map $KERNEL_INSTALL_DIR/boot/System.map-$KernelVer
-       install arch/x86/boot/bzImage $KERNEL_INSTALL_DIR/boot/vmlinuz-$KernelVer
-       install vmlinux $KERNEL_INSTALL_DIR/boot/vmlinux-$KernelVer
-
-       %{__make} %CrossOpts modules_install firmware_install \
-               %{?with_verbose:V=1} \
-               DEPMOD=%DepMod \
-               INSTALL_MOD_PATH=$KERNEL_INSTALL_DIR \
-               INSTALL_FW_PATH=$KERNEL_INSTALL_DIR/lib/firmware/$KernelVer \
-               KERNELRELEASE=$KernelVer
-
-       # You'd probabelly want to make it somewhat different
-       install -d $KERNEL_INSTALL_DIR%{_kernelsrcdir}
-       install Module.symvers $KERNEL_INSTALL_DIR%{_kernelsrcdir}/Module.symvers-dist
-
-       echo "CHECKING DEPENDENCIES FOR KERNEL MODULES"
-       if [ %DepMod = /sbin/depmod ]; then
-               /sbin/depmod --basedir $KERNEL_INSTALL_DIR -ae -F $KERNEL_INSTALL_DIR/boot/System.map-$KernelVer -r $KernelVer || :
-       fi
-       touch $KERNEL_INSTALL_DIR/lib/modules/$KernelVer/modules.dep
-       echo "KERNEL RELEASE $KernelVer DONE"
-}
-
-KERNEL_BUILD_DIR=`pwd`
-echo "-%{_localversion}" > localversion
+%ifarch x86_64
+       cat %{SOURCE11} > %{defconfig}
+%endif
+sed -i "s:CONFIG_LOCALVERSION=\"\":CONFIG_LOCALVERSION=\"-%{localversion}\":" %{defconfig}
 
-KERNEL_INSTALL_DIR="$KERNEL_BUILD_DIR/build-done/kernel"
-rm -rf $KERNEL_INSTALL_DIR
-BuildConfig
 ln -sf %{defconfig} .config
-BuildKernel
-install -d $KERNEL_INSTALL_DIR%{_kernelsrcdir}/include/generated
-install -d $KERNEL_INSTALL_DIR%{_kernelsrcdir}/include/linux
-install include/generated/autoconf.h \
-       $KERNEL_INSTALL_DIR%{_kernelsrcdir}/include/generated/autoconf-dist.h
-install include/generated/utsrelease.h \
-       $KERNEL_INSTALL_DIR%{_kernelsrcdir}/include/generated/
-install include/linux/version.h \
-       $KERNEL_INSTALL_DIR%{_kernelsrcdir}/include/linux/
-install .config \
-       $KERNEL_INSTALL_DIR%{_kernelsrcdir}/config-dist
-PreInstallKernel
-
-cp scripts/mkcompile_h{,.save}
+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
-umask 022
+%{__make} %{MakeOpts} -j1 %{!?with_verbose:-s} modules_install firmware_install \
+       -C %{objdir} \
+       %{?with_verbose:V=1} \
+       DEPMOD=%{DepMod} \
+       INSTALL_MOD_PATH=$RPM_BUILD_ROOT \
+       INSTALL_FW_PATH=$RPM_BUILD_ROOT/lib/firmware/%{kernel_release} \
+       KERNELRELEASE=%{kernel_release}
 
-export DEPMOD=%DepMod
+install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/misc
 
-install -d $RPM_BUILD_ROOT%{_kernelsrcdir}
+# 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 COPYING $RPM_BUILD_ROOT/COPYING 2>/dev/null; then
+if cp -al %{srcdir}/COPYING $RPM_BUILD_ROOT/COPYING 2>/dev/null; then
        l=l
        rm -f $RPM_BUILD_ROOT/COPYING
 fi
 
-KERNEL_BUILD_DIR=`pwd`
+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
 
-cp -a$l $KERNEL_BUILD_DIR/build-done/kernel/* $RPM_BUILD_ROOT
+# 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
 
-if [ -e  $RPM_BUILD_ROOT/lib/modules/%{kernel_release} ] ; then
-       rm -f $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/build
-       ln -sf %{_kernelsrcdir} $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/build
-       install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/{cluster,misc}
-fi
-
-find . -maxdepth 1 ! -name "build-done" ! -name "." -exec cp -a$l "{}" "$RPM_BUILD_ROOT%{_kernelsrcdir}/" ";"
-
-cd $RPM_BUILD_ROOT%{_kernelsrcdir}
-
-%{__make} %CrossOpts mrproper archclean \
-       RCS_FIND_IGNORE='-name build-done -prune -o'
-
-cp -Rdp$l $KERNEL_BUILD_DIR/include/linux/* \
-       $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux
-
-%{__make} %CrossOpts mrproper
-install -d $RPM_BUILD_ROOT%{_kernelsrcdir}/include/generated
-install -d $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux
-install $KERNEL_BUILD_DIR/build-done/kernel%{_kernelsrcdir}/include/linux/version.h \
-       $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux
-install $KERNEL_BUILD_DIR/build-done/kernel%{_kernelsrcdir}/include/generated/autoconf-dist.h \
-       $RPM_BUILD_ROOT%{_kernelsrcdir}/include/generated
-install $KERNEL_BUILD_DIR/build-done/kernel%{_kernelsrcdir}/include/generated/utsrelease.h \
-       $RPM_BUILD_ROOT%{_kernelsrcdir}/include/generated
-install        $KERNEL_BUILD_DIR/build-done/kernel%{_kernelsrcdir}/config-dist \
-       $RPM_BUILD_ROOT%{_kernelsrcdir}
-install %{SOURCE2} $RPM_BUILD_ROOT%{_kernelsrcdir}/include/generated/autoconf.h
-install %{SOURCE3} $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/config.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
-perl %{SOURCE4} %{_kernelsrcdir} $KERNEL_BUILD_DIR
-
-# ghosted initrd
-touch $RPM_BUILD_ROOT%{initrd_dir}/initrd-%{kernel_release}.gz
-
-# 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}
+# Usage: kernel-module-build.pl $rpmdir $fileoutdir
+fileoutdir=$(pwd)
+cd $RPM_BUILD_ROOT%{_kernelsrcdir}
+%{__perl} %{topdir}/kernel-module-build.pl %{_kernelsrcdir} $fileoutdir
+cd -
 
-# remove unnecessary dir with dead symlink
-rm -rf $RPM_BUILD_ROOT/arch/i386
+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
@@ -535,35 +516,20 @@ if [ -x /sbin/new-kernel-pkg ]; then
 fi
 
 %post
-mv -f /boot/vmlinuz-%{alt_kernel} /boot/vmlinuz-%{alt_kernel}.old 2> /dev/null > /dev/null
-ln -sf vmlinuz-%{kernel_release} /boot/vmlinuz-%{alt_kernel}
-mv -f /boot/System.map-%{alt_kernel} /boot/System.map-%{alt_kernel}.old 2> /dev/null > /dev/null
-ln -sf System.map-%{kernel_release} /boot/System.map-%{alt_kernel}
-
 %depmod %{kernel_release}
 
-/sbin/geninitrd -f --initrdfs=rom %{initrd_dir}/initrd-%{kernel_release}.gz %{kernel_release}
-mv -f %{initrd_dir}/initrd-%{alt_kernel} %{initrd_dir}/initrd-%{alt_kernel}.old 2> /dev/null > /dev/null
-ln -sf initrd-%{kernel_release}.gz %{initrd_dir}/initrd-%{alt_kernel}
-
-if [ -x /sbin/new-kernel-pkg ]; then
-       if [ -f /etc/pld-release ]; then
-               title=$(sed 's/^[0-9.]\+ //' < /etc/pld-release)
-       else
-               title='PLD Linux'
+%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
-
-       title="$title %{alt_kernel}"
-
-       /sbin/new-kernel-pkg --initrdfile=%{initrd_dir}/initrd-%{kernel_release}.gz --install %{kernel_release} --banner "$title"
-elif [ -x /sbin/rc-boot ]; then
-       /sbin/rc-boot 1>&2 || :
 fi
 
-%post vmlinux
-mv -f /boot/vmlinux-%{alt_kernel} /boot/vmlinux-%{alt_kernel}.old 2> /dev/null > /dev/null
-ln -sf vmlinux-%{kernel_release} /boot/vmlinux-%{alt_kernel}
-
 %post drm
 %depmod %{kernel_release}
 
@@ -589,13 +555,13 @@ ln -sf vmlinux-%{kernel_release} /boot/vmlinux-%{alt_kernel}
 %depmod %{kernel_release}
 
 %post headers
-ln -snf %{basename:%{_kernelsrcdir}} %{_prefix}/src/linux-%{alt_kernel}
+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-%{version}-%{alt_kernel}" ]; then
-                       rm -f %{_prefix}/src/linux-%{alt_kernel}
+       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
@@ -613,84 +579,82 @@ fi
 %defattr(644,root,root,755)
 /boot/vmlinuz-%{kernel_release}
 /boot/System.map-%{kernel_release}
-%ghost %{initrd_dir}/initrd-%{kernel_release}.gz
+/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
-
-%if %{have_drm}
-%exclude /lib/modules/%{kernel_release}/kernel/drivers/gpu/drm
-%endif
-
+%exclude /lib/modules/%{kernel_release}/kernel/drivers/gpu
 /lib/modules/%{kernel_release}/kernel/fs
-# this directory will be removed after disabling rcutorture mod. in 2.6.20.
 /lib/modules/%{kernel_release}/kernel/kernel
 /lib/modules/%{kernel_release}/kernel/lib
-
-%ifarch x86_64
-/lib/modules/%{kernel_release}/kernel/mm
-%endif
-
 /lib/modules/%{kernel_release}/kernel/net
-
-%if %{have_sound}
+/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/video/cx88/cx88-alsa.ko*
-%exclude /lib/modules/%{kernel_release}/kernel/drivers/media/video/em28xx/em28xx-alsa.ko*
-%exclude /lib/modules/%{kernel_release}/kernel/drivers/media/video/saa7134/saa7134-alsa.ko*
-%endif
-
+%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
-
-%dir /lib/modules/%{kernel_release}/kernel/drivers/pcmcia
-/lib/modules/%{kernel_release}/kernel/drivers/pcmcia/pcmcia*ko*
 %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/telephony/ixj_pcmcia.ko*
-%exclude /lib/modules/%{kernel_release}/kernel/drivers/usb/gadget/g_midi.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/net/wireless/b43
 %exclude /lib/modules/%{kernel_release}/kernel/drivers/net/wireless/hostap/hostap_cs.ko*
 %exclude /lib/modules/%{kernel_release}/kernel/drivers/net/wireless/libertas/*_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
 
-%ghost /lib/modules/%{kernel_release}/modules.*
 # symlinks pointing to kernelsrcdir
 %ghost /lib/modules/%{kernel_release}/build
 %ghost /lib/modules/%{kernel_release}/source
-%dir %{_sysconfdir}/modprobe.d/%{kernel_release}
 
 %files vmlinux
 %defattr(644,root,root,755)
 /boot/vmlinux-%{kernel_release}
 
-%if %{have_drm}
 %files drm
 %defattr(644,root,root,755)
-/lib/modules/%{kernel_release}/kernel/drivers/gpu/drm
-%endif
+/lib/modules/%{kernel_release}/kernel/drivers/gpu
 
 %files pcmcia
 %defattr(644,root,root,755)
-%exclude /lib/modules/%{kernel_release}/kernel/drivers/pcmcia/pcmcia*ko*
 /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/telephony/ixj_pcmcia.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*
@@ -698,31 +662,25 @@ fi
 /lib/modules/%{kernel_release}/kernel/drivers/net/wireless/hostap/hostap_cs.ko*
 /lib/modules/%{kernel_release}/kernel/drivers/net/wireless/libertas/*_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*
 
-%if %{have_sound}
 %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*
-%if %{have_oss}
 %exclude /lib/modules/%{kernel_release}/kernel/sound/oss
-%endif
-/lib/modules/%{kernel_release}/kernel/drivers/usb/gadget/g_midi.ko*
-/lib/modules/%{kernel_release}/kernel/drivers/media/video/cx88/cx88-alsa.ko*
-/lib/modules/%{kernel_release}/kernel/drivers/media/video/em28xx/em28xx-alsa.ko*
-/lib/modules/%{kernel_release}/kernel/drivers/media/video/saa7134/saa7134-alsa.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*
 
-%if %{have_oss}
 %files sound-oss
 %defattr(644,root,root,755)
 /lib/modules/%{kernel_release}/kernel/sound/oss
-%endif
-%endif
 
-%files headers
+%files headers -f files.headers_exclude_kbuild
 %defattr(644,root,root,755)
 %dir %{_kernelsrcdir}
 %{_kernelsrcdir}/include
@@ -732,60 +690,84 @@ fi
 %dir %{_kernelsrcdir}/security
 %dir %{_kernelsrcdir}/security/selinux
 %{_kernelsrcdir}/security/selinux/include
-%{_kernelsrcdir}/config-dist
-%{_kernelsrcdir}/Module.symvers-dist
+%{_kernelsrcdir}/.config
+%{_kernelsrcdir}/Module.symvers
 
-%files module-build -f aux_files
+%files module-build -f files.mb_include_modulebuild_and_dirs
 %defattr(644,root,root,755)
-# symlinks pointint to kernelsrcdir
-%dir /lib/modules/%{kernel_release}
-/lib/modules/%{kernel_release}/build
-%{_kernelsrcdir}/Kbuild
-%{_kernelsrcdir}/localversion
+%exclude %dir %{_kernelsrcdir}/arch/um
 %{_kernelsrcdir}/arch/*/kernel/asm-offsets*
 %{_kernelsrcdir}/arch/*/kernel/sigframe*.h
 %{_kernelsrcdir}/drivers/lguest/lg.h
+%{_kernelsrcdir}/drivers/media/pci/bt8xx/bttv.h
 %{_kernelsrcdir}/kernel/bounds.c
-%dir %{_kernelsrcdir}/scripts
-%dir %{_kernelsrcdir}/scripts/kconfig
-%{_kernelsrcdir}/scripts/Kbuild.include
-%{_kernelsrcdir}/scripts/Makefile*
-%{_kernelsrcdir}/scripts/basic
+%{_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/*.gperf
+%{_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/mod
 %{_kernelsrcdir}/scripts/module-common.lds
-%{_kernelsrcdir}/scripts/setlocalversion
+%attr(755,root,root) %{_kernelsrcdir}/scripts/setlocalversion
 %{_kernelsrcdir}/scripts/*.c
-%{_kernelsrcdir}/scripts/*.sh
-%{_kernelsrcdir}/scripts/kconfig/*
-%{_kernelsrcdir}/scripts/mkcompile_h
-%dir %{_kernelsrcdir}/scripts/selinux
-%{_kernelsrcdir}/scripts/selinux/Makefile
-%dir %{_kernelsrcdir}/scripts/selinux/mdp
-%dir %{_kernelsrcdir}/scripts/selinux/genheaders
-%{_kernelsrcdir}/scripts/selinux/mdp/Makefile
-%{_kernelsrcdir}/scripts/selinux/mdp/*.c
-%{_kernelsrcdir}/scripts/selinux/genheaders/Makefile
+%{_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 %{_kernelsrcdir}
-%{_kernelsrcdir}/Documentation
+%dir %{_docdir}/%{name}-%{version}
+
+%{_docdir}/%{name}-%{version}/[!jkz]*
+%{_docdir}/%{name}-%{version}/[jkz]*.txt
+%{_docdir}/%{name}-%{version}/kbuild
+%{_docdir}/%{name}-%{version}/kdump
+%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 aux_files_exc
+%files source -f files.source_exclude_modulebuild_and_dirs
 %defattr(644,root,root,755)
-%{_kernelsrcdir}/arch/*/[!Mk]*
+%{_kernelsrcdir}/arch/*/[!Mik]*
 %{_kernelsrcdir}/arch/*/kernel/[!M]*
-%{_kernelsrcdir}/arch/ia64/kvm
+%{_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/lguest/lg.h
+%exclude %{_kernelsrcdir}/drivers/media/pci/bt8xx/bttv.h
 %{_kernelsrcdir}/block
+%{_kernelsrcdir}/certs
 %{_kernelsrcdir}/crypto
 %{_kernelsrcdir}/drivers
 %{_kernelsrcdir}/firmware
@@ -797,26 +779,37 @@ fi
 %{_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
-%{_kernelsrcdir}/tools
+%exclude %{_kernelsrcdir}/security/selinux/include
+%{_kernelsrcdir}/tools/*
 %{_kernelsrcdir}/usr
-%{_kernelsrcdir}/virt
 %{_kernelsrcdir}/COPYING
 %{_kernelsrcdir}/CREDITS
 %{_kernelsrcdir}/MAINTAINERS
 %{_kernelsrcdir}/README
 %{_kernelsrcdir}/REPORTING-BUGS
-%{_kernelsrcdir}/.mailmap
 %endif