Whamcloud - gitweb
LU-12678 socklnd: initialize the_ksocklnd at compile-time.
[fs/lustre-release.git] / contrib / lbuild / funcs.sh
index bbd7709..2f864ae 100644 (file)
@@ -6,16 +6,15 @@ cleanup() {
 error() {
     local msg="$1"
 
-    [ -n "$msg" ] && echo -e "\n${0##*/}: $msg" >&$STDOUT
-
+    if [ -n "$msg" ]; then
+        echo -e "\n${0##*/}: $msg" >&$STDOUT
+    fi
 }
 
 fatal() {
-
     cleanup
     error "$2"
     exit $1
-
 }
 
 #
@@ -56,14 +55,14 @@ find_rpm() {
 
 find_linux_rpms() {
     local prefix="$1"
-    local pathtorpms=${2:-"${KERNELRPMSBASE}/${lnxmaj}/${DISTRO}/${TARGET_ARCH}"}
+    local pathtorpms=${2:-"$KERNELRPMSBASE/$lnxmaj/$DISTROMAJ/$TARGET_ARCH"}
 
-    local wanted_kernel="${lnxmaj}${lnxmin}-${lnxrel}"
+    local wanted_kernel="${lnxmaj}${lnxmin}-${lnxrel}${rpmfix}"
     local kernel_rpms=$(find_linux_rpm "$prefix" "$pathtorpms")
     # call a distro specific hook, if available
-    if type -p find_linux_rpms-$DISTRO; then
+    if type -p find_linux_rpms-$DISTROMAJ; then
         local rpm
-        if rpm=$(find_linux_rpms-$DISTRO "$prefix" "$wanted_kernel" "$pathtorpms"); then
+        if rpm=$(find_linux_rpms-$DISTROMAJ "$prefix" "$wanted_kernel" "$pathtorpms"); then
             kernel_rpms="$kernel_rpms $rpm"
         else
             return 255
@@ -86,10 +85,10 @@ resolve_arch() {
 #     or just gotten rid of.  :-)
 find_linux_rpm() {
     local prefix="$1"
-    local pathtorpms=${2:-"${KERNELRPMSBASE}/${lnxmaj}/${DISTRO}/${TARGET_ARCH}"}
+    local pathtorpms=${2:-"$KERNELRPMSBASE/$lnxmaj/$DISTROMAJ/$TARGET_ARCH"}
 
     local found_rpm=""
-    local wanted_kernel="${lnxmaj}${lnxmin}-${lnxrel}"
+    local wanted_kernel="${lnxmaj}${lnxmin}-${lnxrel}${rpmfix}"
     local ret=1
     if [ -d "$pathtorpms" ]; then
         local rpm
@@ -108,8 +107,8 @@ find_linux_rpm() {
     # done
     if [ -z "$found_rpm" ]; then
         # see if there is a distro specific way of getting the RPM
-        if type -p find_linux_rpm-$DISTRO; then
-            if found_rpm=$(find_linux_rpm-$DISTRO "$prefix" "$wanted_kernel" "$pathtorpms"); then
+        if type -p find_linux_rpm-$DISTROMAJ; then
+            if found_rpm=$(find_linux_rpm-$DISTROMAJ "$prefix" "$wanted_kernel" "$pathtorpms"); then
                 found_rpm="${pathtorpms}/$found_rpm"
                 ret=0
             else
@@ -135,15 +134,23 @@ autodetect_distro() {
         case "$name" in
             "EnterpriseEnterpriseServer")
                 name="oel"
-                version="${version%%.*}"
                 ;;
             "RedHatEnterpriseServer" | "ScientificSL" | "CentOS")
                 name="rhel"
-                version="${version%%.*}"
-                ;;
-            "SUSE LINUX")
-                name="sles"
                 ;;
+           "SUSE LINUX" | "SUSE")
+               name="sles"
+               case "$version" in
+               *.*)    # $version already has patchlevel
+                       ;;
+               *)      # add patchlevel
+                       PATCHLEVEL=$(sed -n -e 's/^PATCHLEVEL = //p' /etc/SuSE-release)
+                       if [ "$PATCHLEVEL" -ne "0" ]; then
+                               version="${version}.$PATCHLEVEL"
+                       fi
+                       ;;
+               esac
+               ;;
             "Fedora")
                 name="fc"
                 ;;
@@ -152,24 +159,27 @@ autodetect_distro() {
                 ;;
         esac
     else
-        echo "You really ought to install lsb_release for accurate distro identification"
+        error "You really ought to install lsb_release for accurate distro identification"
         # try some heuristics
         if [ -f /etc/SuSE-release ]; then
             name=sles
-            version=$(grep ^VERSION /etc/SuSE-release)
-            version=${version#*= }
+            version=$(sed -n -e 's/^VERSION = //p' /etc/SuSE-release)
+           PATCHLEVEL=$(sed -n -e 's/^PATCHLEVEL = //p' /etc/SuSE-release)
+           if [ "$PATCHLEVEL" -ne "0" ]; then
+                   version="${version}.$PATCHLEVEL"
+           fi
         elif [ -f /etc/redhat-release ]; then
             #name=$(head -1 /etc/redhat-release)
             name=rhel
             version=$(echo "$distroname" |
-                      sed -e 's/^[^0-9.]*//g' | sed -e 's/[ \.].*//')
+                      sed -e 's/^[^0-9.]*//g' | sed -e 's/[ ].*//')
         fi
         if [ -z "$name" -o -z "$version" ]; then
             fatal 1 "I don't know how to determine distro type/version.\nEither update autodetect_distro() or use the --distro argument."
         fi
     fi
 
-    echo ${name}${version}
+    echo ${name}-${version}
     return 0
 
 }
@@ -180,14 +190,16 @@ autodetect_target() {
 
     local target=""
     case ${distro} in
-          oel5) target="2.6-oel5";;
-         rhel5) target="2.6-rhel5";;
-         rhel6) target="2.6-rhel6";;
-        sles10) target="2.6-sles10";;
-        sles11) target="$(uname -r | cut -d . -f 1,2)-sles11";;
-          fc15) target="2.6-fc15";;
-          fc18) target="3.x-fc18";;
-            *) fatal 1 "I don't know what distro $distro is.\nEither update autodetect_target() or use the --target argument.";;
+         rhel7*)  target="3.10-rhel7";;
+         rhel8*)  target="4.18-rhel8";;
+        sles11.4) target="$(uname -r | cut -d . -f 1,2)-sles11sp4";;
+        sles11.3) target="$(uname -r | cut -d . -f 1,2)-sles11sp3";;
+        sles11*)  target="$(uname -r | cut -d . -f 1,2)-sles11";;
+        sles12.4) target="$(uname -r | cut -d . -f 1,2)-sles12sp4";;
+        sles12.3) target="$(uname -r | cut -d . -f 1,2)-sles12sp3";;
+        sles12*)  target="$(uname -r | cut -d . -f 1,2)-sles12";;
+          fc18)   target="3.x-fc18";;
+             *)   fatal 1 "I don't know what distro $distro is.\nEither update autodetect_target() or use the --target argument.";;
     esac
 
     echo ${target}