Author: glen                         Date: Sat Apr 26 17:49:21 2008 GMT
Module: SPECS                         Tag: HEAD
---- Log message:
- update build to use multiarch configs

---- Files affected:
SPECS:
   kernel-xen.spec (1.4 -> 1.5) 

---- Diffs:

================================================================
Index: SPECS/kernel-xen.spec
diff -u SPECS/kernel-xen.spec:1.4 SPECS/kernel-xen.spec:1.5
--- SPECS/kernel-xen.spec:1.4   Sat Apr 26 19:14:56 2008
+++ SPECS/kernel-xen.spec       Sat Apr 26 19:49:16 2008
@@ -31,7 +31,7 @@
 
 %define                _basever        2.6.18
 %define                _postver        .8
-%define                _rel            0.6
+%define                _rel            0.7
 %define                _ver            %{nil}
 
 Summary:       The Linux kernel (the core of the Linux operating system)
@@ -50,7 +50,10 @@
 Source1:       
http://www.kernel.org/pub/linux/kernel/v2.6/patch-%{_basever}%{_postver}.bz2
 # Source1-md5: 090f582d2a0e1951d500b2e55f7df7b4
 Source2:       kernel-xen-module-build.pl
-Source3:       kernel-xen-config.h
+Source3:       kernel-config.py
+Source4:       kernel-config-update.py
+Source5:       kernel-multiarch.make
+Source6:       kernel-xen-config.h
 Source20:      kernel-xen-common.config
 Source21:      kernel-xen-i386.config
 Source22:      kernel-xen-x86_64.config
@@ -61,7 +64,7 @@
 Patch1:                kernel-PATH_MAX.patch
 URL:           http://www.kernel.org/
 BuildRequires: binutils >= 3:2.14.90.0.7
-BuildRequires: gcc >= 5:3.2
+BuildRequires: %{kgcc_package} >= 5:3.2
 BuildRequires: module-init-tools
 # for hostname command
 BuildRequires: net-tools
@@ -93,12 +96,19 @@
 ExclusiveOS:   Linux
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
+%define                target_arch_dir %{_target_base_arch}
+
 # No ELF objects there to strip (skips processing 27k files)
 %define                _noautostrip    .*%{_kernelsrcdir}/.*
 %define                _noautochrpath  .*%{_kernelsrcdir}/.*
 
 %define                initrd_dir      /boot
 
+%define                topdir          %{_builddir}/%{name}-%{version}
+%define                srcdir          %{topdir}/linux-%{_basever}
+%define                objdir          %{topdir}/%{targetobj}
+%define                targetobj       %{_target_base_arch}-gcc-%(%{kgcc} 
-dumpversion)
+
 # kernel release (used in filesystem and eventually in uname -r)
 # modules will be looked from /lib/modules/%{kernel_release}%{?smp}
 # _localversion is just that without version for "> localversion"
@@ -106,18 +116,18 @@
 %define                kernel_release %{version}_%{alt_kernel}-%{_localversion}
 %define                _kernelsrcdir   /usr/src/linux-%{version}_%{alt_kernel}
 
-%define        CommonOpts      HOSTCC="%{__cc}" HOSTCFLAGS="-Wall 
-Wstrict-prototypes %{rpmcflags} -fomit-frame-pointer" AWK="gawk"
+%define                CommonOpts      HOSTCC="%{kgcc}" HOSTCFLAGS="-Wall 
-Wstrict-prototypes %{rpmcflags} -fomit-frame-pointer" AWK="gawk"
 %if "%{_target_base_arch}" != "%{_arch}"
        %define MakeOpts %{CommonOpts} ARCH=%{_target_base_arch} 
CROSS_COMPILE=%{_target_cpu}-pld-linux-
        %define DepMod /bin/true
 
        %if "%{_arch}" == "x86_64" && "%{_target_base_arch}" == "i386"
-       %define MakeOpts %{CommonOpts} CC="%{__cc}" ARCH=%{_target_base_arch}
+       %define MakeOpts %{CommonOpts} CC="%{kgcc}" ARCH=%{_target_base_arch}
        %define DepMod /sbin/depmod
        %endif
 
 %else
-       %define MakeOpts %{CommonOpts} CC="%{__cc}"
+       %define MakeOpts %{CommonOpts} CC="%{kgcc}"
        %define DepMod /sbin/depmod
 %endif
 
