SPECS (LINUX_2_6): kernel.spec - clean build code merged from kernel-vanill...

glen glen at pld-linux.org
Sun Mar 29 22:39:49 CEST 2009


Author: glen                         Date: Sun Mar 29 20:39:49 2009 GMT
Module: SPECS                         Tag: LINUX_2_6
---- Log message:
- clean build code merged from kernel-vanilla.spec
- package unpackaged files

---- Files affected:
SPECS:
   kernel.spec (1.441.2.2088 -> 1.441.2.2089) 

---- Diffs:

================================================================
Index: SPECS/kernel.spec
diff -u SPECS/kernel.spec:1.441.2.2088 SPECS/kernel.spec:1.441.2.2089
--- SPECS/kernel.spec:1.441.2.2088	Sun Mar 29 13:49:14 2009
+++ SPECS/kernel.spec	Sun Mar 29 22:39:42 2009
@@ -159,6 +159,7 @@
 Source8:	kernel-track-config-change.awk
 # not used by kernel.spec, but it's good to have it in SOURCES
 Source9:	kernel-config-sort.pl
+Source10:	kernel.make
 
 Source20:	kernel-multiarch.config
 Source21:	kernel-x86.config
@@ -431,6 +432,11 @@
 %define		initrd_dir	/boot
 %endif
 
+%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}"
@@ -724,6 +730,8 @@
 
 %prep
 %setup -qc
+ln -s %{SOURCE7} kernel-module-build.pl
+ln -s %{SOURCE10} Makefile
 cd linux-%{basever}
 
 # hack against warning in pax/grsec
@@ -950,8 +958,20 @@
 find '(' -name '*~' -o -name '*.orig' -o -name '.gitignore' ')' -print0 | xargs -0 -r -l512 rm -f
 
 %build
