Whamcloud - gitweb
LU-7518 build: Remove the Phi accelerator-specific packaging
[fs/lustre-release.git] / contrib / lbuild / lbuild
index f103162..270214e 100755 (executable)
@@ -71,6 +71,7 @@ OSDLDISKFSRPM=true
 OSDZFSRPM=false
 SMPTYPES="smp bigsmp default ''"
 PATCHLESS=false
+WITH_ZFS=""
 XEN=false
 LINUXOBJ=
 DISTRO=
@@ -187,6 +188,9 @@ Usage: ${0##*/} [OPTION]... [-- <lustre configure options>]
     Specifies that the files generated do not include timestamps, and
     that this is an official release.
 
+  --disable-zfs
+    Build Lustre without ZFS.
+
   --src
     Build a .src.rpm, a full kernel patch, and a patched kernel tarball.
 
@@ -281,10 +285,13 @@ check_options() {
     fi
 
     case $TARGET in
+        3.12-sles12)
+            CANONICAL_TARGET="sles12"
+            ;;
         3.10-rhel7)
             CANONICAL_TARGET="rhel7"
             ;;
-        2.6-rhel6)
+        2.6-rhel6*)
             CANONICAL_TARGET="rhel6"
             ;;
         2.6-rhel5)
@@ -572,109 +579,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"
@@ -706,7 +610,7 @@ load_target() {
     #       go away and the target just specify the $RPMSMPTYPE
     [ -z "$RPMSMPTYPE" ] && set_rpm_smp_type
 
-    # CC might have been overwriten in TARGET_FILE
+    # CC might have been overwritten in TARGET_FILE
     if [[ $CC != ccache\ * ]] && which "$CCACHE" &>/dev/null; then
         export CCACHE && export CC="ccache $CC"
     fi
@@ -825,73 +729,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}
@@ -948,12 +785,6 @@ build_lustre() {
         targets="--target $arch $targets"
     done
 
-    local confoptions=""
-
-    if $PATCHLESS; then
-        confoptions="$confoptions --disable-server"
-    fi
-
     local rpmbuildopt='-tb'
     if $NORPM; then
         rpmbuildopt='-tc'
@@ -964,7 +795,7 @@ build_lustre() {
     # These are required prior to the building of lustre server. Client does
     # not require spl/zfs. Use !PATCHLESS to indicate server which follows the
     # line above so is at least consistant.
-    if [ $PATCHLESS == false ] && [ "x$ZFSNOTSUPPORTED" == "x" ]; then
+    if [ $PATCHLESS == false ] && [ "x$WITH_ZFS" == "x" ]; then
         if ! build_spl_zfs; then
             popd >/dev/null # pushd lustre
             return 255
@@ -998,12 +829,15 @@ build_lustre() {
     fi
 
     RPMBUILD_DEFS="$RPMBUILD_DEFS ${FIND_REQUIRES:+--define \"__find_requires $FIND_REQUIRES\"}"
-    RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"configure_args $confoptions ${CONFIGURE_FLAGS}\""
+    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\""
 
+    # allow environment setting to override ldiskfs series selection
+    [ -n "$LDISKFS_SERIES" ] && export LDISKFS_SERIES
+
     eval $RPMBUILD $targets $rpmbuildopt "$LUSTRE" $RPMBUILD_DEFS \
         ${osd_zfs:+--with zfs} \
         ${osd_ldiskfs:+--with ldiskfs} 2>&1 || \
@@ -1019,13 +853,19 @@ build_lustre() {
 
 }
 
+# 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))
     echo "Building Lustre DKMS RPMs for: $BUILD_ARCHS..."
     ./configure --enable-dist || return 255
-    $RPMBUILD --define="_topdir $TOPDIR" -bs lustre-dkms.spec || return 255
-    $RPMBUILD --rebuild --define="_topdir $TOPDIR" $TOPDIR/SRPMS/lustre-dkms-$ver-*.src.rpm || return 255
+
+    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
+    fi
     return 0
 }
 
@@ -1049,7 +889,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.3-1.1}
+    SPLZFSVER=${SPLZFSVER:-0.6.4.2}
     SPLZFSTAG=${SPLZFSTAG:-}
 
     # The files expect a kver to be set to the kernel version .
@@ -1165,34 +1005,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
@@ -1962,7 +1774,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,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
@@ -2060,13 +1872,13 @@ while [ "$1" ]; do
             OFED_VERSION="$2"
             shift 2
             ;;
-        --mpss-version)
-            MPSS_VERSION="$2"
-            shift 2
-            ;;
         --publish)
             shift
             ;;
+       --disable-zfs)
+           WITH_ZFS="no"
+           shift
+           ;;
         --release)
             RELEASE=true
             shift
@@ -2126,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
-    ZFSNOTSUPPORTED="yes"
-
-    # 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