X-Git-Url: https://git.tld-linux.org/?p=packages%2Fkernel.git;a=blobdiff_plain;f=kernel-vanilla.spec;h=9108dc2fb1a77b7e4db5b4172f0e1c8a9de43da1;hp=6ccb99f2c40978b4081b9e221e100e020e1a13e4;hb=9154d62b96d76268f75385330664118b88c107be;hpb=137b84e03f017c793d47c53d94a4ab6005a9b5a7 diff --git a/kernel-vanilla.spec b/kernel-vanilla.spec index 6ccb99f..9108dc2 100644 --- a/kernel-vanilla.spec +++ b/kernel-vanilla.spec @@ -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