X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=contrib%2Flbuild%2Ffuncs.sh;h=22b115d4e62f7fd3808c79fb6672b1a690fc286d;hb=15998eb78e279f1bfa5059f0f65087f7851d40ff;hp=bbd77096900f89a7dc2196bae17c1f69a33debee;hpb=25c93758d6b1136d268fe3fcc1c4979c17463c0b;p=fs%2Flustre-release.git diff --git a/contrib/lbuild/funcs.sh b/contrib/lbuild/funcs.sh index bbd7709..22b115d 100644 --- a/contrib/lbuild/funcs.sh +++ b/contrib/lbuild/funcs.sh @@ -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,20 @@ 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.5) target="$(uname -r | cut -d . -f 1,2)-sles12sp5";; + 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";; + sles15.1) target="$(uname -r | cut -d . -f 1,2)-sles15sp1";; + sles15.2) target="$(uname -r | cut -d . -f 1,2)-sles15sp2";; + sles15.3) target="$(uname -r | cut -d . -f 1,2)-sles15sp3";; + 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}