# 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
+ xtrace="-x"
+fi
shopt -s extdebug
# include the exit_traps library
# not in the target file any more
CONFIG=
+# build the lustre-tests rpm?
+LUSTRE_TESTS=true
+
DATE=$(date)
USE_DATESTAMP=1
error() {
local msg="$1"
- [ -n "$msg" ] && echo -e "\n${0##*/}: $msg" >&2
+ [ -n "$msg" ] && echo -e "\n${0##*/}: $msg" >&3
}
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
+ push_exit_trap '[ -n "$CCACHE" ] && ccache -s' "ccache_summary"
+ # should remove the ccache trap if lbuild is interrupted
+ trap 'echo "Received an INT TERM or HUP signal, terminating."; delete_exit_trap "ccache_summary"; exit 1' INT TERM HUP
fi
fi
[ -z "$DISTRO" ] && DISTRO=$(autodetect_distro)
+
+ return 0
+
}
# autodetect used Distro
sed -e 's/^[^0-9.]*//g' | sed -e 's/[ \.].*//')
fi
if [ -z "$name" -o -z "$version" ]; then
- fatal 1 "I don't know how to determine distro type/version.\n" \
- "Either update autodetect_distro() or use the --distro argument"
+ fatal 1 "I don't know how to determine distro type/version.\nEither update autodetect_distro() or use the --distro argument"
fi
echo ${name}${version}
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" \
- "$srpm from $location."
+ fatal 1 "Could not download target $target's kernel SRPM $srpm from $location."
fi
else
fatal 1 "$srpm not found in directory $KERNELDIR."
return 1
fi
- if ! $(is_downloading) && [ -r "$to" ] && [ -s "$to" ]; then
+ if ! is_downloading && [ -r "$to" ] && [ -s "$to" ]; then
return 0
fi
return 1
}
- if $force || ! $(is_downloaded); then
- if $(is_downloading); then
+ if $force || ! is_downloaded; then
+ if is_downloading; then
echo "Somebody else is downloading $from..."
- while $(is_downloading); do
+ while is_downloading; do
echo "Waiting for $to to finish downloading"
sleep 60
done
- if $(is_downloaded); then
+ if is_downloaded; then
return 0
else
echo "The download we were waiting for seems to have been aborted"
daily=${OFED_VERSION##$Mmv-}
location="http://www.openfabrics.org/downloads/OFED/ofed-${Mmv}-daily/"
# find the filename for the version for the date specified
- OFED_VERSION=$(curl -s "$location" | sed -nre "/${daily}-/s/.*href=\"OFED-([0-9]+\.[0-9]+-${daily}-[0-9]{4,4}).tgz.*$/\1/p" | tail -1)
+ OFED_VERSION=$(curl -s "$location" | sed -nre "/${daily}-/s/.*href=\"OFED-(${Mmv//./\\.}-${daily}-[0-9]{4,4}).tgz.*$/\1/p" | tail -1)
if [ -z "$OFED_VERSION" ]; then
fatal 1 "Could not determine the filename of the OFED snapshot for ${daily}"
fi
download_rdac() {
local force="${1:-false}"
- local location="http://downloads.lustre.org/public/RDAC/"
+ local location="http://downloads.lustre.org/public/RDAC/"
if [ -z "$RDAC_VERSION" -o "$RDAC_VERSION" = "inkernel" ]; then
- return 0
+ return 0
fi
local file="rdac-LINUX-${RDAC_VERSION}-source.tar.gz"
download_mptlinux() {
local force="${1:-false}"
- local location="http://downloads.lustre.org/public/MPTLINUX/"
+ local location="http://downloads.lustre.org/public/MPTLINUX/"
if [ -z "$MPTLINUX_VERSION" -o "$MPTLINUX_VERSION" = "inkernel" ]; then
- return 0
+ return 0
fi
file="MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip"
[ -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
for patchesdir in "$EXTERNAL_PATCHES" "$TOPDIR/lustre/lustre/kernel_patches"; do
[ -r "$patchesdir/series/$series" ] && continue 2
done
- fatal 1 "Target $TARGET's series $SERIES could not be" \
- "found.\nSearched:\n\t$EXTERNAL_PATCHES/series\n" \
- "\t$TOPDIR/lustre/lustre/kernel_patches/series."
+ fatal 1 "Target $TARGET's series $SERIES could not be found.\nSearched:\n\t$EXTERNAL_PATCHES/series\n\t$TOPDIR/lustre/lustre/kernel_patches/series."
done
fi
PRISTINE_EXTRA_VERSION=$EXTRA_VERSION
if ! $PATCHLESS && [ ! -f "$CONFIG_FILE" ]; then
- fatal 1 "Config file for target $TARGET missing from" \
- "$TOPDIR/lustre/lustre/kernel_patches/kernel_configs/."
+ fatal 1 "Config file for target $TARGET missing from $TOPDIR/lustre/lustre/kernel_patches/kernel_configs/."
fi
if [ "$EXTRA_VERSION_save" ]; then
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."
}
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
echo NORPM mode. Only compiling.
fi
- # convert the $PATCHLESS boolean to an empty/no-empty boolean
+ # convert the $PATCHLESS boolean to an empty/not-empty boolean
# as silly as this seems, it makes the syntax of the rpmbuild command
- # simpler and not need an eval to deal with the quotes in the quotes
+ # simpler and not need an eval to deal with the quotes in the quotes
local is_patchless=""
if $PATCHLESS; then
is_patchless="yes"
fi
+
+ # ditto for the lustre-tests boolean
+ local lustre_tests=""
+ if ! $LUSTRE_TESTS; then
+ lustre_tests="no"
+ fi
+
$RPMBUILD $targets $rpmbuildopt ../lustre.spec \
${is_patchless:+--define "lustre_name lustre-client"} \
+ ${lustre_tests:+--define "build_lustre_tests 0"} \
+ --define "configure_args $confoptions ${CONFIGURE_FLAGS}" \
--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
< $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
for arch in $TARGET_ARCHS_ALL; do
local found_rpm="" rpm
for rpm in ${pathtorpms}/${arch}/*.rpm; do
- if rpm -q --provides -p "$rpm" | grep -q "kernel${prefix} = $wanted_kernel"; then
+ if rpm -q --provides -p "$rpm" 2>&3 | grep -q "kernel${prefix} = $wanted_kernel" 2>&3; then
+
found_rpm="$rpm"
ret=0
break
[ -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
unpack_linux_devel_rpm-$DISTRO "$kernelrpm"
fi
- popd
+ popd &>/dev/null
find_linux_devel_paths $TOPDIR/reused
fi
local linuxrelease=$(find_linux_release "$linux")
- $RPMBUILD $BUILD_TYPE --define 'build_kernel_ib 1' --define 'build_kernel_ib_devel 1' \
- --define "_topdir ${TOPDIR}" --target ${TARGET_ARCH} \
- --define "KVERSION ${linuxrelease}" \
- --define "$K_SRC ${linux}" \
- --define "LIB_MOD_DIR /lib/modules/${linuxrelease}/updates" \
- ${OFA_KERNEL_RELEASE:+--define "_release $OFA_KERNEL_RELEASE"} \
- --define "configure_options --without-quilt $OFED_CORE $OFED_HARDWARE $OFED_ISCSI" \
- ${SOURCE}
-
- if [ ${PIPESTATUS[0]} != 0 ]; then
+ if ! $RPMBUILD $BUILD_TYPE --define 'build_kernel_ib 1' --define 'build_kernel_ib_devel 1' \
+ --define "_topdir ${TOPDIR}" --target ${TARGET_ARCH} \
+ --define "KVERSION ${linuxrelease}" \
+ --define "$K_SRC ${linux}" \
+ --define "LIB_MOD_DIR /lib/modules/${linuxrelease}/updates" \
+ ${OFA_KERNEL_RELEASE:+--define "_release $OFA_KERNEL_RELEASE"} \
+ --define "configure_options --without-quilt $OFED_CORE $OFED_HARDWARE $OFED_ISCSI" \
+ ${SOURCE} 2>&1; then
fatal 1 "Error building kernel-ib"
fi
error "Failed to copy \"$article\" to \"$location\" in store_for_reuse()"
# rename the cache location so that it's not cached
# product, but is around for analysis
- mv "$location"{,-bad-$(date +%s)} ||
+ mv "$location"{,-bad-$(date +%s)} ||
error "failed to clean up a failed cache attempt" \
"in \"$location\" -- manual cleanup will be" \
"necessary"
if [ ! -f "$REUSEBUILD/$signature/$module/.lastused" ]; then
# the .lastused flag is populated at the end of the caching to
# signal that the caching was completed. if that flag is not
- # there, then the cache is invalid (and should be removed in fact)
- mv "$REUSEBUILD/$signature/$module"{,-bad-$(date +%s)} ||
- fatal 1 "failed to clean up a bad cache in location" \
- "\"$REUSEBUILD/$signature/$module\" -- manual cleanup" \
- "will be necessary"
+ # there, then the cache is invalid (and should be removed in fact)
+ mv "$REUSEBUILD/$signature/$module"{,-bad-$(date +%s)} ||
+ fatal 1 "failed to clean up a bad cache in location $REUSEBUILD/$signature/$module\" -- manual cleanup will be necessary"
return 1
fi
find $dir -type f |
xargs ln -t $dest/RPMS/${dir##*/} -s
done
-
+
fi
return 0
else
case "$match_type" in
provides)
# match is any valid ERE (i.e. given to egrep) match
- if rpm -q --provides -p "$file" | egrep -q "$match"; then
+ if rpm -q --provides -p "$file" 2>&3 | egrep -q "$match"; then
echo "$file"
popd >/dev/null
return 0
}
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
# 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/$$
"$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."
# 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
if $NORPM; then
rpmbuildopt='-bc'
echo NORPM mode. Only compiling.
- fi
+ fi
# if only we could just rebuild the src.rpm. but the included spec
# is a real pig's breakfast. just check out the patch we need to
--define "_tmppath /var/tmp" \
--define "_topdir ${TOPDIR}" \
--define "kernel_obj $linux" \
- ${TOPDIR}/SPECS/mptlinux.spec; then
+ ${TOPDIR}/SPECS/mptlinux.spec 2>&1; then
return 1
fi
if $DO_SRC; then
--define "_tmppath /var/tmp" \
--define "_topdir ${TOPDIR}" \
--define "kernel_obj $linux" \
- ${TOPDIR}/SPECS/mptlinux.spec; then
+ ${TOPDIR}/SPECS/mptlinux.spec 2>&1; then
return 1
fi
fi
--define "_tmppath /var/tmp" \
--define "_topdir ${TOPDIR}" \
--define "kernel_obj $linux" \
- ${TOPDIR}/SPECS/rdac.spec; then
+ ${TOPDIR}/SPECS/rdac.spec 2>&1; then
return 1
fi
if $DO_SRC; then
--define "_tmppath /var/tmp" \
--define "_topdir ${TOPDIR}" \
--define "kernel_obj $linux" \
- ${TOPDIR}/SPECS/rdac.spec; then
+ ${TOPDIR}/SPECS/rdac.spec 2>&1; then
return 1
fi
fi
cat "${linux}/include/linux/autoconf.h"; } |
md5sum | cut -d" " -f1)
if ! $REUSERPM || ! reuse ofed "$TOPDIR" "$CAN_LINK_FOR_REUSE" \
- "$REUSE_SIGNATURE"; then
- # stash away the existing built articles for a moment
- mkdir bak
- mv {BUILD,{S,}RPMS,S{OURCE,PEC}S} bak
- function mv_back {
- pushd bak
- find . | cpio -pudlm ..
- popd
- rm -rf bak
- }
- create_rpmbuild_dirs
- # build it
+ "$REUSE_SIGNATURE"; then
+ # stash away the existing built articles for a moment
+ mkdir bak
+ mv {BUILD,{S,}RPMS,S{OURCE,PEC}S} bak
+ function mv_back {
+ pushd bak
+ find . | cpio -pudlm ..
+ popd
+ rm -rf bak
+ }
+ create_rpmbuild_dirs
+ # build it
build_kernel_ib "${linux}"
- if ! store_for_reuse "$TOPDIR/{SPECS,SOURCES,BUILD,SRPMS,RPMS}" \
- "ofed" "$REUSEBUILD" "$REUSE_SIGNATURE" \
- "$CAN_LINK_FOR_REUSE"; then
- error "Failed to store OFED RPMS for reuse"
- mv_back
- return 1
- fi
- # put the stuff we stashed away back
+ if ! store_for_reuse "$TOPDIR/{SPECS,SOURCES,BUILD,SRPMS,RPMS}" \
+ "ofed" "$REUSEBUILD" "$REUSE_SIGNATURE" \
+ "$CAN_LINK_FOR_REUSE"; then
+ error "Failed to store OFED RPMS for reuse"
mv_back
+ return 1
fi
+ # put the stuff we stashed away back
+ mv_back
+ fi
- pushd "$TOPDIR" >/dev/null
- rm -rf kernel-ib-devel
- mkdir kernel-ib-devel
- cd kernel-ib-devel
- # the actual ofed RPMs don't have the -rc$n or -$date string appened that
- # might be present on the file
- local linuxrelease=$(find_linux_release "$linux")
- ofed_version=$(echo $ofed_version |
- sed -re 's/-(20[0-9]{6,6}-[0-9]{4,4}|rc[0-9]*)$//')
- local rpm=$(ls $TOPDIR/RPMS/*/kernel-ib-devel-${ofed_version}-${linuxrelease//-/_}.*.rpm)
- rpm2cpio -itv < $rpm | cpio -id
- CONFIGURE_FLAGS="--with-o2ib=$(pwd)/usr/src/ofa_kernel ${CONFIGURE_FLAGS}"
- popd >/dev/null
+ pushd "$TOPDIR" >/dev/null
+ rm -rf kernel-ib-devel
+ mkdir kernel-ib-devel
+ cd kernel-ib-devel
+ # the actual ofed RPMs don't have the -rc$n or -$date string appened that
+ # might be present on the file
+ local linuxrelease=$(find_linux_release "$linux")
+ ofed_version=$(echo $ofed_version |
+ sed -re 's/-(20[0-9]{6,6}-[0-9]{4,4}|rc[0-9]*)$//')
+ local rpm=$(ls $TOPDIR/RPMS/*/kernel-ib-devel-${ofed_version}-${linuxrelease//-/_}.*.rpm)
+ rpm2cpio -itv < $rpm | cpio -id
+ CONFIGURE_FLAGS="--with-o2ib=$(pwd)/usr/src/ofa_kernel ${CONFIGURE_FLAGS}"
+ popd >/dev/null
}
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
build_ofed "${LINUXOBJ:-$LINUX}" "$OFED_VERSION" ||
fatal 1 "error building OFED"
- build_rdac "${LINUXOBJ:-$LINUX}" "$RDAC_VERSION" ||
- fatal 1 "error building RDAC"
+ if ! $PATCHLESS; then
+ # only need RDAC for the server
+ build_rdac "${LINUXOBJ:-$LINUX}" "$RDAC_VERSION" ||
+ fatal 1 "error building RDAC"
+ fi
build_mptlinux "${LINUXOBJ:-$LINUX}" "$MPTLINUX_VERSION" ||
fatal 1 "error building mptlinux"
funcname=${FUNCNAME[$n - 1]}
sourcefile=$(basename ${BASH_SOURCE[$n]})
lineno=${BASH_LINENO[$n - 1]}
+ if [ $n = 1 ]; then
+ let lineno-=11
+ fi
# Display function arguments
if [[ ! -z "${BASH_ARGV[@]}" ]]; then
local args newarg j p=0
#echo ${FUNCNAME[*]}
local i=$((${#FUNCNAME[@]} - 1))
while [ $i -ge 0 ]; do
- local SOURCELINE="${BASH_SOURCE[$i + 1]}:${BASH_LINENO[$i]}"
+ local lineno=${BASH_LINENO[$i]}
+ if [ $i = 0 ]; then
+ let lineno-=11
+ fi
+ local SOURCELINE="${BASH_SOURCE[$i + 1]}:${lineno}"
# Can't figure out how to get function args from other frames...
local FUNCTION="${FUNCNAME[$i]}()"
echo "$SOURCELINE:$FUNCTION"
}
+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 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
+echo "checking seen list for ${BASH_SOURCE[0]}:${BASH_LINENO[0]}"
+
+if is_list_member "$seen_list" "${BASH_SOURCE[0]}:${BASH_LINENO[0]}"; then
+ echo "seen this one already"
+else
+ seen_list=$(add_list "$seen_list" "${BASH_SOURCE[0]}:${BASH_LINENO[0]}")
+fi
+backtrace
+echo
+echo "Environment:"
+set
+) | mail -s "Untrapped error at ${BASH_SOURCE[0]##*/}:$((LINENO-15)) on $HOSTNAME" brian@sun.com >&2; set $xtrace' ERR
+set -E
+
[ -r ~/.lbuildrc ] && . ~/.lbuildrc
-options=$(getopt -o d:D:h -l kerneltree:,distro:,kernelrpm:,reusebuild:,patchless,ldiskfs,ccache,reuse:,norpm,disable-datestamp,external-patches:,timestamp:,extraversion:,kerneldir:,linux:,lustre:,nodownload,nosrc,ofed-version:,publish,release,src,stage:,tag:,target:,target-archs:,with-linux:,xen -- "$@")
+options=$(getopt -o d:D:h -l kerneltree:,distro:,kernelrpm:,reusebuild:,patchless,ldiskfs,ccache,reuse:,norpm,disable-datestamp,external-patches:,timestamp:,extraversion:,kerneldir:,linux:,lustre:,nodownload,nosrc,ofed-version:,publish,release,set-value:,src,stage:,tag:,target:,target-archs:,with-linux:,xen -- "$@")
if [ $? != 0 ]; then
usage 1
XEN=true
shift
;;
+ --set-value)
+ eval $2
+ shift 2
+ ;;
--)
shift
+ # there are actually some lustre configure flags that we need to
+ # handle ourselves (but we still give them to configure)
+ if [[ \ $@\ == *\ --disable-tests\ * ]]; then
+ LUSTRE_TESTS=false
+ fi
CONFIGURE_FLAGS=$@
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-liblustre --enable-liblustre-tests"
break
fatal 1 "Error copying RDAC source tarball to RPM SOURCES dir"
fi
-push_exit_trap '[ -n "$CCACHE" ] && ccache -s' "ccache"
-
# if an unpacked kernel source tree was given on the command line
# just build lustre with it (nothing distro kernel specific here)
if [ -n "$LINUX" ]; then
fatal 1 "error building mptlinux"
build_ofed "${LINUXOBJ:-$LINUX}" "$OFED_VERSION" ||
fatal 1 "error building OFED"
- build_rdac "${LINUXOBJ:-$LINUX}" "$RDAC_VERSION" ||
- fatal 1 "error building RDAC"
+ if ! $PATCHLESS; then
+ build_rdac "${LINUXOBJ:-$LINUX}" "$RDAC_VERSION" ||
+ fatal 1 "error building RDAC"
+ fi
build_lustre "$LINUX" "$LINUXOBJ"
else
if [ -f "${0%/*}/lbuild-$DISTRO" ]; then
- seen_list=$(new_list)
- trap '(echo "Untrapped error"
-echo
-# have we seen this one
-echo "checking seen list for ${BASH_SOURCE[0]}:${BASH_LINENO[0]}"
-
-if is_list_member "$seen_list" "${BASH_SOURCE[0]}:${BASH_LINENO[0]}"; then
- echo "seen this one already"
-else
- seen_list=$(add_list "$seen_list" "${BASH_SOURCE[0]}:${BASH_LINENO[0]}")
-fi
-backtrace
-echo
-echo "Environment:"
-set
-) | tee >(mail -s "Untrapped error at ${BASH_SOURCE[0]##*/}:${BASH_LINENO[0]} on $HOSTNAME" brian@sun.com) >&2' ERR
- set -E
-
source ${0%/*}/lbuild-$DISTRO
build_with_srpm || fatal 1 "Failed to build_with_srpm"