From: yangsheng Date: Fri, 18 Sep 2009 17:07:28 +0000 (+0000) Subject: Branch b1_8 X-Git-Tag: v1_9_270~28 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=819652596508353164f1b29b408e20c7542328d6;hp=5e9479cd77214d1b85056edaca66ac38b784be6d Branch b1_8 b=20539 i=johann, bobijam Add support for OEL5. --- diff --git a/build/lbuild b/build/lbuild index d4409dc..d09899a 100755 --- a/build/lbuild +++ b/build/lbuild @@ -284,6 +284,9 @@ check_options() { 2.6-sles11) CANONICAL_TARGET="sles11" ;; + 2.6-oel5) + CANONICAL_TARGET="oel5" + ;; hp_pnnl-2.4) CANONICAL_TARGET="hp-pnnl-2.4" ;; diff --git a/build/lbuild-oel5 b/build/lbuild-oel5 new file mode 100644 index 0000000..5156a2e --- /dev/null +++ b/build/lbuild-oel5 @@ -0,0 +1,192 @@ +# vim:expandtab:shiftwidth=4:softtabstop=4:tabstop=4: + +# increment this if you have made a change that should force a new kernel +# to build built +#BUILD_GEN=1 +#BUILD_GEN=2 # bz19952: remove -lustre tag from kernel RPM names +BUILD_GEN=3 # bz19975 enable the building of src.rpms by default + +DEVEL_KERNEL_TYPE="devel" + +prepare_and_build_srpm() { + + pushd $TOPDIR >/dev/null + local GCC_VER="" + read GCC_VER < <($CC --version) + GCC_VER=${GCC_VER##* } + if [[ $GCC_VER = 4.3* ]]; then + # add the gcc 4.3 kernel build fix patch to it + cat <<"EOF" >> $TOPDIR/SOURCES/linux-${lnxmaj}-lustre.patch +diff -urp linux-2.6.18.rawops/Makefile linux-2.6.18.races/Makefile +--- linux-2.6.18.rawops/Makefile 2007-02-08 19:00:31.000000000 +0200 ++++ linux-2.6.18.rawops/Makefile 2007-02-14 19:23:49.000000000 +0200 +@@ -506,6 +506,9 @@ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,) + # disable pointer signed / unsigned warnings in gcc 4.0 + CFLAGS += $(call cc-option,-Wno-pointer-sign,) + ++# workaround to avoid gcc 4.3 emitting libgcc calls (see gcc bug #32044) ++CFLAGS += $(call cc-option,-fno-tree-scev-cprop,) ++ + # Default kernel image to build when no specific target is given. + # KBUILD_IMAGE may be overruled on the command line or + # set in the environment +EOF + fi + + # create the buildid + local buildid="_lustre${EXTRA_VERSION##*_lustre}" + + # edit the SPEC with our changes + sed -i -e 's/^\(%define signmodules \).*/\10/' \ + -e "s/^#% \(define buildid\).*/%\1 ${buildid}/" \ + -e '/-e $RPM_SOURCE_DIR\/kabi_whitelist_/i\ + rm -f $RPM_SOURCE_DIR/kabi_whitelist_%{_target_cpu}$Flavour' \ + -e '/_sourcedir\/kabitool -b \./a\ + cp $RPM_BUILD_ROOT/kabi_whitelist $RPM_SOURCE_DIR/kabi_whitelist_%{_target_cpu}$Flavour' \ + -e '/^# empty final patch file to facilitate testing of kernel patches/i\ +# adds Lustre patches\ +Patch99995: linux-%{kversion}-lustre.patch' \ + -e '/^# conditionally applied test patch for debugging convenience/i\ +# lustre patch\ +%patch99995 -p1\ +' \ + -e '/^%prep$/,/^# END OF PATCH APPLICATIONS$/s/kernel-%{kversion}/%{name}-%{kversion}/g' \ + -e '/find $RPM_BUILD_ROOT\/lib\/modules\/$KernelVer/a\ + cp -a fs/ext3/* $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/fs/ext3 \ + cp -a fs/ext4/* $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/fs/ext4' \ + SPECS/kernel-2.6.spec + + if $KERNEL_LUSTRE_NAMING; then + # these are all of the changes needed because we change the package names + # to kernel-lustre-*. these should all go away when we stop this insanity + sed -i -e 's/^\(Name:.*kernel\)/\1-lustre/' \ + -e '/^Provides: glibc-kernheaders = /a\ +Provides: kernel-headers = %{rpmversion}-%{release} +Obsoletes: kernel-headers +' \ + -e '/^Provides: kernel-%{_target_cpu} = %{rpmversion}-%{release}$/a\ +Provides: kernel = %{rpmversion}-%{release} +' \ + -e '/^Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{release}$/a\ +Provides: kernel-devel = %{rpmversion}-%{release} +Obsoletes: kernel-devel +' \ + -e '/^Provides: %{name}-debuginfo-common-%{_target_cpu} = %{KVERREL}$/a\ +Provides: kernel-debuginfo-common = %{KVERREL} +Obsoletes: kernel-debuginfo-common +' \ + -e '/^Provides: %{name}-debuginfo-%{_target_cpu} = %{KVERREL}$/a\ +Provides: kernel-debuginfo = %{KVERREL} +Obsoletes: kernel-debuginfo +' \ + SPECS/kernel-2.6.spec + fi + + # XXX - a building-on-Ubuntu hack + if grep -q "Ubuntu" /etc/issue; then + sed -i -e 's/^\(BuildPreReq: .*\)$/#NOU \1/g' \ + -e 's/^\(BuildRequires: .*\)$/#NOU \1/g' \ + SPECS/kernel-2.6.spec + fi + + # finally, work around RH bug 491775, if needed + if ! grep -q "cp -a asm-x86_64 \$RPM_BUILD_ROOT/lib/modules/\$KernelVer/build/include" \ + SPECS/kernel-2.6.spec; then + # XXX - i wonder if we will need to do this ad-hoc patching enough to + # formalize a patching system. let's assume not for the time + # being. + patch -s -p0 <<"EOF" || fatal 1 "Error while patching SPECS/kernel-2.6.spec" +--- SPECS/kernel-2.6.spec.dist 2009-03-23 20:30:55.000000000 -0400 ++++ SPECS/kernel-2.6.spec 2009-03-23 20:37:03.000000000 -0400 +@@ -6961,6 +6961,10 @@ + cd include + cp -a acpi config keys linux math-emu media mtd net pcmcia rdma rxrpc scsi sound video asm asm-generic $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + cp -a `readlink asm` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include ++ if [ "$Arch" = "i386" ]; then ++ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/asm-x86_64 ++ cp -a asm-x86_64/{stacktrace,k8,pci-direct}.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/asm-x86_64 ++ fi + if [ "$Arch" = "x86_64" ]; then + cp -a asm-i386 $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + fi +EOF + fi + + popd >/dev/null + + # this concept of being able to build a list of targets with a single + # lbuild is a fine idea, but in reality I think it's (very) broken. I + # don't even think the lustre.spec can handle being called with "--target + # ". It certainly can't handle the issue where each + # arch has it's own kernel location. + # but we will do the best we can and put the plumbing in place so that + # this could work when the other broken bits are fixed. + # in reality, our current use of lbuild only ever has a single arch in + # $BUILD_ARCHS + local arch + local targets="" + for arch in $BUILD_ARCHS; do + # XXX - ok. so here's a hack that needs to be fixed properly + # ppc64 was merged to ppc some time ago pre 2.6.18 + if [ $arch = ppc64 ]; then + arch=ppc + fi + targets="--target $arch $targets" + # copy our .config into the RPM build tree + (echo "# $(basearch $arch)"; cat $CONFIG_FILE) > \ + SOURCES/kernel-2.6.18-$arch.config + + # XXX - hackity hack -- until we get (or generate from the base + # config) configs for xen and debug + local f="" + for f in SOURCES/kernel-${lnxmaj}-*.config; do + grep -q "^CONFIG_SD_IOSTATS=y" $f || \ + echo "CONFIG_SD_IOSTATS=y" >> $f + done + done + + # do we need any special rpm build options + local rpmbuildopt="-bb" + if $DO_SRC; then + rpmbuildopt="-ba" + fi + # stupid Ubuntu's rpm doesn't do debuginfo properly + if [ ! -f /usr/lib/rpm/debugedit ]; then + rpmbuildopt="$rpmbuildopt --without debuginfo" + fi + + # XXX - need to figure this kabichk crap out -- it fails the build + rpmbuildopt="$rpmbuildopt --without kabichk" + + # now build it + if ! $RPMBUILD $rpmbuildopt $targets --with baseonly \ + --define "_topdir $TOPDIR" \ + $TOPDIR/SPECS/kernel-2.6.spec >&2; then + fatal 1 "Failed to build kernel RPM" + fi + +} + +devel_kernel_name() { + local lustre=${1:-false} + + if $lustre; then + echo "kernel-lustre-$DEVEL_KERNEL_TYPE" + else + echo "kernel-$DEVEL_KERNEL_TYPE" + fi + +} + +rpm_BUILD_kernel_dirname() { + local rpmsmptype="$1" + local lnxmaj="$2" + local lnxmin="$3" + local arch="$4" + + local lustre="" + if $KERNEL_LUSTRE_NAMING; then + $lustre="-lustre" + fi + echo kernel${lustre}${lnxmaj}${lnxmin}/linux-${lnxmaj}.$arch +}