-cd linux-%{basever}
-PaXconfig () {
+install -d %{objdir}
+cat > %{targetobj}.mk <<'EOF'
+# generated by %{name}.spec
+KERNELSRC		:= %{_builddir}/%{name}-%{version}/linux-%{basever}
+KERNELOUTPUT	:= %{objdir}
+
+SRCARCH		:= %{target_arch_dir}
+ARCH		:= %{_target_base_arch}
+Q			:= %{!?with_verbose:@}
+MAKE_OPTS	:= %{MakeOpts}
+DEFCONFIG   := %{defconfig}
+EOF
+
+PaXconfig() {
 	set -x
 	cat <<-EOCONFIG > $1
 	%ifarch %{ix86}
@@ -1038,10 +1058,12 @@
 	set -e
 
 	Config="kernel-%{target_arch_dir}.config"
-	echo "Building config file for %{_target_cpu} using $Config et al."
+	echo >&2 "Building config file for %{_target_cpu} using $Config et al."
 
 	# prepare local and important options
 	cat <<-EOCONFIG > important.config
+		LOCALVERSION="-%{localversion}"
+
 %if 0%{?debug:1}
 		CONFIG_DEBUG_SLAB=y
 		CONFIG_DEBUG_SLAB_LEAK=y
@@ -1095,8 +1117,12 @@
 %endif
 EOCONFIG
 
+%if %{with rescuecd}
 	RescueConfig rescue.config
+%endif
+%if %{with pax_full} || %{with pax}
 	PaXconfig pax.config
+%endif
 
 	# prepare kernel-style config file from multiple config files
 	%{__awk} -v arch="all %{target_arch_dir} %{_target_base_arch} %{_target_cpu}" -f %{SOURCE6} \
@@ -1149,192 +1175,105 @@
 		%{SOURCE40} %{?0:netfilter} \
 		%{SOURCE41} %{?0:patches} \
 		%{SOURCE20} \
-		$RPM_SOURCE_DIR/$Config \
-		> %{defconfig}
+		$RPM_SOURCE_DIR/$Config
 }
 
-BuildKernel() {
-	%{?debug:set -x}
-	echo "Building kernel $1 ..."
-	install .config %{defconfig}
-	%{__make} %{MakeOpts} mrproper \
-		RCS_FIND_IGNORE='-name build-done -prune -o'
-	ln -sf %{defconfig} .config
-
-	%{__make} %{MakeOpts} clean \
-		RCS_FIND_IGNORE='-name build-done -prune -o'
-	%{__make} %{MakeOpts} include/linux/version.h \
-		%{?with_verbose:V=1}
+cd %{objdir}
+install -d arch/%{target_arch_dir}
+%if %{without myown}
+BuildConfig > %{defconfig}
+%else
+cat $RPM_SOURCE_DIR/kernel-myown.config > %{defconfig}
+%endif
+ln -sf %{defconfig} .config
+cd -
 
-	%{__make} %{MakeOpts} scripts/mkcompile_h \
-		%{?with_verbose:V=1}
+# build kernel
+%{__make} TARGETOBJ=%{targetobj} all
 
-# make does vmlinux, modules and bzImage at once
-%ifarch sparc64
-	%{__make} %{MakeOpts} image \
-		%{?with_verbose:V=1}
+%{__awk} %{?debug:-v dieOnError=1} -v infile=%{objdir}/%{defconfig} -f %{SOURCE8} %{objdir}/.config
 
-	%{__make} %{MakeOpts} modules \
-		%{?with_verbose:V=1}
-%else
-	%{__make} %{MakeOpts} \
-		%{?with_verbose:V=1}
-%endif
-}
+%install
+rm -rf $RPM_BUILD_ROOT
+%{__make} %{MakeOpts} %{!?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}
 
-PreInstallKernel() {
-	Config="%{_target_base_arch}"
-	KernelVer=%{kernel_release}
+install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/misc
 
-	mkdir -p $KERNEL_INSTALL_DIR/boot
-	install System.map $KERNEL_INSTALL_DIR/boot/System.map-$KernelVer
+# 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}
+
+# /boot
+install -d $RPM_BUILD_ROOT/boot
+cp -a %{objdir}/System.map $RPM_BUILD_ROOT/boot/System.map-%{kernel_release}
 %ifarch %{ix86} %{x8664}
-	install arch/x86/boot/bzImage $KERNEL_INSTALL_DIR/boot/vmlinuz-$KernelVer
-	install vmlinux $KERNEL_INSTALL_DIR/boot/vmlinux-$KernelVer
+cp -a %{objdir}/arch/%{target_arch_dir}/boot/bzImage $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
+install %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinux-%{kernel_release}
+%endif
+%ifarch ppc ppc64
+install %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
+install %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinux-%{kernel_release}
+%endif
+%ifarch ia64
+%{__gzip} -cfv %{objdir}/vmlinux > %{objdir}/vmlinuz
+cp -a %{objdir}/vmlinuz $RPM_BUILD_ROOT/boot/efi/vmlinuz-%{kernel_release}
+ln -sf efi/vmlinuz-%{kernel_release} $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
 %endif
 %ifarch alpha sparc sparc64
-	gzip -cfv vmlinux > vmlinuz
-	install vmlinux $KERNEL_INSTALL_DIR/boot/vmlinux-$KernelVer
-	install vmlinuz $KERNEL_INSTALL_DIR/boot/vmlinuz-$KernelVer
+	%{__gzip} -cfv %{objdir}/vmlinux > %{objdir}/vmlinuz
+	cp -a %{objdir}/vmlinuz $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
+	install %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
 %ifarch sparc
-	elftoaout arch/sparc/boot/image -o vmlinux.aout
-	install vmlinux.aout $KERNEL_INSTALL_DIR/boot/vmlinux.aout-$KernelVer
+	elftoaout %{objdir}/arch/sparc/boot/image -o %{objdir}/vmlinux.aout
+	install %{objdir}/vmlinux.aout $RPM_BUILD_ROOT/boot/vmlinux.aout-%{kernel_release}
 %endif
 %ifarch sparc64
-	elftoaout arch/sparc64/boot/image -o vmlinux.aout
-	install vmlinux.aout $KERNEL_INSTALL_DIR/boot/vmlinux.aout-$KernelVer
-%endif
-%endif
-%ifarch ppc ppc64
-	install vmlinux $KERNEL_INSTALL_DIR/boot/vmlinux-$KernelVer
-	install vmlinux $KERNEL_INSTALL_DIR/boot/vmlinuz-$KernelVer
-%endif
-%ifarch ppc-broken
-	%{__make} -f Makefile.ppclibs install \
-		DESTDIR=$KERNEL_INSTALL_DIR/boot/libs-$KernelVer
-%endif
-%ifarch ia64
-	gzip -cfv vmlinux > vmlinuz
-	install -d $KERNEL_INSTALL_DIR/boot/efi
-	install vmlinuz $KERNEL_INSTALL_DIR/boot/efi/vmlinuz-$KernelVer
-	ln -sf efi/vmlinuz-$KernelVer $KERNEL_INSTALL_DIR/boot/vmlinuz-$KernelVer
+	elftoaout %{objdir}/arch/sparc64/boot/image -o %{objdir}/vmlinux.aout
+	install %{objdir}/vmlinux.aout $RPM_BUILD_ROOT/boot/vmlinux.aout-%{kernel_release}
 %endif
 %ifarch arm
-	install arch/arm/boot/zImage $KERNEL_INSTALL_DIR/boot/vmlinuz-$KernelVer
+	install %{objdir}/arch/arm/boot/zImage $RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
 %endif
-
-	%{__make} %{MakeOpts} 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
-	# binary cache produced by depmod at runtime
-	touch $KERNEL_INSTALL_DIR/lib/modules/$KernelVer/modules.{alias,dep,symbols}.bin
-	echo "KERNEL RELEASE $KernelVer DONE"
-}
-
-KERNEL_BUILD_DIR=`pwd`
-echo "-%{localversion}" > localversion
-
-KERNEL_INSTALL_DIR="$KERNEL_BUILD_DIR/build-done/kernel"
-rm -rf $KERNEL_INSTALL_DIR
-%if %{without myown}
-BuildConfig
-%else
-cat $RPM_SOURCE_DIR/kernel-myown.config > %{defconfig}
 %endif
-ln -sf %{defconfig} .config
-install -d $KERNEL_INSTALL_DIR%{_kernelsrcdir}/include/linux
-rm -f include/linux/autoconf.h
-%{__make} %{MakeOpts} include/linux/autoconf.h
-install include/linux/autoconf.h \
-	$KERNEL_INSTALL_DIR%{_kernelsrcdir}/include/linux/autoconf-dist.h
-install .config \
-	$KERNEL_INSTALL_DIR%{_kernelsrcdir}/config-dist
-
-%{__awk} %{?debug:-v dieOnError=1} -v infile=%{defconfig} -f %{SOURCE8} .config
-
-BuildKernel
-PreInstallKernel
-
-%{__make} %{MakeOpts} include/linux/utsrelease.h
-cp include/linux/utsrelease.h{,.save}
-cp include/linux/version.h{,.save}
-cp scripts/mkcompile_h{,.save}
 
-%install
-rm -rf $RPM_BUILD_ROOT
-cd linux-%{basever}
+# ghosted initrd
+touch $RPM_BUILD_ROOT%{initrd_dir}/initrd-%{kernel_release}.gz
 
-umask 022
-export DEPMOD=%DepMod
+%if "%{_target_base_arch}" != "%{_arch}"
+touch $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/modules.dep
+%endif
 
-install -d $RPM_BUILD_ROOT%{_kernelsrcdir}
+# /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}/" ";"
-
-cd $RPM_BUILD_ROOT%{_kernelsrcdir}
-
-%{__make} %{MakeOpts} mrproper archclean \
-	RCS_FIND_IGNORE='-name build-done -prune -o'
-
-if [ -e $KERNEL_BUILD_DIR/build-done/kernel%{_kernelsrcdir}/include/linux/autoconf-dist.h ]; then
-	install $KERNEL_BUILD_DIR/build-done/kernel%{_kernelsrcdir}/include/linux/autoconf-dist.h \
-		$RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux
-	install	$KERNEL_BUILD_DIR/build-done/kernel%{_kernelsrcdir}/config-dist \
-		$RPM_BUILD_ROOT%{_kernelsrcdir}
-fi
-
-cp -Rdp$l $KERNEL_BUILD_DIR/include/linux/* \
-	$RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux
-
-%{__make} %{MakeOpts} mrproper
-mv -f include/linux/utsrelease.h{.save,}
-mv -f include/linux/version.h{.save,}
-mv -f scripts/mkcompile_h{.save,}
-install %{SOURCE3} $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/autoconf.h
-install %{SOURCE4} $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/config.h
+cp -a$l %{srcdir}/* $RPM_BUILD_ROOT%{_kernelsrcdir}
+cp -a %{objdir}/Module.symvers $RPM_BUILD_ROOT%{_kernelsrcdir}/Module.symvers-dist
+cp -aL %{objdir}/.config $RPM_BUILD_ROOT%{_kernelsrcdir}/config-dist
+cp -a %{objdir}/include/linux/autoconf.h $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/autoconf-dist.h
+cp -a %{objdir}/include/linux/{utsrelease,version}.h $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux
+cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/autoconf.h
+cp -a %{SOURCE4} $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/config.h
 
 # collect module-build files and directories
-perl %{SOURCE7} %{_kernelsrcdir} %{_builddir}/%{name}-%{version}
-
-# 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}
-
-# remove unnecessary dir with dead symlink
-rm -rf $RPM_BUILD_ROOT/arch/i386
+# Usage: kernel-module-build.pl $rpmdir $fileoutdir
+fileoutdir=$(pwd)
+cd $RPM_BUILD_ROOT%{_kernelsrcdir}
+%{__perl} %{topdir}/kernel-module-build.pl %{_kernelsrcdir} $fileoutdir
+cd -
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -1590,7 +1529,6 @@
 
 %files module-build -f aux_files
 %defattr(644,root,root,755)
-%{_kernelsrcdir}/localversion
 %ifarch ppc ppc64
 %{_kernelsrcdir}/arch/powerpc/lib/crtsavres.*
 %endif
@@ -1625,6 +1563,12 @@
 %defattr(644,root,root,755)
 %{_kernelsrcdir}/arch/*/[!Mik]*
 %{_kernelsrcdir}/arch/*/kernel/[!M]*
+%{_kernelsrcdir}/arch/ia64/ia32/[!M]*
+%{_kernelsrcdir}/arch/ia64/install.sh
+%{_kernelsrcdir}/arch/m68k/ifpsp060/[!M]*
+%{_kernelsrcdir}/arch/m68k/ifpsp060/MISC
+%{_kernelsrcdir}/arch/parisc/install.sh
+%{_kernelsrcdir}/arch/x86/ia32/[!M]*
 %{_kernelsrcdir}/arch/ia64/kvm
 %{_kernelsrcdir}/arch/powerpc/kvm
 %ifarch ppc ppc64
@@ -1638,6 +1582,7 @@
 %{_kernelsrcdir}/block
 %{_kernelsrcdir}/crypto
 %{_kernelsrcdir}/drivers
+%{_kernelsrcdir}/firmware
 %{_kernelsrcdir}/fs
 %if %{with grsecurity} && %{without rescuecd}
 %{_kernelsrcdir}/grsecurity
@@ -1650,6 +1595,7 @@
 %{_kernelsrcdir}/mm
 %{_kernelsrcdir}/net
 %{_kernelsrcdir}/virt
+%{_kernelsrcdir}/samples
 %{_kernelsrcdir}/scripts/*
 %exclude %{_kernelsrcdir}/scripts/Kbuild.include
 %exclude %{_kernelsrcdir}/scripts/Makefile*
@@ -1669,7 +1615,6 @@
 %{_kernelsrcdir}/MAINTAINERS
 %{_kernelsrcdir}/README
 %{_kernelsrcdir}/REPORTING-BUGS
-%{_kernelsrcdir}/.mailmap
 %endif
 
 %define date	%(echo `LC_ALL="C" date +"%a %b %d %Y"`)
@@ -1678,8 +1623,12 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.441.2.2089  2009/03/29 20:39:42  glen
+- clean build code merged from kernel-vanilla.spec
+- package unpackaged files
+
 Revision 1.441.2.2088  2009/03/29 11:49:14  arekm
-esfq needs fix
+- esfq needs fix
 
 Revision 1.441.2.2087  2009/03/27 18:55:13  baggins
 - mpt-fusion patch is NOT included upstream, just tiny bits of it
@@ -1688,7 +1637,8 @@
 - minimum udev: 081 (Documentation/Changes)
 
 Revision 1.441.2.2085  2009/03/24 14:56:52  arekm
-- tahoe, aufs1 need update; starts building with rpmbuild -bb kernel.spec --without tuxonice --without vserver --without apparmor --without grsecurity
+- tahoe, aufs1 need update; starts building with
+  rpmbuild -bb kernel.spec --without tuxonice --without vserver --without apparmor --without grsecurity
 
 Revision 1.441.2.2084  2009/03/24 11:30:49  arekm
 - fetch 2.6.29 tarball; 2.6.28 on LINUX_2_6_28 now
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SPECS/kernel.spec?r1=1.441.2.2088&r2=1.441.2.2089&f=u



More information about the pld-cvs-commit mailing list