1#!/usr/bin/env sh 2 3# 4# petscversion <gt,lt,le,ge,eq> major.minor[.subminor]" 5# returns 1 on match else 0 6# 7# For example: petscversion gt 3.22.1" 8 9if [ "${PETSC_DIR}" = "" ] ; then 10 dir=$(dirname "$0") 11 dir=$(dirname "$dir") 12 dir=$(dirname "$dir") 13 PETSC_DIR=$(dirname "$dir") 14fi 15 16file=${PETSC_DIR}/include/petscversion.h 17 18if [ ! -f "$file" ]; then 19 echo "Unable to find petscversion.h; ensure the environmental variable PETSC_DIR is set correctly" 20 exit 1 21fi 22 23major=$(grep "#define PETSC_VERSION_MAJOR" "$file" | tr -s ' ' | cut -d" " -f 3) 24minor=$(grep "#define PETSC_VERSION_MINOR" "$file" | tr -s ' ' | cut -d" " -f 3) 25subminor=$(grep "#define PETSC_VERSION_SUBMINOR" "$file" | tr -s ' ' | cut -d" " -f 3) 26release=$(grep "#define PETSC_VERSION_RELEASE" "$file" | tr -s ' ' | cut -d" " -f 3) 27 28if [ $# -lt 1 ]; then 29 echo "${major}"."${minor}"."${subminor}" 30 exit 0 31fi 32 33t=$1 34v=$2 35 36vmajor=$(echo "$v" | cut -d"." -f 1) 37vminor=$(echo "$v" | cut -d"." -f 2) 38vsubminor=$(echo "$v" | cut -d"." -f 3) 39 40if [ "${t}X" = "X" ] || [ "${v}X" = "X" ]; then 41 echo "Usage: petscversion <gt,lt,le,ge,eq> version" 42 echo "For example: petscversion gt 3.22.1" 43 exit 1 44fi 45 46eq () { 47# if [ $release = 0 ]; then echo 0; exit 0; fi 48 if [ "$major" != "$vmajor" ]; then echo 0; exit 0; fi 49 if [ "$minor" != "$vminor" ]; then echo 0; exit 0; fi 50 if [ "${vsubminor}X" = "X" ]; then echo 1; exit 0; fi 51 if [ "$subminor" != "$vsubminor" ]; then echo 0; exit 0; fi 52 echo 1 53} 54 55lt () { 56# if [ $release = 0 ]; then echo 0; exit 0; fi 57 if [ "$major" -lt "$vmajor" ]; then echo 1; exit 0; fi 58 if [ "$major" -gt "$vmajor" ]; then echo 0; exit 0; fi 59 if [ "$minor" -lt "$vminor" ]; then echo 1; exit 0; fi 60 if [ "$minor" -gt "$vminor" ]; then echo 0; exit 0; fi 61 if [ "${vsubminor}X" = "X" ]; then echo 0; exit 0; fi 62 if [ "$subminor" -lt "$vsubminor" ]; then echo 1; exit 0; fi 63 echo 0 64} 65 66le () { 67# if [ $release = 0 ]; then echo 0; exit 0; fi 68 if [ "$major" -lt "$vmajor" ]; then echo 1; exit 0; fi 69 if [ "$major" -gt "$vmajor" ]; then echo 0; exit 0; fi 70 if [ "$minor" -lt "$vminor" ]; then echo 1; exit 0; fi 71 if [ "$minor" -gt "$vminor" ]; then echo 0; exit 0; fi 72 if [ "${vsubminor}X" = "X" ]; then echo 0; exit 0; fi 73 if [ "$subminor" -le "$vsubminor" ]; then echo 1; exit 0; fi 74 echo 0 75} 76 77gt () { 78 if [ "$major" -gt "$vmajor" ]; then echo 1; exit 0; fi 79 if [ "$major" -lt "$vmajor" ]; then echo 0; exit 0; fi 80 if [ "$minor" -gt "$vminor" ]; then echo 1; exit 0; fi 81 if [ "$minor" -lt "$vminor" ]; then echo 0; exit 0; fi 82 if [ "${vsubminor}X" = "X" ]; then echo 1; exit 0; fi 83 if [ "$subminor" -gt "$vsubminor" ]; then echo 1; exit 0; fi 84 echo 0 85} 86 87ge () { 88 if [ "$major" -gt "$vmajor" ]; then echo 1; exit 0; fi 89 if [ "$major" -lt "$vmajor" ]; then echo 0; exit 0; fi 90 if [ "$minor" -gt "$vminor" ]; then echo 1; exit 0; fi 91 if [ "$minor" -lt "$vminor" ]; then echo 0; exit 0; fi 92 if [ "${vsubminor}X" = "X" ]; then echo 1; exit 0; fi 93 if [ "$subminor" -ge "$vsubminor" ]; then echo 1; exit 0; fi 94 echo 0 95} 96 97${t} 98 99