@@ -320,217 +330,173 @@
 /usr/src/linux/Documentation.
 
 %prep
-%setup -q -n linux-%{_basever}
+%setup -qc
+ln -s %{SOURCE2} kernel-module-build.pl
+ln -s %{SOURCE3} kernel-config.py
+ln -s %{SOURCE4} kernel-config-update.py
+ln -s %{SOURCE5} Makefile
 
+cd linux-%{_basever}
 %if "%{_postver}" != "%{nil}"
 %{__bzip2} -dc %{SOURCE1} | %{__patch} -p1 -s
 %endif
-%if "%{_ver}" != "%{nil}"
-%{__bzip2} -dc %{SOURCE10} | %{__patch} -p1 -s
-%endif
 
 # Fix EXTRAVERSION in main Makefile
 sed -i 's#EXTRAVERSION =.*#EXTRAVERSION = %{_postver}_%{alt_kernel}#g' Makefile
 
-sed -i -e '/select INPUT/d' net/bluetooth/hidp/Kconfig
+%patch0 -p1
+%patch1 -p1
 
 # remove unwanted files after patching (if any)
 find . '(' -name '*~' -o -name '*.orig' -o -name '.gitignore' ')' -print0 | 
xargs -0 -r -l512 rm -f
 
-%patch0 -p1
-%patch1 -p1
-
 %build
-TuneUpConfigForIX86 () {
+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} %{?with_verbose:V=1}
+
+CONFIGS += %{_sourcedir}/kernel-xen-common.config
+CONFIGS += %{_sourcedir}/kernel-xen-xen.config
+CONFIGS += %{_sourcedir}/kernel-xen-netfilter.config
 %ifarch %{ix86}
