From c37afe0f10084f677d99e4c72f409e5d0030f1fb Mon Sep 17 00:00:00 2001 From: Andrew Perepechko Date: Thu, 24 Dec 2009 18:24:19 +0300 Subject: [PATCH] b=21586 further build message cleanups i=Yibin Wang i=Sheng Yang --- build/autoMakefile.am | 22 ++++++++------- build/lbuild | 76 ++++++++++++++++++++++++++++++--------------------- build/lbuild-rhel5 | 35 ++++++++++++++++++++---- build/lbuild-sles | 30 ++++++++++++++++++++ build/lbuild-sles10 | 6 ++-- build/lbuild-sles11 | 33 +++++----------------- 6 files changed, 126 insertions(+), 76 deletions(-) diff --git a/build/autoMakefile.am b/build/autoMakefile.am index 484948b..21474c7 100644 --- a/build/autoMakefile.am +++ b/build/autoMakefile.am @@ -1,13 +1,15 @@ -EXTRA_DIST := Makefile \ - autoMakefile.am.toplevel lbuild linux-merge-config.awk \ - linux-merge-modules.awk linux-rhconfig.h lmake \ - lustre-kernel-2.4.spec.in \ - suse-functions.sh suse-post.sh suse-postun.sh \ - suse-trigger-script.sh.in README.kernel-source \ - sles8-post.sh sles8-postun.sh sles8-pre.sh \ - sles8-update_INITRD_MODULES.sh \ - sles8-update_rcfile_setting.sh \ - update_oldconfig +# EXTRA_DIST is not actually taken from here but rather from +# build/autoMakefile.am.toplevel +#EXTRA_DIST := Makefile \ +# autoMakefile.am.toplevel lbuild linux-merge-config.awk \ +# linux-merge-modules.awk linux-rhconfig.h lmake \ +# lustre-kernel-2.4.spec.in \ +# suse-functions.sh suse-post.sh suse-postun.sh \ +# suse-trigger-script.sh.in README.kernel-source \ +# sles8-post.sh sles8-postun.sh sles8-pre.sh \ +# sles8-update_INITRD_MODULES.sh \ +# sles8-update_rcfile_setting.sh \ +# update_oldconfig MOSTLYCLEANFILES := @MOSTLYCLEANFILES@ diff --git a/build/lbuild b/build/lbuild index e3380ba..e2e1b6c 100755 --- a/build/lbuild +++ b/build/lbuild @@ -2,6 +2,12 @@ # vim:expandtab:shiftwidth=4:softtabstop=4:tabstop=4: +# this is an alternative FD for stdout, to be used especially when we are +# taking stdout from a function as it's return value. i.e. foo=$(bar) +# this is a workaround until a version of bash where we can put xtrace +# on a specific FD +exec 3>&1; STDOUT=3 + #set -x xtrace="+x" if [[ $SHELLOPTS = *xtrace* ]]; then @@ -106,7 +112,7 @@ cleanup() { error() { local msg="$1" - [ -n "$msg" ] && echo -e "\n${0##*/}: $msg" >&2 + [ -n "$msg" ] && echo -e "\n${0##*/}: $msg" >&3 } @@ -328,22 +334,24 @@ check_options() { fi if [ -n "$CCACHE" ]; then - which "$DISTCC" 2>/dev/null && export DISTCC RPM_BUILD_NCPUS + which "$DISTCC" &>/dev/null && export DISTCC RPM_BUILD_NCPUS - if which "$CCACHE" 2>/dev/null; then + if which "$CCACHE" &>/dev/null; then local ccache=$(which "$CCACHE") local bindir="$TOPDIR/bin" - [ -d $bindir ] || mkdir -p $bindir - if [ -d $bindir ]; then - rm ${bindir}/* > /dev/null 2>&1 - ln -s "$ccache" ${bindir}/ccache - ln -s "$ccache" ${bindir}/cc - ln -s "$ccache" ${bindir}/$CC - export PATH=$bindir:$PATH + if [ ! -d $bindir ]; then + mkdir -p $bindir || fatal 1 "error trying to create $bindir" + else + rm ${bindir}/* > /dev/null 2>&1 || true fi + ln -s "$ccache" ${bindir}/ccache + ln -s "$ccache" ${bindir}/cc + ln -s "$ccache" ${bindir}/$CC + export PATH=$bindir:$PATH export CCACHE && export CC="ccache $CC" # zero the cache so we can see how effective we are being with it + echo -n "ccache " ccache -z # get some ccache stats when we are done @@ -400,7 +408,7 @@ download_srpm() { if $DOWNLOAD; then local location="http://downloads.lustre.org/public/kernels/$target/old" echo "Downloading $location/$srpm..." - if ! wget -nv "$location/$srpm" -O "$KERNELDIR/$srpm" || + if ! wget -nv "$location/$srpm" -O "$KERNELDIR/$srpm" 2>&1 || [ ! -s "$KERNELDIR/$srpm" ]; then rm -f $KERNELDIR/$srpm fatal 1 "Could not download target $target's kernel SRPM" \ @@ -579,7 +587,7 @@ load_target() { [ -z "$RPMSMPTYPE" ] && set_rpm_smp_type # CC might have been overwriten in TARGET_FILE - if [[ $CC != ccache\ * ]] && which "$CCACHE" 2>/dev/null; then + if [[ $CC != ccache\ * ]] && which "$CCACHE" &>/dev/null; then export CCACHE && export CC="ccache $CC" fi @@ -760,7 +768,7 @@ do_patch_linux() { fatal 1 "Error adding patch $patch to full patch." } if $do_patch; then - patch -s -p1 < "$PATCH_FILE" || { + patch -s -p1 < "$PATCH_FILE" 2>&1 || { rm -f $FULL_PATCH fatal 1 "Error applying patch $patch." } @@ -797,7 +805,7 @@ build_lustre() { confoptions="$confoptions --with-linux-obj=${linuxobj}" fi - ./configure $confoptions ${CONFIGURE_FLAGS} + ./configure $confoptions ${CONFIGURE_FLAGS} 2>&1 if [ "$?" != "0" ]; then local saved_config="../config.log.$(date +%s)" cp config.log $saved_config @@ -840,14 +848,14 @@ build_lustre() { $RPMBUILD $targets $rpmbuildopt ../lustre.spec \ ${is_patchless:+--define "lustre_name lustre-client"} \ --define "_tmppath $TMPDIR" \ - --define "_topdir $TOPDIR" || \ + --define "_topdir $TOPDIR" 2>&1 || \ fatal 1 "Error building rpms for $BUILD_ARCHS." popd >/dev/null ( $(skeep_ldiskfs_rpm $TAG) ) && return pushd lustre/ldiskfs || return 255 - make dist + make dist 2>&1 if [ "$?" != "0" ]; then popd return 255 @@ -862,19 +870,17 @@ build_lustre() { < $ldiskfs_spec \ > ../lustre-ldiskfs.spec - $RPMBUILD $targets $rpmbuildopt ../lustre-ldiskfs.spec \ + if ! $RPMBUILD $targets $rpmbuildopt ../lustre-ldiskfs.spec \ --define "_tmppath /var/tmp" \ - --define "_topdir $TOPDIR" - if [ "$?" != "0" ]; then + --define "_topdir $TOPDIR" 2>&1; then popd return 255 fi if $DO_SRC; then - $RPMBUILD -bs ../lustre-ldiskfs.spec \ + if ! $RPMBUILD -bs ../lustre-ldiskfs.spec \ --define "_tmppath /var/tmp" \ - --define "_topdir $TOPDIR" - if [ "$?" != "0" ]; then + --define "_topdir $TOPDIR" 2>&1; then popd return 255 fi @@ -1015,7 +1021,7 @@ unpack_linux_devel_rpm() { [ -f "$kernelrpm" ] || return 255 [ -d $TOPDIR/reused ] || mkdir $TOPDIR/reused || return 255 - pushd $TOPDIR/reused || return 255 + pushd $TOPDIR/reused &>/dev/null || return 255 if ! rpm2cpio < "$kernelrpm" | cpio -id > /dev/null 2>&1; then return 255 @@ -1026,7 +1032,7 @@ unpack_linux_devel_rpm() { unpack_linux_devel_rpm-$DISTRO "$kernelrpm" fi - popd + popd &>/dev/null find_linux_devel_paths $TOPDIR/reused @@ -1306,9 +1312,14 @@ find_rpm() { } build_kernel_with_srpm() { + local outfd=$1 + + if [ -z "$outfd" ] || [ $outfd = 1 ]; then + fatal 1 "You must supply a file descriptor to ${FUNCNAME[0]} and it cannot be 1" + fi # need to generate the patch for this target - do_patch_linux false >&2 # sets global $FULL_PATCH (yeah, yuck) + do_patch_linux false >&${outfd} # sets global $FULL_PATCH (yeah, yuck) # get an md5sum of the kernel patch + config for reuse check # XXX really, there needs to be a signature and a CONFIG_FILE per arch @@ -1323,7 +1334,7 @@ build_kernel_with_srpm() { # XXX - hrm. i'm not convinced this doesn't belong in the reuse "library" local CAN_LINK_FOR_REUSE=false touch $REUSEBUILD/$$ - if cp -al $REUSEBUILD/$$ $TOPDIR/; then + if cp -al $REUSEBUILD/$$ $TOPDIR/ 2>/dev/null; then CAN_LINK_FOR_REUSE=true fi rm $REUSEBUILD/$$ @@ -1335,11 +1346,12 @@ build_kernel_with_srpm() { "$REUSE_SIGNATURE"; then # nothing cached, build from scratch if [ ! -r "$KERNELDIR/$KERNEL_SRPM" ]; then - download_srpm "$CANONICAL_TARGET" "$KERNEL_SRPM" >&2 + echo "Downloading kernel SRPM" + download_srpm "$CANONICAL_TARGET" "$KERNEL_SRPM" >&${outfd} fi if ! rpm -ivh $KERNELDIR/$KERNEL_SRPM \ - --define "_topdir $TOPDIR" >&2; then + --define "_topdir $TOPDIR" >&${outfd} 2>&1; then # should we clean this up or leave it for analysis? #rm -rf $RPMTOPDIR fatal 1 "Error installing kernel SRPM." @@ -1347,9 +1359,11 @@ build_kernel_with_srpm() { # put the Lustre kernel patch into the RPM build tree cp $FULL_PATCH $TOPDIR/SOURCES/linux-${lnxmaj}-lustre.patch - prepare_and_build_srpm >&2 + prepare_and_build_srpm >&${outfd} || + fatal 1 "failed to prepare_and_build_srpm" # store the resulting kernel RPM build tree for future use + echo "caching the built kenel for future builds..." >&${outfd} if ! store_for_reuse "$TOPDIR/{SPECS,SOURCES,BUILD,SRPMS,RPMS}" \ "kernel" "$REUSEBUILD" "$REUSE_SIGNATURE" \ "$CAN_LINK_FOR_REUSE"; then @@ -1575,7 +1589,7 @@ build_with_srpm() { if ! $PATCHLESS; then local kernel_extra_version - if ! kernel_extra_version=$(build_kernel_with_srpm); then + if ! kernel_extra_version=$(build_kernel_with_srpm ${STDOUT}); then fatal 1 "Failed to build the kernel from it's SRPM" fi @@ -1741,7 +1755,7 @@ backtrace() { seen_list=$(new_list) trap 'set +x; echo "An unexpected error has occurred at ${BASH_SOURCE[0]##*/}:$((LINENO-1)). -Unfortunately the above line number in the fail may or may not be correct, +Unfortunately the above line number in the message may or may not be correct, but details have been send to the lbuild maintainer. Attempting to continue."; (echo "Untrapped error" echo # have we seen this one diff --git a/build/lbuild-rhel5 b/build/lbuild-rhel5 index 5156a2e..bcf9f4a 100644 --- a/build/lbuild-rhel5 +++ b/build/lbuild-rhel5 @@ -54,7 +54,8 @@ Patch99995: linux-%{kversion}-lustre.patch' \ -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 + SPECS/kernel-2.6.spec 2>&1 || \ + fatal 1 "Error while editing SPECS/kernel-2.6.spec" if $KERNEL_LUSTRE_NAMING; then # these are all of the changes needed because we change the package names @@ -79,14 +80,17 @@ Obsoletes: kernel-debuginfo-common Provides: kernel-debuginfo = %{KVERREL} Obsoletes: kernel-debuginfo ' \ - SPECS/kernel-2.6.spec + SPECS/kernel-2.6.sp 2>&1 || \ + fatal 1 "Error while editing SPECS/kernel-2.6.spec"ec 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 + -e 's/sha512hmac/md5sum/g' \ + SPECS/kernel-2.6.spec 2>&1 || \ + fatal 1 "Error while editing SPECS/kernel-2.6.spec" fi # finally, work around RH bug 491775, if needed @@ -95,7 +99,8 @@ Obsoletes: kernel-debuginfo # 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" + patch -s -p0 <<"EOF" 2>&1 || \ + 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 @@ @@ -161,10 +166,12 @@ EOF # 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" + $TOPDIR/SPECS/kernel-2.6.spec 2>&1; then + return 1 fi + return 0 + } devel_kernel_name() { @@ -190,3 +197,19 @@ rpm_BUILD_kernel_dirname() { fi echo kernel${lustre}${lnxmaj}${lnxmin}/linux-${lnxmaj}.$arch } + +find_linux_devel_paths() { + local path="$1" + + LINUX=$path/usr/src/kernels/${lnxmaj}${lnxmin}-${lnxrel}-${TARGET_ARCH} + # RHEL doesn't have the -obj tree + LINUXOBJ="" + # XXX - i don't think we need this any more + #LINUXRELEASE=$(find_linux_release "$LINUX") + #if [ -z "$LINUXRELEASE" ]; then + # echo "Failed to find linux release in $LINUX" + # return 255 + #fi + + return 0 +} diff --git a/build/lbuild-sles b/build/lbuild-sles index e1ede26..6a76cb0 100644 --- a/build/lbuild-sles +++ b/build/lbuild-sles @@ -82,3 +82,33 @@ rpm_BUILD_kernel_dirname() { fi echo kernel${lustre}-${rpmsmptype}-${lnxmaj}${lnxmin}/linux-${lnxmaj} } + +find_linux_devel_paths() { + local path="$1" + + LINUX=$path/usr/src/linux-${lnxmaj}${lnxmin}-${lnxrel} + + local objects=$TARGET_ARCH/$RPMSMPTYPE + if [ -d $path/usr/src/linux-${lnxmaj}${lnxmin}-${lnxrel}-obj/powerpc ]; then + objects="powerpc/$TARGET_ARCH" + elif [ $TARGET_ARCH == 'i686' ]; then + objects="i386/$RPMSMPTYPE" + fi + + LINUXOBJ=$path/usr/src/linux-${lnxmaj}${lnxmin}-${lnxrel}-obj/$objects + LINUXRELEASE=$(find_linux_release "$LINUXOBJ") + + if [ -z "$LINUXRELEASE" ]; then + echo "Failed to find linux release in $LINUXOBJ" + return 255 + fi + + return 0 +} + +mcpu_rpmbuild_opt() { + + echo "--define \'jobs $(/usr/bin/getconf _NPROCESSORS_ONLN)\'" + return 0 +} + diff --git a/build/lbuild-sles10 b/build/lbuild-sles10 index 5da0032..61dc630e 100644 --- a/build/lbuild-sles10 +++ b/build/lbuild-sles10 @@ -21,7 +21,7 @@ cp %_sourcedir/linux-2.6.16-lustre.patch %_builddir/%{name}-%{version}/lustre.p ! grep -q lustre.patch %_sourcedir/series.conf && echo -e "\\n\\tlustre.patch" >> %_sourcedir/series.conf' \ -e "/flavor=\${config/a\ [ \"\$flavor\" == \"$RPMSMPTYPE\" ] || continue" \ - SOURCES/kernel-${spec}.spec + SOURCES/kernel-${spec}.spec || fatal 1 "Error while editing SOURCES/kernel-${spec}.spec" if $KERNEL_LUSTRE_NAMING; then # these are all of the changes needed because we change the package names @@ -32,7 +32,7 @@ Provides: kernel-$spec = %{version}-%{release} " \ -e 's/\(.*\)\([^#].*\)fookernel-source/\1\2kernel-lustre-source/g' \ -e '/^%build/,/^%changelog/s/kernel-\({*\)source/kernel-\1lustre-source/g' \ - SOURCES/kernel-${spec}.spec + SOURCES/kernel-${spec}.spec || fatal 1 "Error while editing SOURCES/kernel-${spec}.spec" fi # XXX - a building-on-Ubuntu hack @@ -42,7 +42,7 @@ curl ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.17/2.6.17 -e 's/^\(BuildRequires: .*\)$/#NOU \1/g' \ -e 's/%(\(chmod .*\))$/%(bash -c "\1")/' \ -e 's/ -a 109//' \ - SOURCES/kernel-${spec}.spec + SOURCES/kernel-${spec}.spec || fatal 1 "Error while editing SOURCES/kernel-${spec}.spec" fi done } diff --git a/build/lbuild-sles11 b/build/lbuild-sles11 index 5ed4279..3fc997d 100644 --- a/build/lbuild-sles11 +++ b/build/lbuild-sles11 @@ -25,7 +25,8 @@ cp %_sourcedir/linux-2.6.27-lustre.patch %_builddir/%{name}-%{version}/lustre.p -e "/flavor=\${config/a\ [ \"\$flavor\" == \"$RPMSMPTYPE\" ] || continue" \ -e "s/^\(BuildRequires: kernel-dummy\)/# \1/" \ - SOURCES/kernel-${spec}.spec + SOURCES/kernel-${spec}.spec || \ + fatal 1 "Error while editing SOURCES/kernel-${spec}.spec" if $KERNEL_LUSTRE_NAMING; then # these are all of the changes needed because we change the package names @@ -43,7 +44,8 @@ Provides: kernel-$spec = %{version}-%{release} -e "s/^\(Provides:.*kernel-\)\(.*\)/\1lustre-\2/" \ -e "s/^\(Requires:.*kernel-\)\(.*\)/\1lustre-\2/" \ -e "s/^\(Supplements:.*kernel-\)\(.*\)/\1lustre-\2/" \ - SOURCES/kernel-${spec}.spec + SOURCES/kernel-${spec}.spec || \ + fatal 1 "Error while editing SOURCES/kernel-${spec}.spec" fi # XXX - a building-on-Ubuntu hack @@ -53,8 +55,9 @@ curl ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.17/2.6.17 -e 's/^\(BuildRequires: .*\)$/#NOU \1/g' \ -e 's/%(\(chmod .*\))$/%(bash -c "\1")/' \ -e 's/ -a 109//' \ - SOURCES/kernel-${spec}.spec - fi + SOURCES/kernel-${spec}.spec || \ + fatal 1 "Error while editing SOURCES/kernel-${spec}.spec" + fi done } @@ -80,25 +83,3 @@ unpack_linux_devel_rpm-sles11() { fi } - -# this is actually valid for sles10 and sles11 but let's test it on sles11 only, first -find_linux_devel_paths() { - local path="$1" - - LINUX=$path/usr/src/linux-${lnxmaj}${lnxmin}${delimiter}${lnxrel##${lnxmin#.}-} - - local objects=$TARGET_ARCH/$RPMSMPTYPE - if [ -d $path/usr/src/linux-${lnxmaj}${lnxmin}${delimiter}${lnxrel##${lnxmin#.}-}-obj/powerpc ]; then - objects="powerpc/$TARGET_ARCH" - elif [ $TARGET_ARCH == 'i686' ]; then - objects="i386/$RPMSMPTYPE" - fi - - LINUXOBJ=$path/usr/src/linux-${lnxmaj}${lnxmin}${delimiter}${lnxrel##${lnxmin#.}-}-obj/$objects - - LINUXRELEASE=$(find_linux_release ${LINUXOBJ:-$LINUX}) - if [ -z "$LINUXRELEASE" ]; then - echo "Failed to find linux release in ${LINUXOBJ:-$LINUX}" - RC=255 - fi -} -- 1.8.3.1