# 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 3.8
-%define _postver .8
-%define _rel 1
-
-%define _enable_debug_packages 0
+%define rel 1
+%define basever 3.8
+%define postver .8
%define alt_kernel 3.8-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.xz
+Source0: http://www.kernel.org/pub/linux/kernel/v3.x/linux-%{basever}.tar.xz
# Source0-md5: 1c738edfc54e7c65faeb90c436104e2f
%if "%{_postver}" != "%{nil}"
Source1: http://www.kernel.org/pub/linux/kernel/v3.x/patch-%{version}.bz2
# Source1-md5: 95224572ecb1f4c7089683c1f06ef2b4
%endif
-Source2: kernel-vanilla-autoconf.h
-Source3: kernel-vanilla-config.h
-Source4: kernel-vanilla-module-build.pl
-Source5: kernel.sysconfig
-
-Source10: kernel-vanilla-x86.config
-Source11: kernel-vanilla-x86_64.config
-
-Patch0: kernel-vanilla-small_fixes.patch
+Source2: kernel.sysconfig
+Source3: kernel-module-build.pl
+Source4: kernel.make
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-build >= 4.5-24
+BuildRequires: rpmbuild(macros) >= 1.652
Requires(post): coreutils
Requires(post): geninitrd >= 12639-1
-Requires(post): virtual(module-tools)
+Requires(post): kmod >= 12-2
Requires: /sbin/depmod
Requires: coreutils
Requires: geninitrd >= 12639-1
-Requires: virtual(module-tools)
-Obsoletes: kernel%{_alt_kernel}-firmware
+Requires: kmod >= 12-2
+%ifarch i686
+Requires: cpuinfo(pae)
+%endif
+Suggests: crda
+Suggests: dracut
+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
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: 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: 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: i686 x86_64
%define target_arch_dir %{_target_base_arch}
%endif
-%ifarch 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}"
+%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
%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
Requires(postun): %{name} = %{epoch}:%{version}-%{release}
Requires: %{name} = %{epoch}:%{version}-%{release}
Obsoletes: kernel-smp-drm
-Autoreqprov: no
+AutoReqProv: no
%description drm
DRM kernel modules.
Obsoletes: kernel-smp-pcmcia
Conflicts: pcmcia-cs < 3.1.21
Conflicts: pcmciautils < 004
-Autoreqprov: no
+AutoReqProv: no
%description pcmcia
PCMCIA modules.
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.
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.
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
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
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
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
/usr/src/linux/Documentation.
%prep
-%setup -q -n linux-%{_basever}
+%setup -qc
+ln -s %{SOURCE3} kernel-module-build.pl
+ln -s %{SOURCE4} Makefile
+cd linux-%{basever}
%if "%{_postver}" != "%{nil}"
%{__bzip2} -dc %{SOURCE1} | patch -p1 -s
%endif
-%patch0 -p1
-
# Fix EXTRAVERSION in main Makefile
-sed -i 's#EXTRAVERSION =.*#EXTRAVERSION = -%{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
-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}
-
-%{?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 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
+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
+%define kernel_config kernel-%{alt_kernel}-x86.config
+%else
+%define kernel_config kernel-%{alt_kernel}-%{_target_base_arch}.config
+%endif
+echo "Building config file using %{kernel_config}..."
+cat $RPM_SOURCE_DIR/%{kernel_config} > %{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 .config \
- $KERNEL_INSTALL_DIR%{_kernelsrcdir}/config-dist
-PreInstallKernel
-
-cp scripts/mkcompile_h{,.save}
+cd -
-%install
-rm -rf $RPM_BUILD_ROOT
-umask 022
+%{__make} \
+ TARGETOBJ=%{targetobj} \
+ %{?with_verbose:V=1} \
+ oldconfig
-export DEPMOD=%DepMod
+# build kernel
+%{__make} \
+ TARGETOBJ=%{targetobj} \
+ %{?with_verbose:V=1} \
+ all
-install -d $RPM_BUILD_ROOT%{_kernelsrcdir}
-install -d $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/%{kernel_release}
+%install
+rm -rf $RPM_BUILD_ROOT
+%{__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}
-# 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
- l=l
- rm -f $RPM_BUILD_ROOT/COPYING
-fi
+install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/misc
-KERNEL_BUILD_DIR=`pwd`
+# create directories which may be missing, to simplyfy %files
+install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/kernel/{arch,sound,mm}
-cp -a$l $KERNEL_BUILD_DIR/build-done/kernel/* $RPM_BUILD_ROOT
+# 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}
-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
+# 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}
-find . -maxdepth 1 ! -name "build-done" ! -name "." -exec cp -a$l "{}" "$RPM_BUILD_ROOT%{_kernelsrcdir}/" ";"
+# ghosted initrd
+touch $RPM_BUILD_ROOT%{initrd_dir}/initrd-%{kernel_release}.img
+touch $RPM_BUILD_ROOT%{initrd_dir}/initramfs-%{kernel_release}.img
-cd $RPM_BUILD_ROOT%{_kernelsrcdir}
+%if "%{_target_base_arch}" != "%{_host_base_arch}"
+touch $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.dep
+%endif
-%{__make} %CrossOpts mrproper archclean \
- RCS_FIND_IGNORE='-name build-done -prune -o'
+# /etc/modrobe.d
+install -d $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/%{kernel_release}
-cp -Rdp$l $KERNEL_BUILD_DIR/include/linux/* \
- $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux
+install -d $RPM_BUILD_ROOT/etc/sysconfig
+install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/kernel
-%{__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/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
+# /usr/src/linux
+install -d $RPM_BUILD_ROOT%{_kernelsrcdir}
-# collect module-build files and directories
-perl %{SOURCE4} %{_kernelsrcdir} $KERNEL_BUILD_DIR
+# 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
-# ghosted initrd
-touch $RPM_BUILD_ROOT%{initrd_dir}/initrd-%{kernel_release}.img
-touch $RPM_BUILD_ROOT%{initrd_dir}/initramfs-%{kernel_release}.img
+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
-# 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}
+# 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
-# remove unnecessary dir with dead symlink
-rm -rf $RPM_BUILD_ROOT/arch/i386
+# 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
-install -d $RPM_BUILD_ROOT/etc/sysconfig
-install %{SOURCE5} $RPM_BUILD_ROOT/etc/sysconfig/kernel
+# 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
%post
%depmod %{kernel_release}
+%posttrans
[ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
if [[ "$USE_GENINITRD" != [Nn][Oo] ]]; then
# generate initrd after all dependant modules are installed
- /sbin/geninitrd -f %{initrd_dir}/initrd-%{kernel_release}.img %{kernel_release}
+ /sbin/geninitrd -f --initrdfs=initramfs %{initrd_dir}/initrd-%{kernel_release}.img %{kernel_release}
fi
# if dracut is present then generate full-featured initramfs
/sbin/dracut --force --quiet /boot/initramfs-%{kernel_release}.img %{kernel_release}
fi
-# update boot loader
+# update boot loaders
[ -x /sbin/update-grub -a -f /etc/sysconfig/grub ] && . /etc/sysconfig/grub
if [[ "$UPDATE_GRUB" != [Nn][Oo] ]]; then
/sbin/update-grub
fi
-
if [ -x /sbin/new-kernel-pkg ]; then
- /sbin/new-kernel-pkg --initrdfile=%{initrd_dir}/initrd-%{kernel_release}.img --install %{kernel_release} --banner "TLD Linux %{alt_kernel}"
+ /sbin/new-kernel-pkg --initrdfile=%{initrd_dir}/initrd-%{kernel_release}.img --install %{kernel_release} --banner "TLD Linux%{?alt_kernel: %{alt_kernel}}"
fi
-
if [ -x /sbin/rc-boot ]; then
/sbin/rc-boot 1>&2 || :
fi
%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
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/kernel
/boot/vmlinuz-%{kernel_release}
/boot/System.map-%{kernel_release}
+/boot/config-%{kernel_release}
%ghost %{initrd_dir}/initrd-%{kernel_release}.img
%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/drm
-
+%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
-
-%ifarch x86_64
-/lib/modules/%{kernel_release}/kernel/mm
-%endif
-
/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
-
-%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/isdn/hardware/avm/b1pcmcia.ko*
%exclude /lib/modules/%{kernel_release}/kernel/drivers/usb/gadget/g_midi.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/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
-%ghost /lib/modules/%{kernel_release}/modules.*
+%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
-%dir %{_sysconfdir}/modprobe.d/%{kernel_release}
%files vmlinux
%defattr(644,root,root,755)
%files drm
%defattr(644,root,root,755)
-/lib/modules/%{kernel_release}/kernel/drivers/gpu/drm
+/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/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/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*
%files sound-alsa
%exclude /lib/modules/%{kernel_release}/kernel/sound/sound*.ko*
%exclude /lib/modules/%{kernel_release}/kernel/sound/oss
/lib/modules/%{kernel_release}/kernel/drivers/usb/gadget/g_midi.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 sound-oss
%defattr(644,root,root,755)
/lib/modules/%{kernel_release}/kernel/sound/oss
-%files headers
+%files headers -f files.headers_exclude_kbuild
%defattr(644,root,root,755)
%dir %{_kernelsrcdir}
%{_kernelsrcdir}/include
%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/[^e]*.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
+%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/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/ia64/kvm
%{_kernelsrcdir}/arch/powerpc/kvm
%{_kernelsrcdir}/arch/s390/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}/crypto
%{_kernelsrcdir}/drivers
%{_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/*.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