Whamcloud - gitweb
b=22632 update mptsas driver to PH16-4.18.20.04
[fs/lustre-release.git] / build / lbuild
index 20697bf..7cae51c 100755 (executable)
@@ -48,10 +48,13 @@ LUSTRE_EXTRA_VERSION=
 STAGEDIR=
 TMPDIR=${TMPDIR:-"/var/tmp"}
 TIMESTAMP=
 STAGEDIR=
 TMPDIR=${TMPDIR:-"/var/tmp"}
 TIMESTAMP=
-# XXX - i think these two parameters/arguments/variables need to be
-#       cleaned up and merged.  they effectively do the same thing
+# this is a dir to try reuse old kernel RPMs in (although, it seems to be
+# unused in any real manner
 REUSERPM=
 REUSERPM=
+# this is the dir that should be used to store reuse products
 REUSEBUILD=
 REUSEBUILD=
+# should cached products be used or force rebuilding?
+USE_BUILD_CACHE=true
 # what does this do exactly?  does it imply no kernel build?
 NORPM=false
 LDISKFSRPM=true
 # what does this do exactly?  does it imply no kernel build?
 NORPM=false
 LDISKFSRPM=true
@@ -488,7 +491,7 @@ download_file() {
             touch $semaphore
             if ! wget -nv "$from" -O "$to" || [ ! -s "$to" ]; then
                 # the trap will remove the files via the fatal below
             touch $semaphore
             if ! wget -nv "$from" -O "$to" || [ ! -s "$to" ]; then
                 # the trap will remove the files via the fatal below
-                fatal 1 "Could not download ${to##*/} from ${from%%/*}/."
+                fatal 1 "Could not download ${to##*/} from ${from%/*}/."
             fi
             rm -f $semaphore
             delete_exit_trap "download"
             fi
             rm -f $semaphore
             delete_exit_trap "download"
@@ -551,7 +554,7 @@ download_mptlinux() {
         return 0
     fi
 
         return 0
     fi
 
-    file="MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip"
+    file="SUN_MPTLINUX_RHEL5_PH16-${MPTLINUX_VERSION}.tar.gz"
     download_file "$location/$file" "$KERNELTREE" "$force"
 
 }
     download_file "$location/$file" "$KERNELTREE" "$force"
 
 }
@@ -634,11 +637,10 @@ load_target() {
     elif ! $RELEASE; then
         # if there is no patch series, then this is not a lustre specific
         # kernel.  don't make it look like one
     elif ! $RELEASE; then
         # if there is no patch series, then this is not a lustre specific
         # kernel.  don't make it look like one
-        if [ -n "$SERIES" ]; then
-            #remove the @VERSION@ (lustre version)
-#            EXTRA_VERSION=$(echo $EXTRA_VERSION | sed -e "s/\(.*_lustre\)\..*/\1/")
+        if $PATCHLESS || [ -n "$SERIES" ]; then
+            EXTRA_VERSION=$(echo $EXTRA_VERSION | sed -e "s/\(.*_lustre\)\..*/\1/")
 #            EXTRA_VERSION="${EXTRA_VERSION}-${TAG}.${TIMESTAMP}"
 #            EXTRA_VERSION="${EXTRA_VERSION}-${TAG}.${TIMESTAMP}"
-            ! ( $PATCHLESS ) && EXTRA_VERSION="${EXTRA_VERSION}.${TIMESTAMP}"
+            EXTRA_VERSION="${EXTRA_VERSION}.${TIMESTAMP}"
         fi
     fi
     # EXTRA_VERSION=${EXTRA_VERSION//-/_}
         fi
     fi
     # EXTRA_VERSION=${EXTRA_VERSION//-/_}
@@ -680,10 +682,12 @@ tarflags() {
 }
 
 untar() {
 }
 
 untar() {
-    local file="$1"
+    local tarfile="$1"
+    shift
+    local extractfile="$@"
 
 
-    echo "Untarring ${file##*/}..."
-    tar $(tarflags "$file") "$file"
+    echo "Untarring ${tarfile##*/}..."
+    tar $(tarflags "$tarfile") "$tarfile" $extractfile
 
 }
 
 
 }
 
