Whamcloud - gitweb
b=19762
[fs/lustre-release.git] / build / lbuild
index 18665ad..f285ea6 100755 (executable)
@@ -279,6 +279,9 @@ check_options() {
         2.6-sles10)
             CANONICAL_TARGET="sles10-2.6"
             ;;
+        2.6-sles11)
+            CANONICAL_TARGET="sles11"
+            ;;
         hp_pnnl-2.4)
             CANONICAL_TARGET="hp-pnnl-2.4"
             ;;
@@ -800,6 +803,8 @@ find_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:-"-"}
@@ -834,7 +839,7 @@ find_linux_rpm() {
 # 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
@@ -842,17 +847,36 @@ unpack_linux_rpm() {
     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#.}-}"
@@ -889,9 +913,6 @@ unpack_linux_rpm() {
                 RC=255
             fi
         fi
-    else
-        RC=255
-    fi
     popd
     return $RC
 }
@@ -919,7 +940,7 @@ build_kernel_ib() {
              --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-*.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 --without-srp-target-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"
@@ -941,6 +962,11 @@ 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
@@ -1079,7 +1105,7 @@ build_kernel_with_srpm() {
     # 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=$((echo $BUILD_GEN; 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"
@@ -1104,7 +1130,7 @@ build_kernel_with_srpm() {
     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 || {
@@ -1115,7 +1141,7 @@ 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
+        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}" \
@@ -1158,7 +1184,7 @@ build_with_srpm() {
             # 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
@@ -1170,7 +1196,7 @@ build_with_srpm() {
         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