2.6-sles10)
CANONICAL_TARGET="sles10-2.6"
;;
+ 2.6-sles11)
+ CANONICAL_TARGET="sles11"
+ ;;
hp_pnnl-2.4)
CANONICAL_TARGET="hp-pnnl-2.4"
;;
download_srpm() {
local target=$1
local srpm=$2
+ local force="${3:-false}"
- echo "Downloading http://downloads.lustre.org/public/kernels/$target/old/$srpm..."
- if ! wget -nv "http://downloads.lustre.org/public/kernels/$target/old/$srpm" \
- -O "$KERNELDIR/$srpm"; then
- fatal 1 "Could not download target $target's kernel SRPM $srpm from downloads.lustre.org."
+ if $force || [ ! -r "$KERNELDIR/$srpm" ] ||
+ [ ! -s "$KERNELDIR/$srpm" ]; then
+ 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" ||
+ [ ! -s "$KERNELDIR/$srpm" ]; then
+ rm -f $KERNELDIR/$srpm
+ fatal 1 "Could not download target $target's kernel SRPM" \
+ "$srpm from $location."
+ fi
+ else
+ fatal 1 "$srpm not found in directory $KERNELDIR."
+ fi
fi
- [ -s "$KERNELDIR/$srpm" ] || {
- rm -rf $KERNELDIR/$srpm
- fatal 1 "Could not download target $target's kernel SRPM $srpm from downloads.lustre.org."
- }
}
download_ofed() {
+ local force="${1:-false}"
- if [ -n "$OFED_VERSION" -a "$OFED_VERSION" != "inkernel" ] && \
- [ ! -r "$KERNELTREE/OFED-${OFED_VERSION}.tgz" ]; then
+ if [ -n "$OFED_VERSION" -a "$OFED_VERSION" != "inkernel" ] &&
+ ( $force || [ ! -r "$KERNELTREE/OFED-${OFED_VERSION}.tgz" ] ||
+ [ ! -s "$KERNELTREE/OFED-${OFED_VERSION}.tgz" ] ); then
if $DOWNLOAD; then
local location="http://downloads.lustre.org/public/OFED/"
echo "Downloading $location/OFED-${OFED_VERSION}.tgz..."
if ! wget -nv "$location/OFED-${OFED_VERSION}.tgz" \
- -O "$KERNELTREE/OFED-${OFED_VERSION}.tgz"; then
+ -O "$KERNELTREE/OFED-${OFED_VERSION}.tgz" ||
+ [ ! -s "$KERNELTREE/OFED-${OFED_VERSION}.tgz" ]; then
+ rm -f $KERNELTREE/OFED-${OFED_VERSION}.tgz
fatal 1 "Could not download OFED-${OFED_VERSION}.tgz" \
"from downloads.lustre.org."
fi
unpack_ofed() {
- untar "$KERNELTREE/OFED-${OFED_VERSION}.tgz" || fatal 1 "Error unpacking OFED tarball"
+ if ! untar "$KERNELTREE/OFED-${OFED_VERSION}.tgz"; then
+ return 1
+ fi
[ -d OFED ] || ln -sf OFED-[0-9].[0-9]* OFED
}
cp config.log $saved_config
chmod a+r $saved_config
echo "Saved config.log is at $saved_config"
+ cat /proc/mounts
+ ls -l /proc/$$
+ pwd
+ echo "config.log contents:"
+ cat config.log
popd
return 255
fi
done
cp -v "$LUSTRE" "$STAGEDIR"
+
}
#check if we need to build separate ldiskfs RPM
[ $infact_arch == $smp_type ] && RPMSMPTYPE=bigsmp && break
done
+ for smp_type in $DEFAULT_ARCHS; do
+ [ $infact_arch == $smp_type ] && RPMSMPTYPE=default && break
+ done
+
}
# This function takes a linux source pool and digs out the linux release
}
+# XXX this needs to be re-written as a wrapper around find_rpm
+# or just gotten rid of. :-)
find_linux_rpm() {
local prefix="$1"
local delimiter=${2:-"-"}
# needs to completely refactored. It completely ingores that $BUILD_ARCHS may
# contain a list of arches for which rpmbuild commands (including the one for
# lustre itself)
-unpack_linux_rpm() {
+unpack_linux_devel_rpm() {
local kernelrpm="${1}"
# it's worth noting that neither sles10 nor rhel5 appear to use their
# extra_version delimiter for the dirname under /usr/src, so we could
local delimiter=${2:-"-"}
[ -f "$kernelrpm" ] || return 255
- [ -d $TOPDIR/reused ] || mkdir $TOPDIR/reused
+ [ -d $TOPDIR/reused ] || mkdir $TOPDIR/reused || return 255
pushd $TOPDIR/reused || return 255
+ if ! rpm2cpio < "$kernelrpm" | cpio -id > /dev/null 2>&1; then
+ return 255
+ fi
+
+ # call a distro specific hook, if available
+ if type -p unpack_linux_devel_rpm-$DISTRO; then
+ unpack_linux_devel_rpm-$DISTRO "$kernelrpm"
+ fi
+
+ popd
+
+ find_linux_devel_paths $TOPDIR/reused
+
+ return 0
+
+}
+
+# XXX - this rhel/sles goop needs abstracting out into the
+# lbuild-{rhel5,sles10} method files
+find_linux_devel_paths() {
+ local path="$1"
+
local RC=0
- rpm2cpio < "$kernelrpm" | cpio -id > /dev/null 2>&1
- if [ ${PIPESTATUS[0]} -eq 0 ]; then
+ pushd $path
# RHEL-style and SLES-style rpms
- # XXX - this rhel/sles goop needs abstracting out into the
- # lbuild-{rhel5,sles10} method files
# XXX - until bug 19336 cleans this up, we need to extricate the
# ${lnxmin}- from the $lnxrel
local paths="kernels/${lnxmaj}${lnxmin}${delimiter}${lnxrel}-${TARGET_ARCH} linux-${lnxmaj}${lnxmin}${delimiter}${lnxrel##${lnxmin#.}-}"
RC=255
fi
fi
- else
- RC=255
- fi
popd
return $RC
}
--define "KVERSION ${LINUXRELEASE}" \
--define "$K_SRC ${LINUXOBJ:-${LINUX}}" \
--define "LIB_MOD_DIR /lib/modules/${LINUXRELEASE}/updates" \
- --define "configure_options --without-quilt --with-core-mod --with-user_mad-mod --with-user_access-mod --with-addr_trans-mod --with-srp-target-mod --with-core-mod --with-mthca-mod --with-mlx4-mod --with-cxgb3-mod --with-nes-mod --with-ipoib-mod --with-sdp-mod --with-srp-mod --without-srp-target-mod --with-rds-mod --with-iser-mod --with-qlgc_vnic-mod --with-madeye-mod $configure_options" ${TOPDIR}/OFED/SRPMS/ofa_kernel-${OFED_VERSION}-ofed${OFED_VERSION}.src.rpm
+ --define "configure_options --without-quilt --with-core-mod --with-user_mad-mod --with-user_access-mod --with-addr_trans-mod --with-srp-target-mod --with-core-mod --with-mthca-mod --with-mlx4-mod --with-mlx4_en-mod --with-cxgb3-mod --with-nes-mod --with-ipoib-mod --with-sdp-mod --with-srp-mod --with-rds-mod --with-iser-mod --with-qlgc_vnic-mod --with-madeye-mod $configure_options" ${TOPDIR}/OFED/SRPMS/ofa_kernel-*.src.rpm
if [ ${PIPESTATUS[0]} != 0 ]; then
fatal 1 "Error building kernel-ib"
fi
- pushd "$TOPDIR" >/dev/null
- rm -rf kernel-ib-devel
- mkdir kernel-ib-devel
- cd kernel-ib-devel
- 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
}
store_for_reuse() {
location="$location"/"$signature"/"$module"
mkdir -p "$location"
+ # the cleanup script removes any directory that doesn't have a
+ # .lastused, so let's try to prevent that as soon as we can
+ # this solution still slightly racy with the cleanup script
+ # but the race is a lot tighter now
+ touch -t 197001010000 "$location/.lastused"
## use eval/echo here to make sure shell expansions are performed
#if ! cp -a${linkflag} $(eval echo $articles) "$location"; then
local article
# 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
# in BUILD_ARCHS
- local REUSE_SIGNATURE=$(cat $CONFIG_FILE $TARGET_FILE $FULL_PATCH | md5sum | cut -d" " -f1)
+ local REUSE_SIGNATURE=$({ echo $BUILD_GEN; cat $CONFIG_FILE $TARGET_FILE $FULL_PATCH; } | md5sum | cut -d" " -f1)
# see if we can link to the reuse pool
# XXX - hrm. i'm not convinced this doesn't belong in the reuse "library"
else
# nothing cached, build from scratch
if [ ! -r "$KERNELDIR/$KERNEL_SRPM" ]; then
- download_srpm "$CANONICAL_TARGET" "$KERNEL_SRPM"
+ download_srpm "$CANONICAL_TARGET" "$KERNEL_SRPM" >&2
fi
rpm -ivh $KERNELDIR/$KERNEL_SRPM --define "_topdir $TOPDIR" >&2 || {
# put the Lustre kernel patch into the RPM build tree
cp $FULL_PATCH $TOPDIR/SOURCES/linux-${lnxmaj}-lustre.patch
- prepare_and_build_srpm
+ prepare_and_build_srpm >&2
# store the resulting kernel RPM build tree for future use
if ! store_for_reuse "$TOPDIR/{SPECS,SOURCES,BUILD,SRPMS,RPMS}" \
# install the -devel RPM in preparation for the lustre build
# note that the EXTRA_VERSION_DELIMITER is *NOT* used in the
# version of the directory name under /usr/src
- if ! lnxrel="$kernel_extra_version" unpack_linux_rpm \
+ if ! lnxrel="$kernel_extra_version" unpack_linux_devel_rpm \
"$TOPDIR/RPMS/$arch/$kernel_devel_rpm" "-"; then
fatal 1 "Could not find the Linux tree in $TOPDIR/RPMS/$arch/$kernel_devel_rpm"
fi
if ! kernelrpm=$(find_linux_rpm "-$DEVEL_KERNEL_TYPE" ${EXTRA_VERSION_DELIMITER:-"-"}); then
fatal 1 "Could not find the kernel-$DEVEL_KERNEL_TYPE RPM in ${KERNELRPMSBASE}/${lnxmaj}/${DISTRO}"
fi
- if ! lnxrel="$lnxrel" unpack_linux_rpm "$kernelrpm" "-"; then
+ if ! lnxrel="$lnxrel" unpack_linux_devel_rpm "$kernelrpm" "-"; then
fatal 1 "Could not find the Linux tree in $kernelrpm"
fi
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 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
fi
# now build Lustre
fi
done
popd
+ else
+ return 1
fi
+
}
create_rpmbuild_dirs() {
if [ -n "$OFED_VERSION" -a "$OFED_VERSION" != "inkernel" ]; then
download_ofed
- unpack_ofed
+ unpack_ofed || fatal 1 "Error unpacking OFED tarball"
fi
# make sure the RPM build environment is set up