@@ -707,10 +711,10 @@ unpack_rdac() {
 
 unpack_mptlinux() {
 
 
 unpack_mptlinux() {
 
-    if ! unzip -p $KERNELTREE/MPTLINUX_RHEL5_SLES10_PH15-4.16.00.00-2.zip | tar xzvf - srpms-2/mptlinux-4.16.00.00-2.src.rpm; then
+    if ! untar $KERNELTREE/SUN_MPTLINUX_RHEL5_PH16-${MPTLINUX_VERSION}.tar.gz pkg1-rhel5/srpms-1/mptlinux-${MPTLINUX_VERSION}-1.src.rpm; then
         return 1
     fi
         return 1
     fi
-    mv srpms-2/mptlinux-4.16.00.00-2.src.rpm .
+    mv pkg1-rhel5/srpms-1/mptlinux-${MPTLINUX_VERSION}-1.src.rpm .
 
 }
 
 
 }
 
@@ -748,7 +752,7 @@ do_patch_linux() {
 
     local do_patch=${1:-true}
 
 
     local do_patch=${1:-true}
 
-    FULL_PATCH="$PWD/lustre-kernel-${TARGET}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}.patch"
+    FULL_PATCH="$PWD/lustre-kernel-${TARGET}-${EXTRA_VERSION}.patch"
     [ -f "$FULL_PATCH" ] && rm -f "$FULL_PATCH"
     $do_patch && pushd linux >/dev/null
     for series in $SERIES; do
     [ -f "$FULL_PATCH" ] && rm -f "$FULL_PATCH"
     $do_patch && pushd linux >/dev/null
     for series in $SERIES; do
@@ -853,6 +857,7 @@ build_lustre() {
     $RPMBUILD $targets $rpmbuildopt ../lustre.spec \
         ${is_patchless:+--define "lustre_name lustre-client"} \
         ${lustre_tests:+--define "build_lustre_tests 0"} \
     $RPMBUILD $targets $rpmbuildopt ../lustre.spec \
         ${is_patchless:+--define "lustre_name lustre-client"} \
         ${lustre_tests:+--define "build_lustre_tests 0"} \
+        ${FIND_REQUIRES:+--define "__find_requires $FIND_REQUIRES"} \
         --define "configure_args $confoptions ${CONFIGURE_FLAGS}" \
         --define "_tmppath $TMPDIR" \
         --define "_topdir $TOPDIR" 2>&1 || \
         --define "configure_args $confoptions ${CONFIGURE_FLAGS}" \
         --define "_tmppath $TMPDIR" \
         --define "_topdir $TOPDIR" 2>&1 || \
@@ -941,7 +946,7 @@ skeep_ldiskfs_rpm() {
 #generate LUSTRE_EXTRA_VERSION from EXTRA_VERSION
 gen_lustre_version() {
 
 #generate LUSTRE_EXTRA_VERSION from EXTRA_VERSION
 gen_lustre_version() {
 
-    LUSTRE_EXTRA_VERSION="${lnxmaj}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}${TARGET_DELIMITER}${RPMSMPTYPE}"
+    LUSTRE_EXTRA_VERSION="${lnxmaj}-${EXTRA_VERSION}${FLAVOR_DELIMITER}${RPMSMPTYPE}"
     LUSTRE_EXTRA_VERSION=${LUSTRE_EXTRA_VERSION//-/_}
 
 }
     LUSTRE_EXTRA_VERSION=${LUSTRE_EXTRA_VERSION//-/_}
 
 }
@@ -962,6 +967,10 @@ set_rpm_smp_type() {
         [ $infact_arch == $smp_type ] && RPMSMPTYPE=bigsmp && break
     done
 
         [ $infact_arch == $smp_type ] && RPMSMPTYPE=bigsmp && break
     done
 
+    for smp_type in $PPC64_ARCHS; do
+        [ $infact_arch == $smp_type ] && RPMSMPTYPE=ppc64 && break
+    done
+
     for smp_type in $DEFAULT_ARCHS; do
         [ $infact_arch == $smp_type ] && RPMSMPTYPE=default && break
     done
     for smp_type in $DEFAULT_ARCHS; do
         [ $infact_arch == $smp_type ] && RPMSMPTYPE=default && break
     done
@@ -986,13 +995,12 @@ find_linux_release() {
 #     or just gotten rid of.  :-)
 find_linux_rpm() {
     local prefix="$1"
 #     or just gotten rid of.  :-)
 find_linux_rpm() {
     local prefix="$1"
-    local delimiter=${2:-"-"}
 
     local pathtorpms="${KERNELRPMSBASE}/${lnxmaj}/${DISTRO}"
     [ -d $pathtorpms ] || return 255
 
     local kernelbinaryrpm rpmfile
 
     local pathtorpms="${KERNELRPMSBASE}/${lnxmaj}/${DISTRO}"
     [ -d $pathtorpms ] || return 255
 
     local kernelbinaryrpm rpmfile
-    local wanted_kernel="${lnxmaj}${delimiter}${lnxrel}"
+    local wanted_kernel="${lnxmaj}${lnxmin}-${lnxrel}"
 
     local arch ret=1
     for arch in $TARGET_ARCHS_ALL; do
 
     local arch ret=1
     for arch in $TARGET_ARCHS_ALL; do
@@ -1021,10 +1029,6 @@ find_linux_rpm() {
 # lustre itself)
 unpack_linux_devel_rpm() {
     local kernelrpm="${1}"
 # lustre itself)
 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
-    # probably just get rid of this parameter
-    local delimiter=${2:-"-"}
 
     [ -f "$kernelrpm" ] || return 255
     [ -d $TOPDIR/reused ] || mkdir $TOPDIR/reused || return 255
 
     [ -f "$kernelrpm" ] || return 255
     [ -d $TOPDIR/reused ] || mkdir $TOPDIR/reused || return 255
@@ -1037,7 +1041,9 @@ unpack_linux_devel_rpm() {
 
     # call a distro specific hook, if available
     if type -p unpack_linux_devel_rpm-$DISTRO; then
 
     # call a distro specific hook, if available
     if type -p unpack_linux_devel_rpm-$DISTRO; then
-        unpack_linux_devel_rpm-$DISTRO "$kernelrpm"
+        if ! unpack_linux_devel_rpm-$DISTRO "$kernelrpm"; then
+            return 255
+        fi
     fi
 
     popd &>/dev/null
     fi
 
     popd &>/dev/null
@@ -1048,55 +1054,6 @@ unpack_linux_devel_rpm() {
 
 }
 
 
 }
 
-# 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
-
-    pushd $path
-        # RHEL-style and SLES-style rpms
-        # 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#.}-}"
-
-        local path
-        for path in $paths; do
-            local src='usr/src'
-
-            if [ -d "$src/$path/" ]; then
-                LINUX="$(pwd)/$src/$path"
-            fi
-            # SLES has a separate -obj tree
-            if [ -d "$src/${path}-obj" ]; then
-                local src="$src/${path}-obj"
-                local objects="$TARGET_ARCH/$RPMSMPTYPE"
-
-                # Novell, are you *TRYING* to make life hard for me?
-                if [ -d "$src/powerpc" ]; then
-                    objects="powerpc/$TARGET_ARCH"
-                elif [ $TARGET_ARCH == 'i686' ]; then
-                    objects="i386/$RPMSMPTYPE"
-                fi
-
-                LINUXOBJ="$(pwd)/$src/$objects"
-            fi
-        done
-        if [ -z "$LINUX" ]; then
-            RC=255
-        else
-            # dig out the release version
-            LINUXRELEASE=$(find_linux_release ${LINUXOBJ:-$LINUX})
-            if [ -z "$LINUXRELEASE" ]; then
-                echo "Failed to find linux release in ${LINUXOBJ:-$LINUX}"
-                RC=255
-            fi
-        fi
-    popd
-    return $RC
-}
-
 build_kernel_ib() {
     local linux="$1"
 
 build_kernel_ib() {
     local linux="$1"
 
@@ -1134,7 +1091,7 @@ build_kernel_ib() {
         rpm --define "_topdir ${TOPDIR}" -ivh $SOURCE
         SOURCE="${TOPDIR}/SPECS/ofa_kernel.spec"
         local file ed_fragment1 ed_fragment2 n=1
         rpm --define "_topdir ${TOPDIR}" -ivh $SOURCE
         SOURCE="${TOPDIR}/SPECS/ofa_kernel.spec"
         local file ed_fragment1 ed_fragment2 n=1
-        for file in ${TOPDIR}/lustre/build/patches/ofed/*; do
+        for file in $(ls ${TOPDIR}/lustre/build/patches/ofed/*); do
             ed_fragment1="$ed_fragment1
 Patch$n: ${file%%*/}"
             ed_fragment2="$ed_fragment2
             ed_fragment1="$ed_fragment1
 Patch$n: ${file%%*/}"
             ed_fragment2="$ed_fragment2
@@ -1143,7 +1100,8 @@ Patch$n: ${file%%*/}"
             let n=$n+1
         done
 
             let n=$n+1
         done
 
-        ed $SOURCE <<EOF
+        if [ $n -gt 1 ]; then
+            ed $SOURCE <<EOF
 /^Source: /a
 $ed_fragment1
 .
 /^Source: /a
 $ed_fragment1
 .
@@ -1152,10 +1110,12 @@ $ed_fragment2
 .
 wq
 EOF
 .
 wq
 EOF
+        fi
     fi
 
     local linuxrelease=$(find_linux_release "$linux")
     if ! $RPMBUILD $BUILD_TYPE --define 'build_kernel_ib 1' --define 'build_kernel_ib_devel 1' \
     fi
 
     local linuxrelease=$(find_linux_release "$linux")
     if ! $RPMBUILD $BUILD_TYPE --define 'build_kernel_ib 1' --define 'build_kernel_ib_devel 1' \
+                  ${FIND_REQUIRES:+--define "__find_requires $FIND_REQUIRES"} \
                   --define "_topdir ${TOPDIR}" --target ${TARGET_ARCH} \
                   --define "KVERSION ${linuxrelease}" \
                   --define "$K_SRC ${linux}" \
                   --define "_topdir ${TOPDIR}" --target ${TARGET_ARCH} \
                   --define "KVERSION ${linuxrelease}" \
                   --define "$K_SRC ${linux}" \
@@ -1332,21 +1292,27 @@ build_kernel_with_srpm() {
     if $RELEASE; then
         local release_str="RELEASE=$RELEASE\n"
     fi
     if $RELEASE; then
         local release_str="RELEASE=$RELEASE\n"
     fi
-    local REUSE_SIGNATURE=$({ echo -en $release_str; 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"
-    local CAN_LINK_FOR_REUSE=false
-    touch $REUSEBUILD/$$
-    if cp -al $REUSEBUILD/$$ $TOPDIR/ 2>/dev/null; then
-        CAN_LINK_FOR_REUSE=true
+    if $USE_BUILD_CACHE && [ -n "$REUSEBUILD" ]; then
+        local REUSE_SIGNATURE=$({ echo -en $release_str;
+                                  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"
+        local CAN_LINK_FOR_REUSE=false
+        touch $REUSEBUILD/$$
+        if cp -al $REUSEBUILD/$$ $TOPDIR/ 2>/dev/null; then
+            CAN_LINK_FOR_REUSE=true
+        fi
+        rm $REUSEBUILD/$$
     fi
     fi
-    rm $REUSEBUILD/$$
 
     # the extra version string to use for the kernel (which might be a reused
     # kernel, remember)
     local kernel_extra_version=""
 
     # the extra version string to use for the kernel (which might be a reused
     # kernel, remember)
     local kernel_extra_version=""
-    if $REUSERPM && ! reuse kernel "$TOPDIR" "$CAN_LINK_FOR_REUSE" \
+    if ! $USE_BUILD_CACHE || ! reuse kernel "$TOPDIR" "$CAN_LINK_FOR_REUSE" \
                                    "$REUSE_SIGNATURE"; then
         # nothing cached, build from scratch
         if [ ! -r "$KERNELDIR/$KERNEL_SRPM" ]; then
                                    "$REUSE_SIGNATURE"; then
         # nothing cached, build from scratch
         if [ ! -r "$KERNELDIR/$KERNEL_SRPM" ]; then
@@ -1366,14 +1332,18 @@ build_kernel_with_srpm() {
         prepare_and_build_srpm >&${outfd} ||
             fatal 1 "failed to prepare_and_build_srpm"
 
         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
-            error "Failed to store kernel RPMS for reuse"
-            echo "unknown"
-            return 1
+        if [ -z "$REUSE_SIGNATURE" ]; then
+            echo "No reuse signature was caculated so not storing the built kernel" >&${outfd}
+        else
+            # store the resulting kernel RPM build tree for future use
+            echo "Storing the built kernel for future reuse" >&${outfd}
+            if ! store_for_reuse "$TOPDIR/{SPECS,SOURCES,BUILD,SRPMS,RPMS}" \
+                                 "kernel" "$REUSEBUILD" "$REUSE_SIGNATURE" \
+                                 "$CAN_LINK_FOR_REUSE"; then
+                error "Failed to store kernel RPMS for reuse"
+                echo "unknown"
+                return 1
+            fi
         fi
     fi  # build reuse
 
         fi
     fi  # build reuse
 
@@ -1442,6 +1412,7 @@ build_mptlinux() {
     fi
 
     if ! $RPMBUILD $targets $rpmbuildopt \
     fi
 
     if ! $RPMBUILD $targets $rpmbuildopt \
+                  ${FIND_REQUIRES:+--define "__find_requires $FIND_REQUIRES"} \
                   --define "_tmppath /var/tmp" \
                   --define "_topdir ${TOPDIR}" \
                   --define "kernel_obj $linux" \
                   --define "_tmppath /var/tmp" \
                   --define "_topdir ${TOPDIR}" \
                   --define "kernel_obj $linux" \
@@ -1450,6 +1421,7 @@ build_mptlinux() {
     fi
     if $DO_SRC; then
         if ! $RPMBUILD -bs \
     fi
     if $DO_SRC; then
         if ! $RPMBUILD -bs \
+                      ${FIND_REQUIRES:+--define "__find_requires $FIND_REQUIRES"} \
                       --define "_tmppath /var/tmp" \
                       --define "_topdir ${TOPDIR}" \
                       --define "kernel_obj $linux" \
                       --define "_tmppath /var/tmp" \
                       --define "_topdir ${TOPDIR}" \
                       --define "kernel_obj $linux" \
@@ -1498,6 +1470,7 @@ build_rdac() {
                 ;;
     esac
     if ! $RPMBUILD $targets $rpmbuildopt --define "dist $distro" \
                 ;;
     esac
     if ! $RPMBUILD $targets $rpmbuildopt --define "dist $distro" \
+                  ${FIND_REQUIRES:+--define "__find_requires $FIND_REQUIRES"} \
                   --define "_tmppath /var/tmp" \
                   --define "_topdir ${TOPDIR}" \
                   --define "kernel_obj $linux" \
                   --define "_tmppath /var/tmp" \
                   --define "_topdir ${TOPDIR}" \
                   --define "kernel_obj $linux" \
@@ -1506,6 +1479,7 @@ build_rdac() {
     fi
     if $DO_SRC; then
         if ! $RPMBUILD -bs --define "dist $distro" \
     fi
     if $DO_SRC; then
         if ! $RPMBUILD -bs --define "dist $distro" \
+                      ${FIND_REQUIRES:+--define "__find_requires $FIND_REQUIRES"} \
                       --define "_tmppath /var/tmp" \
                       --define "_topdir ${TOPDIR}" \
                       --define "kernel_obj $linux" \
                       --define "_tmppath /var/tmp" \
                       --define "_topdir ${TOPDIR}" \
                       --define "kernel_obj $linux" \
@@ -1520,7 +1494,7 @@ build_rdac() {
 # build OFED
 # globals used:
 #    TOPDIR
 # build OFED
 # globals used:
 #    TOPDIR
-#    REUSEBUILD, REUSERPM
+#    REUSEBUILD, USE_BUILD_CACHE
 #    CONFIGURE_FLAGS
 
 build_ofed() {
 #    CONFIGURE_FLAGS
 
 build_ofed() {
@@ -1532,10 +1506,14 @@ build_ofed() {
         return 0
     fi
 
         return 0
     fi
 
-    if [ -n "$REUSEBUILD" ]; then
+    if $USE_BUILD_CACHE && [ -n "$REUSEBUILD" ]; then
+        local REUSE_SIGNATURE=$({ echo "$ofed_version";
+                                  echo "$(find_linux_release ${linux})";
+                                  cat "${linux}/include/linux/autoconf.h"; } |
+                                md5sum | cut -d" " -f1)
         # see if we can link to the reuse pool
         # see if we can link to the reuse pool
-            # XXX - hrm.  i'm not convinced this doesn't belong in the reuse
-            #       "library"
+        # 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
         local CAN_LINK_FOR_REUSE=false
         touch $REUSEBUILD/$$
         if cp -al $REUSEBUILD/$$ $TOPDIR/; then
@@ -1544,33 +1522,38 @@ build_ofed() {
         rm $REUSEBUILD/$$
     fi
 
         rm $REUSEBUILD/$$
     fi
 
-    local REUSE_SIGNATURE=$({ echo "$ofed_version";
-                              echo "$(find_linux_release ${linux})";
-                              cat "${linux}/include/linux/autoconf.h"; } |
-                            md5sum | cut -d" " -f1)
-    if ! $REUSERPM || ! reuse ofed "$TOPDIR" "$CAN_LINK_FOR_REUSE" \
+    if ! $USE_BUILD_CACHE || ! reuse ofed "$TOPDIR" "$CAN_LINK_FOR_REUSE" \
                                    "$REUSE_SIGNATURE"; then
                                    "$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
+        if [ -n "$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
+        fi
         # build it
         build_kernel_ib "${linux}"
         # 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"
+
+        if [ -z "$REUSE_SIGNATURE" ]; then
+            echo "No reuse signature was caculated so not storing the built ofed"
+        else
+            # store the resulting RPM build tree for future use
+            echo "Storing the built ofed for future reuse"
+            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
             mv_back
-            return 1
         fi
         fi
-        # put the stuff we stashed away back
-        mv_back
     fi
 
     pushd "$TOPDIR" >/dev/null
     fi
 
     pushd "$TOPDIR" >/dev/null
@@ -1603,11 +1586,9 @@ build_with_srpm() {
                 fatal 1 "Failed to find a kernel development RPM in $TOPDIR/RPMS/$arch/"
             fi
 
                 fatal 1 "Failed to find a kernel development RPM in $TOPDIR/RPMS/$arch/"
             fi
 
-            # 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
+            # install the -devel RPM in preparation for modules builds
             if ! lnxrel="$kernel_extra_version" unpack_linux_devel_rpm \
             if ! lnxrel="$kernel_extra_version" unpack_linux_devel_rpm \
-                           "$TOPDIR/RPMS/$arch/$kernel_devel_rpm" "-"; then
+                           "$TOPDIR/RPMS/$arch/$kernel_devel_rpm"; then
                 fatal 1 "Could not find the Linux tree in $TOPDIR/RPMS/$arch/$kernel_devel_rpm"
             fi
         done
                 fatal 1 "Could not find the Linux tree in $TOPDIR/RPMS/$arch/$kernel_devel_rpm"
             fi
         done
@@ -1615,7 +1596,7 @@ build_with_srpm() {
         # need to find and unpack the vendor's own kernel-devel for patchless
         # client build
         local kernelrpm
         # need to find and unpack the vendor's own kernel-devel for patchless
         # client build
         local kernelrpm
-        if ! kernelrpm=$(find_linux_rpm "-$DEVEL_KERNEL_TYPE" ${EXTRA_VERSION_DELIMITER:-"-"}); then
+        if ! kernelrpm=$(find_linux_rpm "-$DEVEL_KERNEL_TYPE"); then
             fatal 1 "Could not find the kernel-$DEVEL_KERNEL_TYPE RPM in ${KERNELRPMSBASE}/${lnxmaj}/${DISTRO}"
         fi
         if ! lnxrel="$lnxrel" unpack_linux_devel_rpm "$kernelrpm" "-"; then
             fatal 1 "Could not find the kernel-$DEVEL_KERNEL_TYPE RPM in ${KERNELRPMSBASE}/${lnxmaj}/${DISTRO}"
         fi
         if ! lnxrel="$lnxrel" unpack_linux_devel_rpm "$kernelrpm" "-"; then
@@ -1623,6 +1604,38 @@ build_with_srpm() {
         fi
     fi
 
         fi
     fi
 
+    # ~sigh~  have to make copies of and modify some of the rpm
+    # infrastructure files so that find-requires can find our unpacked
+    # kernel-devel artifacts
+    cp $RPM_HELPERS_DIR/{symset-table,find-requires{,.ksyms}} .
+    FIND_REQUIRES="$(pwd)/find-requires"
+    chmod 755 {symset-table,find-requires{,.ksyms}}
+    local tmp="$(pwd)"
+    tmp="${tmp//\//\\/}"
+    ed find-requires <<EOF
+1a
+set -x
+.
+/|.*find-requires.ksyms/s/|/| bash -x/
+g/ [^ ]*\/\(find-requires\.ksyms\)/s// $tmp\/\1/g
+wq
+EOF
+    ed find-requires.ksyms <<EOF
+1a
+set -x
+.
+g/\/.*\/\(symset-table\)/s//$tmp\/\1/g
+wq
+EOF
+    ed symset-table <<EOF
+1a
+set -x
+.
+g/\(\/boot\/\)/s//$tmp\/reused\1/g
+g/\(\/usr\/src\/kernels\/\)/s//$tmp\/reused\1/g
+wq
+EOF
+
     build_ofed "${LINUXOBJ:-$LINUX}" "$OFED_VERSION" ||
         fatal 1 "error building OFED"
 
     build_ofed "${LINUXOBJ:-$LINUX}" "$OFED_VERSION" ||
         fatal 1 "error building OFED"
 
@@ -1944,7 +1957,6 @@ check_options
 unpack_lustre
 
 load_target
 unpack_lustre
 
 load_target
-EXTRA_VERSION_DELIMITER=${EXTRA_VERSION_DELIMITER:-"-"}
 
 if [ -n "$OFED_VERSION" -a "$OFED_VERSION" != "inkernel" ]; then
     download_ofed
 
 if [ -n "$OFED_VERSION" -a "$OFED_VERSION" != "inkernel" ]; then
     download_ofed
@@ -1985,6 +1997,7 @@ else
 
         build_with_srpm || fatal 1 "Failed to build_with_srpm"
     else
 
         build_with_srpm || fatal 1 "Failed to build_with_srpm"
     else
+        EXTRA_VERSION_DELIMITER=${EXTRA_VERSION_DELIMITER:-"-"}
         source ${0%/*}/lbuild.old_school
 
         old_school_download_kernel
         source ${0%/*}/lbuild.old_school
 
         old_school_download_kernel