Whamcloud - gitweb
LU-8519 build: make SLES use lbuild kernel-devel
[fs/lustre-release.git] / contrib / lbuild / lbuild
index 45582d0..cac706e 100755 (executable)
@@ -36,7 +36,7 @@ push_exit_trap "kill -INT -$$ || true" kill_children
 #BUILD_GEN=5   # TT-107: don't cache the BUILD dir
 BUILD_GEN=6    # TT-1092: don't cache the BUILD dir, to rebuild external OFED
 
-TOPDIR=$PWD
+TOPDIR="$PWD"
 
 KERNELDIR=
 LINUX=
@@ -65,7 +65,6 @@ 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
 IOKITRPM=true
 OSDLDISKFSRPM=true
 OSDZFSRPM=false
@@ -104,8 +103,6 @@ LUSTRE_TESTS=true
 
 DATE=$(date)
 
-RPMBUILD=
-
 export CC=${CC:-gcc}
 
 # Readlink is not present on some older distributions: emulate it.
@@ -145,7 +142,7 @@ Usage: ${0##*/} [OPTION]... [-- <lustre configure options>]
     Use ccache
 
   --norpm
-    Do not build RPMs (compile only mode)
+    Unused.
 
   --patchless
     Build lustre client only
@@ -334,31 +331,47 @@ check_options() {
         TIMESTAMP=$(date -d "$DATE" "+%Y%m%d%H%M%S")
     fi
 
-    RPMBUILD=$(which rpmbuild 2>/dev/null | head -1)
-    if [ ! "$RPMBUILD" -o "$RPMBUILD" == "" ]; then
-        RPMBUILD=$(which rpm 2>/dev/null | head -1)
-        if [ ! "$RPMBUILD" -o "$RPMBUILD" == "" ]; then
-            usage 1 "Could not find binary for making rpms (tried rpmbuild and rpm)."
-        fi
+    local RPMBUILD=$(which rpmbuild 2>/dev/null | head -n 1)
+    RPMBUILD=${RPMBUILD:-$(which rpm 2>/dev/null | head -n 1)}
+    if [ -z "$RPMBUILD" ]; then
+        usage 1 "Could not find binary for making rpms (tried rpmbuild and rpm)."
+    fi
+
+    local BINDIR="$TOPDIR/bin"
+    if [ -d $BINDIR ]; then
+        rm -rf $BINDIR >/dev/null 2>&1 || true
     fi
 
+    mkdir -p $BINDIR || fatal 1 "error trying to create $BINDIR"
+    export PATH=$BINDIR:$PATH
+
+    cat >${BINDIR}/rpmbuild <<EOF
+#!/bin/bash
+
+ARGS="\${FIND_REQUIRES:+--define \"__find_requires \$FIND_REQUIRES\"}"
+for arg; do
+    case \$arg in
+    *\'* ) ARGS="\$ARGS \"\$arg\"" ;;
+    * ) ARGS="\$ARGS '\$arg'" ;;
+    esac
+done
+
+eval $RPMBUILD \$ARGS
+EOF
+    chmod 755 ${BINDIR}/rpmbuild
+
     if [ -n "$CCACHE" ]; then
         which "$DISTCC" &>/dev/null && export DISTCC RPM_BUILD_NCPUS
 
         if which "$CCACHE" &>/dev/null; then
-            local ccache=$(which "$CCACHE")
-            local bindir="$TOPDIR/bin"
+            local ccache=$(which "$CCACHE" 2>/dev/null | head -n 1)
 
-            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"
+            ln -s "$ccache" ${BINDIR}/ccache
+            ln -s "$ccache" ${BINDIR}/cc
+            ln -s "$ccache" ${BINDIR}/$CC
+
+            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
@@ -371,7 +384,6 @@ check_options() {
     fi
 
     return 0
-
 }
 
 # compare two versions $1 and $2. if $1 < $2, return 0 otherwise return 1.
@@ -393,6 +405,8 @@ compare_version () {
             return 1
         fi
     done
+
+    return 0
 }
 
 uniqify() {
@@ -579,109 +593,6 @@ download_ofed() {
 
 }
 
-parse_mpss_info() {
-    local file="$1"
-    local build="$2"
-    local distro="$3"
-
-    [ -r "$file" ] || fatal 1 "Could not find MPSS info file"
-
-    # convert to MPSS distro naming
-    distro=${distro/sles/suse}
-    distro_name=${distro%%-*}
-
-    # extract links from MPSS info file
-    local urls=$(cat "$file" | \
-        tr -d '\t\r\n' | sed -e 's?\(</[a-zA-Z]*>\)?\1\n?g' | \
-        grep '.intel.com/' | \
-        sed -e 's/^.*[hH][rR][eE][fF]="\([^>"]\+\)".*$/\1/g' | \
-        grep '.tar')
-    local res2=""
-    local res3=""
-    for url in $urls; do
-        local ver2=""
-        local ver3=""
-        # Try to match with MPSS 3.3 package
-        if [[ $url =~ mpss-[0-9].[0-9](.[0-9]*)?-linux.tar ]]; then
-            ver3=${url##*mpss-}
-            ver3=${ver3%%-linux.tar}
-        # Try to match with MPSS 3.x or 3.x.x distro package
-        elif [[ $url =~ mpss-[0-9].[0-9](.[0-9]*)?-$distro.tar ]]; then
-            ver3=${url##*mpss-}
-            ver3=${ver3%%-$distro.tar}
-        # Try to match with MPSS 3.x or 3.x.x source package
-        elif [[ $url =~ mpss-src-[0-9].[0-9](.[0-9]*)?.tar ]]; then
-            ver3=${url##*mpss-src-}
-            ver3=${ver3%%.tar}
-        # Try to match with MPSS 3.x or 3.x.x cross compiler package
-        elif [[ $url =~ mpss-[0-9].[0-9](.[0-9]*)?-k1om.tar ]]; then
-            ver3=${url##*mpss-}
-            ver3=${ver3%%-k1om.tar}
-        # Try to match with MPSS 2.1.x source package
-        elif [[ $url =~ _src-[0-9].[0-9].[0-9]*-[0-9]*_$distro_name.tar ]]; then
-            ver2=${url##*_src-}
-            ver2=${ver2%%_$distro_name.tar}
-        fi
-
-        if [ -n "$ver3" ]; then
-            ver3="${ver3}-0"
-            if [ -z "$build" ]; then
-                res3="$ver3"
-            elif [ "${build%%-*}" = "${ver3%%-*}" ]; then
-                res3="$res3 $url"
-            fi
-        elif [ -n "$ver2" ]; then
-            if [ -z "$build" ]; then
-                res2="$ver2"
-            elif [ "$build" = "$ver2" ]; then
-                res2="$res2 $url"
-            fi
-        fi
-
-    done
-
-    if [ -z "$build" ]; then
-        # return a last version of MPSS
-        if [ -n "$res3" ]; then
-            echo "$res3"
-        else
-            echo "$res2"
-        fi
-    elif [ "${build%%.*}" = "3" ]; then
-        # return URLs from MPSS info file
-        echo "$res3"
-    else
-        # return URLs from MPSS info file
-        echo "$res2"
-    fi
-}
-
-# Get public information about last releases of
-# Intel Manycore Platform Software Stack (MPSS)
-download_mpss_info() {
-    local file="$1"
-    local force="${2:-true}"
-    local url=${MPSS_URL:-"http://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss"}
-
-    download_file "$url" "$file" "$force"
-}
-
-download_mpss() {
-    local file="$1"
-    local force="${2:-false}"
-    local urls=$(parse_mpss_info "$file" ${MPSS_VERSION} ${MPSS_DISTRO})
-
-    [ -z "$urls" ] && return 0
-
-    local url
-    local i=0
-    for url in $urls; do
-        file="$KERNELTREE/mpss_src-${MPSS_VER}-${MPSS_BLD}-${MPSS_DISTRO}-part$i.tar"
-        download_file "$url" "$file" "$force"
-        i=$((i+1))
-    done
-}
-
 load_target() {
 
     EXTRA_VERSION_save="$EXTRA_VERSION"
@@ -762,9 +673,6 @@ load_target() {
         # kernel.  don't make it look like one
         if $PATCHLESS || [ -n "$SERIES" ]; then
             EXTRA_VERSION=$(echo $EXTRA_VERSION | sed -e "s/\(.*_lustre\)\..*/\1/")
-            if ! $PATCHLESS && [ -n "$BUILDID" ]; then
-                EXTRA_VERSION="${EXTRA_VERSION}.${BUILDID}"
-            fi
         fi
     fi
     # EXTRA_VERSION=${EXTRA_VERSION//-/_}
@@ -832,73 +740,6 @@ unpack_lustre() {
 
 }
 
-unpack_mpss() {
-
-    [ -d mpss ] && return 0
-
-    if [ "$MPSS_MAJ" = "3" ]; then
-        local file
-        local i
-        for i in $(seq 0 9); do
-            file="$KERNELTREE/mpss_src-${MPSS_VER}-${MPSS_BLD}-${MPSS_DISTRO}-part$i.tar"
-            if [ -r "$file" ]; then
-                untar "$file" \
-                    "mpss-$MPSS_VER/*/linux-*.tar.bz2" \
-                    "mpss-$MPSS_VER/*/kernel-dev-*.rpm" \
-                    "mpss-$MPSS_VER/*/ofed-driver-devel-*.rpm" \
-                    "mpss-$MPSS_VER/*/ofed-driver-*-devel-*.rpm"
-            fi
-        done
-        # Extract kernel configs
-        file=$(find mpss-$MPSS_VER -type f -path "*/kernel-dev-*.rpm" -print -quit)
-        if ! rpm2cpio "$file" | cpio -idm; then
-            echo "Error extracting MPSS kernel configs"
-            return 1
-        fi
-        # Unpack kernel sources
-        file=$(find mpss-$MPSS_VER -type f -path "*/linux-*.tar.bz2" -print -quit)
-        if ! untar "$file"; then
-            echo "Error unpacking MPSS kernel sources"
-            return 1
-        fi
-        # Extract OFED headers
-        file=$(find mpss-$MPSS_VER -type f -path "*/ofed-driver-*-devel-*.rpm" -print -quit)
-        if ! rpm2cpio "$file" | cpio -idm; then
-            # Name was changed in MPSS 3.3
-            file=$(find mpss-$MPSS_VER -type f -path "*/ofed-driver-devel-*.rpm" -print -quit)
-            if ! rpm2cpio "$file" | cpio -idm; then
-                echo "Error extracting MPSS OFED headers"
-                return 1
-            fi
-        fi
-        # Remove unpacked archives to save space
-        rm -rf mpss-$MPSS_VER
-        # Make link to MPSS kernel sources
-        ln -sf linux-* mpss
-    else
-        local dir="mpss-${MPSS_VER}-${MPSS_BLD}-${MPSS_DISTRO%%-*}"
-
-        mkdir $dir || return 255
-        pushd $dir >/dev/null || return 255
-        if ! untar "$KERNELTREE/mpss_src-${MPSS_VER}-${MPSS_BLD}-${MPSS_DISTRO}-part0.tar" "*/gpl/*full_src*"; then
-            popd >/dev/null
-            rm -rf $dir
-            echo "Error unpacking MPSS tarball 1"
-            return 1
-        fi
-        local file=$(find . -type f -path "*/gpl/*full_src*")
-        if ! untar "$file"; then
-            popd >/dev/null
-            rm -rf $dir
-            echo "Error unpacking MPSS tarball 2"
-            return 1
-        fi
-        popd >/dev/null
-        ln -sf $dir mpss
-    fi
-
-}
-
 do_patch_linux() {
 
     local do_patch=${1:-true}
@@ -939,6 +780,7 @@ do_patch_linux() {
 build_lustre() {
     local linux="$1"
     local linuxobj="$2"
+    local configure_args=""
 
     cp "$LUSTRE" SOURCES
 
@@ -950,16 +792,6 @@ build_lustre() {
     fi
 
     echo "Building Lustre RPMs for: $BUILD_ARCHS..."
-    local targets arch
-    for arch in $BUILD_ARCHS; do
-        targets="--target $arch $targets"
-    done
-
-    local rpmbuildopt='-tb'
-    if $NORPM; then
-        rpmbuildopt='-tc'
-        echo NORPM mode. Only compiling.
-    fi
 
     # If server we now build the spl and zfs modules against the lustre kernel.
     # These are required prior to the building of lustre server. Client does
@@ -973,67 +805,71 @@ build_lustre() {
     fi
 
     if $PATCHLESS; then
-        RPMBUILD_DEFS="$RPMBUILD_DEFS --without servers"
-        if [ -n "$CROSS_SUFFIX" ]; then
-            RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"lustre_name lustre-client$CROSS_SUFFIX\""
-        fi
+        configure_args="$configure_args --disable-server"
     fi
 
     # ditto for the lustre-tests boolean
     if ! $LUSTRE_TESTS; then
-        RPMBUILD_DEFS="$RPMBUILD_DEFS --without lustre_tests"
+        configure_args="$configure_args --disable-tests"
     fi
 
     if ! $IOKITRPM; then
-        RPMBUILD_DEFS="$RPMBUILD_DEFS --without lustre_iokit"
+        configure_args="$configure_args --disable-iokit"
     fi
 
-    local osd_zfs=""
-    if $OSDZFSRPM; then
-        osd_zfs="yes"
+    if ! $OSDZFSRPM; then
+        configure_args="$configure_args --without-zfs"
     fi
 
-    local osd_ldiskfs=""
-    if $OSDLDISKFSRPM; then
-        osd_ldiskfs="yes"
+    if ! $OSDLDISKFSRPM; then
+        configure_args="$configure_args --disable-ldiskfs"
     fi
 
-    RPMBUILD_DEFS="$RPMBUILD_DEFS ${FIND_REQUIRES:+--define \"__find_requires $FIND_REQUIRES\"}"
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"configure_args ${CONFIGURE_FLAGS}\""
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"kdir $linux\""
-    RPMBUILD_DEFS="$RPMBUILD_DEFS ${linuxobj:+--define \"kobjdir $linuxobj\"}"
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"_tmppath $TMPDIR\""
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"_topdir $TOPDIR\""
+    configure_args="$configure_args --with-linux=$linux"
+    configure_args="$configure_args ${linuxobj:+--with-linux-obj=$linuxobj}"
 
-    eval $RPMBUILD $targets $rpmbuildopt "$LUSTRE" $RPMBUILD_DEFS \
-        ${osd_zfs:+--with zfs} \
-        ${osd_ldiskfs:+--with ldiskfs} 2>&1 || \
+    # allow environment setting to override ldiskfs series selection
+    [ -n "$LDISKFS_SERIES" ] && export LDISKFS_SERIES
+
+    ./configure $configure_args $CONFIGURE_FLAGS 2>&1 ||
+        fatal 1 "Error in configure."
+    make rpms 2>&1 ||
         fatal 1 "Error building rpms for $BUILD_ARCHS."
 
-    if $DO_SRC; then
-        if ! eval $RPMBUILD -ts "$LUSTRE" $RPMBUILD_DEFS 2>&1; then
-            popd >/dev/null
-            return 255
-        fi
-    fi
+    # move RPMs into place where they are expected to be
+    for arch in $BUILD_ARCHS; do
+        mv -f *lustre*.${arch}.rpm $TOPDIR/RPMS/${arch}/
+    done
+    mv -f lustre-*.src.rpm $TOPDIR/SRPMS/
+
     popd >/dev/null
+       if type -p cleanup_rpmmacros; then
+               cleanup_rpmmacros
+       fi
 
+    return 0
 }
 
 # Only zfs Lustre DKMS Server is supported
 build_lustre_dkms() {
-    [ -n "$MPSS_VERSION" ] && return 0
-    local ver=$(eval echo  $(awk '/LUSTRE_VERSION_STRING/ {print $3}'  lustre/include/lustre_ver.h))
+    local build_args=""
+    local name_prefix="lustre"
+    local ver=$(sed -n -e 's/^LUSTRE_VERSION = //p' LUSTRE-VERSION-FILE)
+
     echo "Building Lustre DKMS RPMs for: $BUILD_ARCHS..."
-    ./configure --enable-dist || return 255
+    ./configure --enable-dist || fatal 1 "Error in DKMS configure."
 
     if $PATCHLESS; then
-       $RPMBUILD --define="_topdir $TOPDIR" --without servers -bs lustre-dkms.spec || return 255
-        $RPMBUILD --rebuild --define="_topdir $TOPDIR" --without servers $TOPDIR/SRPMS/lustre-client-dkms-$ver-*.src.rpm || return 255
-    else
-       $RPMBUILD --define="_topdir $TOPDIR" -bs lustre-dkms.spec || return 255
-        $RPMBUILD --rebuild --define="_topdir $TOPDIR" $TOPDIR/SRPMS/lustre-dkms-$ver-*.src.rpm || return 255
+        build_args="--without servers"
+        name_prefix="lustre-client"
     fi
+
+    rpmbuild --define "_topdir $TOPDIR" $build_args -bs lustre-dkms.spec ||
+        fatal 1 "Error building DKMS .src.rpm for $BUILD_ARCHS."
+    rpmbuild --define "_topdir $TOPDIR" $build_args \
+             --rebuild $TOPDIR/SRPMS/$name_prefix-dkms-$ver-*.src.rpm ||
+        fatal 1 "Error building DKMS .rpm for $BUILD_ARCHS."
+
     return 0
 }
 
@@ -1057,7 +893,7 @@ build_spl_zfs() {
     # The spl/zfs spec files expect RPM_BUILD_ROOT to point to the root of the
     # destination for the rpms
     export RPM_BUILD_ROOT=$TOPDIR
-    SPLZFSVER=${SPLZFSVER:-0.6.5.3}
+    SPLZFSVER=${SPLZFSVER:-0.6.5.7}
     SPLZFSTAG=${SPLZFSTAG:-}
 
     # The files expect a kver to be set to the kernel version .
@@ -1069,7 +905,7 @@ build_spl_zfs() {
 
         local rpmpkg
 
-        [ "$pkg" == "zfs" ] && spldir="$(ls -d $TOPDIR/usr/src/spl-*/|tail -1)"
+        [ "$pkg" == "zfs" ] && spldir="$(ls -d $TOPDIR/usr/src/spl-*|tail -1)"
 
         # need to fetch the repo in order to build it.
         # default to github but allow override
@@ -1122,8 +958,9 @@ build_spl_zfs() {
         # Manually build rpms
         for spec in $speclist; do
             echo "Building RPMs from $pkg/$specdir/$spec"
-            if ! $RPMBUILD $rpmb $pkg/$specdir/$spec \
+            if ! rpmbuild $rpmb $pkg/$specdir/$spec \
                 --nodeps -v \
+                --define "_use_internal_dependency_generator 0" \
                 --define "require_kdir ${LINUX}" \
                 ${LINUXOBJ:+--define "require_kobj ${LINUXOBJ}"} \
                 ${spldir:+--define "require_spldir ${spldir}"} \
@@ -1164,7 +1001,7 @@ build_spl_zfs() {
         fi
         popd
 
-        CONFIGURE_FLAGS="--with-$pkg=$(ls -d $TOPDIR/usr/src/$pkg-*/|tail -1) ${CONFIGURE_FLAGS}"
+        CONFIGURE_FLAGS="--with-$pkg=$(ls -d $TOPDIR/usr/src/$pkg-*|tail -1) ${CONFIGURE_FLAGS}"
         CONFIGURE_FLAGS="--with-$pkg-obj=$(ls -d $TOPDIR/usr/src/$pkg-*/$kver*|tail -1) ${CONFIGURE_FLAGS}"
     done
 
@@ -1173,34 +1010,6 @@ build_spl_zfs() {
     return 0
 }
 
-prepare_mpss() {
-
-    pushd mpss >/dev/null || return 255
-    if [ "$MPSS_MAJ" = "3" ]; then
-        cp -f ../boot/config-* .config
-        if ! make ARCH=k1om silentoldconfig ; then
-            popd >/dev/null
-            return 1
-        fi
-        if ! make ARCH=k1om modules_prepare ; then
-            popd >/dev/null
-            return 1
-        fi
-        cp -f ../boot/Module.symvers-* Module.symvers
-    else
-        if ! make defconfig-miclinux; then
-            popd >/dev/null
-            return 1
-        fi
-        if ! make -C card/kernel ARCH=k1om modules_prepare ; then
-            popd >/dev/null
-            return 1
-        fi
-    fi
-    popd >/dev/null
-
-}
-
 stage() {
 
     [ "$STAGEDIR" ] || return 0
@@ -1209,10 +1018,9 @@ stage() {
         rpmdir="${STAGEDIR}/${CANONICAL_TARGET}-${arch}"
         echo "${0##*/}: Copying RPMs into ${rpmdir}"
         mkdir -p "${rpmdir}"
-        cp -v RPMS/${arch}/*.rpm "${rpmdir}"
-        if [ -d RPMS/noarch ]; then
-            cp -v RPMS/noarch/*.rpm "${rpmdir}"
-        fi
+        for rpm in $(ls RPMS/${arch}/*.rpm RPMS/noarch/*.rpm); do
+            cp -v $rpm "${rpmdir}"
+        done
     done
 
     cp -v "$LUSTRE" "$STAGEDIR"
@@ -1388,8 +1196,7 @@ EOF
     if compare_version $OFED_VERSION 3.0; then
         local OFA_KERNEL_RELEASE=$(echo -n ${linuxrelease} | sed -e 's/-/_/g')
     fi
-    if ! $RPMBUILD $BUILD_TYPE --define 'build_kernel_ib 1' --define 'build_kernel_ib_devel 1' \
-                  ${FIND_REQUIRES:+--define "__find_requires $FIND_REQUIRES"} \
+    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}" \
@@ -1549,7 +1356,8 @@ build_kernel_with_srpm() {
         local REUSE_SIGNATURE=$({ echo -en $release_str;
                                   echo $BUILD_GEN;
                                   cat "$CONFIG_FILE";
-                                  cat "$TARGET_FILE";
+                                  cat "$TARGET_FILE" |
+                                  sed -e '/_VERSION=/s/_[0-9]*_g.*$//g';
                                   cat "$FULL_PATCH";
                                   cat "$LBUILD_DIR/lbuild";
                                   cat "$LBUILD_DIR/lbuild-$DISTROMAJ"; } |
@@ -1781,7 +1589,7 @@ build_with_srpm() {
     # 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"
+    export FIND_REQUIRES="$(pwd)/find-requires"
     chmod 755 {symset-table,find-requires{,.ksyms}}
     local tmp="$(pwd)"
     tmp="${tmp//\//\\/}"
@@ -1798,6 +1606,7 @@ EOF
 set -x
 .
 g/\/.*\/\(symset-table\)/s//$tmp\/\1/g
+g/\(\/usr\/src\/kernels\/\)/s//$tmp\/reused\1/g
 wq
 EOF
     ed symset-table <<EOF
@@ -1970,7 +1779,7 @@ set -E
 
 [ -r ~/.lbuildrc ] && . ~/.lbuildrc
 
-options=$(getopt -o D:h -l kerneltree:,distro:,kernelrpm:,reusebuild:,patchless,ccache,norpm,external-patches:,timestamp:,extraversion:,kerneldir:,linux:,lustre:,nodownload,nosrc,noiokit,ofed-version:,mpss-version:,publish,disable-zfs,release,set-value:,src,stage:,target:,target-archs:,with-linux:,xen -- "$@")
+options=$(getopt -o D:h -l kerneltree:,distro:,kernelrpm:,reusebuild:,patchless,ccache,norpm,external-patches:,timestamp:,extraversion:,kerneldir:,linux:,lustre:,nodownload,nosrc,noiokit,ofed-version:,publish,disable-zfs,release,set-value:,src,stage:,target:,target-archs:,with-linux:,xen -- "$@")
 
 if [ $? != 0 ]; then
     usage 1
@@ -2029,7 +1838,6 @@ while [ "$1" ]; do
             shift 2
             ;;
         --norpm)
-            NORPM=true
             shift
             ;;
         --noiokit)
@@ -2068,10 +1876,6 @@ while [ "$1" ]; do
             OFED_VERSION="$2"
             shift 2
             ;;
-        --mpss-version)
-            MPSS_VERSION="$2"
-            shift 2
-            ;;
         --publish)
             shift
             ;;
@@ -2127,10 +1931,6 @@ check_options
 
 unpack_lustre
 
-# XXX - should we _always_ get the buildid from the META file?  what are the
-# other (i.e. non-lustre-tarball use cases of lbuild)?
-BUILDID=$(sed -n -e 's/^BUILDID = //p' lustre/META)
-
 load_target
 
 if [ -n "$OFED_VERSION" -a "$OFED_VERSION" != "inkernel" ]; then
@@ -2138,70 +1938,6 @@ if [ -n "$OFED_VERSION" -a "$OFED_VERSION" != "inkernel" ]; then
     unpack_ofed || fatal 1 "Error unpacking OFED tarball"
 fi
 
-if [ -n "$MPSS_VERSION" ]; then
-    [ -z "$MPSS_DISTRO" ] && MPSS_DISTRO=$(autodetect_distro)
-
-    MPSS_INFO=$(mktemp -u mpss-info-XXXXXXXXXX.html)
-    download_mpss_info "$MPSS_INFO"
-
-    if [ "$MPSS_VERSION" = "last" ]; then
-        MPSS_VERSION=$(parse_mpss_info "$MPSS_INFO" "" ${MPSS_DISTRO})
-        [ -z "$MPSS_VERSION" ] &&
-            fatal 1 "Could not determine the last MPSS version"
-    fi
-
-    MPSS_MAJ=${MPSS_VERSION%%.*}
-    MPSS_VER=${MPSS_VERSION%%-*}
-    MPSS_BLD=${MPSS_VERSION##*-}
-    [ "$MPSS_VER" = "$MPSS_BLD" ] && MPSS_BLD=0
-
-    download_mpss "$MPSS_INFO"
-    [ -r "$MPSS_INFO" ] && rm -f "$MPSS_INFO"
-    echo "Building with MPSS $MPSS_VER-$MPSS_BLD"
-    unpack_mpss  || fatal 1 "Error unpacking MPSS tarballs"
-    prepare_mpss || fatal 1 "Error preparing MPSS for kernel modules build"
-
-    if [ -z "$MPSS_OFED" ]; then
-        MPSS_OFED=$(find $PWD -type f -path "*/ofed-driver*/Module.symvers" -print -quit)
-        if [ -n "$MPSS_OFED" ]; then
-            MPSS_OFED="--with-o2ib=$(dirname $MPSS_OFED)"
-        else
-            MPSS_OFED="--without-o2ib"
-        fi
-    fi
-
-    # disable unsupported parts:
-    PATCHLESS=true
-    IOKITRPM=false
-    LDISKFSRPM=false
-    WITH_ZFS="no"
-
-    # define variables for cross compilation:
-    CROSS_SUFFIX="-mic"
-    if [ "$MPSS_MAJ" = "3" ]; then
-        CC_TARGET_ARCH=k1om-mpss-linux
-        LINUX="$TOPDIR/mpss"
-        RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"cross_requires /bin/sh\""
-    else
-        CC_TARGET_ARCH=x86_64-k1om-linux
-        LINUX="$TOPDIR/mpss/card/kernel"
-        RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"cross_requires intel-mic-gpl = $MPSS_VER\""
-    fi
-    LUSTRE_VERSION=$(sed -n -e 's/^VERSION = //p' lustre/META)
-    CONFIGURE_FLAGS="$CONFIGURE_FLAGS $MPSS_OFED --host=$CC_TARGET_ARCH --build=x86_64-pc-linux"
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"post_script build/gen_filelist.sh\""
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"make_args ARCH=k1om CROSS_COMPILE=${CC_TARGET_ARCH}-\""
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"cross_path ${CROSS_PATH:=/opt/lustre/${LUSTRE_VERSION}/${CC_TARGET_ARCH}}\""
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"rootdir %{cross_path}\""
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"_prefix %{cross_path}/usr\""
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"_mandir %{_prefix}/share/man\""
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"_sysconfdir %{cross_path}/etc\""
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"kmoddir extra\""
-
-    # redefine CC for proper ./configure during rpmbuild
-    export CC=${CC_TARGET_ARCH}-gcc
-fi
-
 # make sure the RPM build environment is set up
 create_rpmbuild_dirs