-       %ifnarch i386
-               sed -i 's:CONFIG_M386=y:# CONFIG_M386 is not set:' $1
+CONFIGS += %{_sourcedir}/kernel-xen-i386.config
+%endif
+%ifarch %{x8664}
+CONFIGS += %{_sourcedir}/kernel-xen-x86_64.config
+%endif
+
+# config where we ignore timestamps
+CONFIG_NODEP += %{objdir}/.kernel-autogen.conf
+EOF
+
+# update config at spec time
+# if you have config file, add it to above Makefile
+pykconfig() {
+       set -x
+       echo '# %{name}.spec overrides'
+       echo 'LOCALVERSION="-%{_localversion}"'
+
+       %{?debug:echo '# debug options'}
+       %{?debug:echo 'DEBUG_SLAB=y'}
+       %{?debug:echo 'DEBUG_PREEMPT=y'}
+       %{?debug:echo 'RT_DEADLOCK_DETECT=y'}
+
+%ifarch %{ix86}
+       echo '# x86 tuneup'
+       %ifarch i386
+       echo 'M386=y'
+       echo 'X86_F00F_BUG=y'
+       %endif
+       %ifarch i486
+       echo 'M486=y'
+       echo 'X86_F00F_BUG=y'
+       %endif
+       %ifarch i586
+       echo 'M586=y'
+       echo 'X86_F00F_BUG=y'
        %endif
        %ifarch i686
-               sed -i 's:# CONFIG_M686 is not set:CONFIG_M686=y:' $1
+       echo 'M686=y'
        %endif
        %ifarch pentium3
-               sed -i 's:# CONFIG_MPENTIUMIII is not 
set:CONFIG_MPENTIUMIII=y:' $1
+       echo 'MPENTIUMIII=y'
        %endif
        %ifarch pentium4
-               sed -i 's:# CONFIG_MPENTIUM4 is not set:CONFIG_MPENTIUM4=y:' $1
+       echo 'MPENTIUM4=y'
        %endif
        %ifarch athlon
-               sed -i 's:# CONFIG_MK7 is not set:CONFIG_MK7=y:' $1
+       echo 'MK7=y'
+       echo 'X86_PPRO_FENCE='
+       echo 'X86_USE_3DNOW=y'
        %endif
        %ifarch i686 athlon pentium3 pentium4
-               sed -i "s:CONFIG_HIGHMEM4G=y:# CONFIG_HIGHMEM4G is not set:" $1
-               sed -i "s:# CONFIG_HIGHMEM64G is not 
set:CONFIG_HIGHMEM64G=y\nCONFIG_X86_PAE=y:" $1
-               sed -i 's:CONFIG_MATH_EMULATION=y:# CONFIG_MATH_EMULATION is 
not set:' $1
+       %if %{with pae}
+               echo 'HIGHMEM4G=n'
+               echo 'HIGHMEM64G=y'
+               echo 'X86_PAE=y'
        %endif
-       return 0
-%endif
-}
-
-rm -f .config
-BuildConfig() {
-       %{?debug:set -x}
-       Config="%{_target_base_arch}"
-       KernelVer=%{kernel_release}
-
-       echo "Building config file [using $Config.conf] ..."
-
-       # start with an empty config
-       echo "" > .config
-
-       # common opts
-       cat %{SOURCE20} > .config
-
-       # arch-specific
-       cat $RPM_SOURCE_DIR/kernel-xen-$Config.config >> .config
-
-       # fix localversion
-       echo "CONFIG_LOCALVERSION=\"-%{_localversion}\"" >> .config
-
-       TuneUpConfigForIX86 .config
-
-       # netfilter
-       cat %{SOURCE23} >> .config
-
-       # xen
-       cat %{SOURCE24} >> .config
-
-       %{?debug:sed -i "s:# CONFIG_DEBUG_SLAB is not set:CONFIG_DEBUG_SLAB=y:" 
.config}
-       %{?debug:sed -i "s:# CONFIG_DEBUG_PREEMPT is not 
set:CONFIG_DEBUG_PREEMPT=y:" .config}
-       %{?debug:sed -i "s:# CONFIG_RT_DEADLOCK_DETECT is not 
set:CONFIG_RT_DEADLOCK_DETECT=y:" .config}
-
-       install .config arch/%{_target_base_arch}/defconfig
-       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
-       install .config arch/%{_target_base_arch}/defconfig
-}
-
-BuildKernel() {
-       %{?debug:set -x}
-       echo "Building kernel $1 ..."
-       %{__make} %{MakeOpts} mrproper \
-               RCS_FIND_IGNORE='-name build-done -prune -o'
-       install arch/%{_target_base_arch}/defconfig .config
-
-       %{__make} %{MakeOpts} clean \
-               RCS_FIND_IGNORE='-name build-done -prune -o'
-
-       %{__make} %{MakeOpts} include/linux/version.h \
-               %{?with_verbose:V=1}
-       %{__make} %{MakeOpts} \
-               %{?with_verbose:V=1}
-}
-
-PreInstallKernel() {
-       Config="%{_target_base_arch}"
-       KernelVer=%{kernel_release}
-
-       mkdir -p $KERNEL_INSTALL_DIR/boot
-       install System.map $KERNEL_INSTALL_DIR/boot/System.map-$KernelVer
-       install arch/%{_target_base_arch}/boot/vmlinuz 
$KERNEL_INSTALL_DIR/boot/vmlinuz-$KernelVer
-       install vmlinux $KERNEL_INSTALL_DIR/boot/vmlinux-$KernelVer
-
-       %{__make} %{MakeOpts} modules_install \
-               %{?with_verbose:V=1} \
-               DEPMOD=%{DepMod} \
-               INSTALL_MOD_PATH=$KERNEL_INSTALL_DIR \
-               KERNELRELEASE=$KernelVer
-
-       install Module.symvers \
-               $KERNEL_INSTALL_DIR%{_kernelsrcdir}/Module.symvers-dist
-
-       echo "CHECKING DEPENDENCIES FOR KERNEL MODULES"
-       %if "%{_target_base_arch}" != "%{_arch}"
-               touch $KERNEL_INSTALL_DIR/lib/modules/$KernelVer/modules.dep
-       %else
-               /sbin/depmod --basedir $KERNEL_INSTALL_DIR -ae \
-                       -F $KERNEL_INSTALL_DIR/boot/System.map-$KernelVer -r 
$KernelVer \
-                       || echo
+       echo 'MATH_EMULATION=n'
        %endif
-       echo "KERNEL RELEASE $KernelVer DONE"
+%endif
 }
 
-KERNEL_BUILD_DIR=`pwd`
+# generate .config and kernel.conf
+pykconfig > %{objdir}/.kernel-autogen.conf
+%{__make} TARGETOBJ=%{targetobj} pykconfig
 
-# SMP KERNEL
-KERNEL_INSTALL_DIR="$KERNEL_BUILD_DIR/build-done/kernel"
-rm -rf $KERNEL_INSTALL_DIR
-BuildConfig
-#exit 0
-BuildKernel
-PreInstallKernel
+# build kernel
+%{__make} TARGETOBJ=%{targetobj} all
 
 %install
 rm -rf $RPM_BUILD_ROOT
-umask 022
-export DEPMOD=%{DepMod}
+# touch for noarch build (exclude list)
+install -d $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux
+touch 
$RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/{utsrelease,version,autoconf-dist}.h
+
+%{__make} %{MakeOpts} %{!?with_verbose:-s} modules_install \
+       -C %{objdir} \
+       %{?with_verbose:V=1} \
+       DEPMOD=%{DepMod} \
+       INSTALL_MOD_PATH=$RPM_BUILD_ROOT \
+       KERNELRELEASE=%{kernel_release}
+
+mkdir $RPM_BUILD_ROOT/lib/modules/%{kernel_release}/misc
+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}
+install %{objdir}/vmlinux $RPM_BUILD_ROOT/boot/vmlinux-%{kernel_release}
+%ifarch %{ix86} %{x8664}
+cp -a %{objdir}/arch/%{target_arch_dir}/boot/vmlinuz 
$RPM_BUILD_ROOT/boot/vmlinuz-%{kernel_release}
+%endif
+
+# for initrd
+touch $RPM_BUILD_ROOT/boot/initrd-%{kernel_release}.gz
+
+%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
+# maybe package these to -module-build, then -headers could be noarch
+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
+
 # 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
+cp -a$l %{srcdir}/* $RPM_BUILD_ROOT%{_kernelsrcdir}
 
-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}$i ] ; then
-               rm -f $RPM_BUILD_ROOT/lib/modules/%{kernel_release}$i/build
-               ln -sf %{_kernelsrcdir} \
-                       $RPM_BUILD_ROOT/lib/modules/%{kernel_release}$i/build
-               install -d 
$RPM_BUILD_ROOT/lib/modules/%{kernel_release}$i/{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 \
-       RCS_FIND_IGNORE='-name build-done -prune -o'
-
-find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
-
-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
-
-install $KERNEL_BUILD_DIR/build-done/kernel%{_kernelsrcdir}/include/linux/* \
-       $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux
-
-install $KERNEL_BUILD_DIR/build-done/kernel%{_kernelsrcdir}/config-dist \
-       .config
-%{__make} %{MakeOpts} include/linux/version.h include/linux/utsrelease.h
-mv include/linux/version.h{,.save}
-mv include/linux/utsrelease.h{,.save}
-%{__make} %{MakeOpts} mrproper
-mv include/linux/version.h{.save,}
-mv include/linux/utsrelease.h{.save,}
-#install %{SOURCE3} $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/autoconf.h
-install %{SOURCE3} $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/config.h
+install -d $RPM_BUILD_ROOT/lib/modules/%{kernel_release}
+cp -a %{SOURCE6} $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/config.h
 
 # collect module-build files and directories
-%{__perl} %{SOURCE2} %{_kernelsrcdir} $KERNEL_BUILD_DIR
-
-# ghosted initrd
-touch $RPM_BUILD_ROOT/boot/initrd-%{kernel_release}.gz
+# Usage: kernel-module-build.pl $rpmdir $fileoutdir
+fileoutdir=$(pwd)
+cd $RPM_BUILD_ROOT%{_kernelsrcdir}
+%{topdir}/kernel-module-build.pl %{_kernelsrcdir} $fileoutdir
+cd -
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %preun
-rm -f /lib/modules/%{kernel_release}/modules.*
 if [ -x /sbin/new-kernel-pkg ]; then
        /sbin/new-kernel-pkg --remove %{kernel_release}
 fi
@@ -638,6 +604,8 @@
 %exclude /lib/modules/%{kernel_release}/kernel/drivers/usb/host/sl811_cs.ko*
 %endif
 %ghost /lib/modules/%{kernel_release}/modules.*
+%ghost /lib/modules/%{kernel_release}/build
+%ghost /lib/modules/%{kernel_release}/source
 %dir %{_sysconfdir}/modprobe.d/%{kernel_release}
 
 %files vmlinux
@@ -756,6 +724,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.5  2008-04-26 17:49:16  glen
+- update build to use multiarch configs
+
 Revision 1.4  2008-04-26 17:14:56  glen
 - -PATH_MAX.patch for recent glibc
 
================================================================

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

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to