xref: /petsc/lib/petsc/bin/petscversion (revision 0b3a6bba120a0cdd0b26cdef79233fff1bc80a01)
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