X-Git-Url: https://git.tld-linux.org/?p=packages%2Fkernel.git;a=blobdiff_plain;f=kernel-vanilla.spec;h=66e039debf5c6358baf515ee2c00e7f7436aaf1f;hp=ff07683c7347ea92f33bad7ab6d32357004b6585;hb=3248229d47e64e98ffcad4bcf70d3096327d8a3c;hpb=bbc2912ae0166631f26d2d1659ce89adb2cddb6e diff --git a/kernel-vanilla.spec b/kernel-vanilla.spec index ff07683..66e039d 100644 --- a/kernel-vanilla.spec +++ b/kernel-vanilla.spec @@ -1,69 +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.3 +%define postver 0 +%define rel 1 -%define _basever 3.2 -%define _postver .6 -%define _rel 1 - -%define _enable_debug_packages 0 - -%define alt_kernel vanilla +%define alt_kernel 4.3-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: 2bd4679899df503177a3b61ae2068749 +Source0: http://www.kernel.org/pub/linux/kernel/v4.x/linux-%{basever}.tar.xz +# Source0-md5: 58b35794eee3b6d52ce7be39357801e7 +%if "%{postver}" != "0" +Source1: http://www.kernel.org/pub/linux/kernel/v4.x/patch-%{version}.xz +# Source1-md5: 408f9975969da326b5804a04dbf0d4de %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 >= 10000-3 -Requires(post): virtual(module-tools) +Requires(post): dracut +Requires(post): kmod >= 12-2 Requires: /sbin/depmod Requires: coreutils -Requires: geninitrd >= 10000-3 -Requires: virtual(module-tools) -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 @@ -72,50 +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: 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 @@ -124,6 +137,7 @@ BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %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 @@ -171,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. @@ -192,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. @@ -211,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. @@ -230,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. @@ -246,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 @@ -268,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 @@ -289,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 @@ -319,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 @@ -334,184 +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 = -%{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 - echo "# CONFIG_OLPC is not set" >> $1 - echo "CONFIG_CRYPTO_DEV_HIFN_795X=m" >> $1 - echo "# CONFIG_CRYPTO_DEV_HIFN_795X_RNG is not set" >> $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 $KERNEL_BUILD_DIR/build-done/kernel/* $RPM_BUILD_ROOT - -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}/" ";" +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 -cd $RPM_BUILD_ROOT%{_kernelsrcdir} +# 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 -%{__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 @@ -522,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} @@ -576,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 @@ -600,61 +579,64 @@ 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 - -%exclude /lib/modules/%{kernel_release}/kernel/drivers/gpu/drm - +%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 - +/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* - +%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 -%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) @@ -662,16 +644,16 @@ fi %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/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* @@ -679,6 +661,7 @@ 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* %files sound-alsa @@ -688,16 +671,15 @@ fi %exclude /lib/modules/%{kernel_release}/kernel/sound/ac97_bus.ko* %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/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* %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 @@ -707,59 +689,81 @@ 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/[^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/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}/crypto %{_kernelsrcdir}/drivers @@ -772,26 +776,36 @@ 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/*.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