- local force="${1:-false}"
-
- if [ -z "$OFED_VERSION" -o "$OFED_VERSION" = "inkernel" ]; then
- return 0
- fi
-
- local OFED_BASE_VERSION=$OFED_VERSION
- if [[ $OFED_VERSION = *.*.*.* ]]; then
- OFED_BASE_VERSION=${OFED_VERSION%.*}
- fi
-
- local location="https://www.openfabrics.org/downloads/OFED/ofed-${OFED_BASE_VERSION}/"
-
- if [[ $OFED_VERSION = *-[rR][cC][0-9] ]]; then
- local Mmv
- Mmv=${OFED_VERSION%%-[rR][cC][0-9]}
- location="https://www.openfabrics.org/downloads/OFED/ofed-${Mmv}/"
- fi
-
- if [[ $OFED_VERSION = daily-* ]]; then
- local Mmv
- Mmv=${OFED_VERSION/daily-/}
- daily=${OFED_VERSION##$Mmv-}
- location="https://www.openfabrics.org/downloads/OFED/ofed-${Mmv}-daily/"
- # find the filename for the version for the date specified
- OFED_VERSION=$(curl -s "$location" | sed -nre "/${Mmv}-/s/.*href=\"OFED-(${Mmv}-[0-9]{8,8}-[0-9]{4,4}).tgz.*$/\1/p" | tail -1)
- if [ -z "$OFED_VERSION" ]; then
- fatal 1 "Could not determine the filename of the OFED snapshot for ${daily}"
- fi
- fi
-
- local file="OFED-${OFED_VERSION}.tgz"
- download_file "$location/$file" "$KERNELTREE" "$force"
+ local ofed_type="$1"
+ local ofed_version="$2"
+ local force="${3:-false}"
+ local distro_name="${DISTRO}"
+ local arch="${TARGET_ARCH}"
+ local location
+ local file
+
+ #if a src tarball has been given in the command line, we use it
+ #The format of the tarball must be OFED-${OFED_VERSION}.tgz
+ [ -n "${OFED_SRC}" ] && return 0
+
+ case $ofed_type in
+ ofa)
+ location="https://www.openfabrics.org/downloads/OFED/ofed-${ofed_version}/"
+ # version include RC
+ if [[ $ofed_version = *-[rR][cC][0-9] ]]; then
+ ofed_version_loc=${ofed_version%%-[rR][cC][0-9]}
+ location="https://www.openfabrics.org/downloads/OFED/ofed-${ofed_version_loc}/"
+ fi
+ # daily build
+ if [[ $ofed_version = *-daily ]]; then
+ ofed_version=${ofed_version/-daily/}
+ location="https://www.openfabrics.org/downloads/OFED/ofed-${ofed_version}-daily/"
+ # find the filename for latest version
+ ofed_version=$(curl -1 -s "$location" | sed -nre "s/.*href=\"OFED-(${ofed_version//./\\.}-[0-9]{8}-[0-9]{4}).tgz.*$/\1/p" | tail -1)
+ if [ -z "$ofed_version" ]; then
+ fatal 1 "Could not determine the filename of the OFED snapshot from daily "
+ fi
+ fi
+
+ file="OFED-${ofed_version}.tgz"
+ download_file "$location/$file" "$KERNELTREE" "$force"
+ ;;
+ mlnx)
+ location="http://www.mellanox.com/downloads/ofed/MLNX_OFED-${ofed_version}"
+ # this is a work around for suse distro (sles11.3). what we need is
+ # sles11sp3. We really need to redesign how we use target and distro
+ [[ $distro_name =~ sles ]] && distro_name=${DISTRO/./sp}
+ if [[ $arch = "aarch64" ]]; then
+ file="MLNX_OFED_LINUX-${ofed_version}-${distro_name}alternate-${arch}.tgz"
+ else
+ file="MLNX_OFED_LINUX-${ofed_version}-${distro_name}-${arch}.tgz"
+ fi
+ download_file "$location/$file" "$KERNELTREE" "$force"
+ ;;
+ ifs)
+ location="http://downloadmirror.intel.com/24625/eng/"
+ file="IntelIB-Basic.$(echo ${distro_name%%.*} | tr '[:lower:]' '[:upper:]')-${arch}.${ofed_version}.tgz"
+ download_file "$location/$file" "$KERNELTREE" "$force"
+ ;;
+ *)
+ fatal 1 "Error: unknown OFED type: $ofed_type"
+
+ esac
+ # version might change due to detect daily version
+ OFED_VERSION=${ofed_version}