Skip to content
Snippets Groups Projects
Commit d9002f47 authored by Christian Engwer's avatar Christian Engwer
Browse files

implemented code to do a version check in dunecontrol

next step is to add parameters to the dune.module file
and parse these.

[[Imported from SVN: r5305]]
parent db90b76e
Branches
Tags
No related merge requests found
......@@ -401,3 +401,104 @@ check_modname() {
# fi
return 0
}
#
# compare a sub part of the version string
#
# parameters:
# $1 version
# $2 part
#
# parts:
# 1: major
# 2: minor
# 3: revision
#
get_sub_version() {
echo $1 | awk "{ split(\$0,s,\".\"); match(s[$2],/[[:digit:]]*/); print substr(s[$2],RSTART,RLENGTH) }"
}
#
# compare to versions
#
# parameters:
# $1 version1
# $2 version1
#
# return:
# 0: equal
# 1: v1 > v2
# 2: v1 < v2
#
compare_versions() {
local v1="$1"
local v2="$2"
local result
for i in 1 2 3; do
result=0
compare_sub_version $v1 $v2 $i || return 0
done
echo "eq"
}
compare_sub_version() {
# compare sub version number
local sub1=`get_sub_version $1 $3`
local sub2=`get_sub_version $2 $3`
if test x$sub1 = x ; then
sub1=0
fi
if test x$sub2 = x ; then
sub2=0
fi
if test $sub1 -gt $sub2; then
echo "gt"
return 1
fi
if test $sub1 -lt $sub2; then
echo "lt"
return 1
fi
return 0
}
check_version() {
local v=$1
local PATTERN="^ *\([<>=]*\) *\([0-9.]*\)\(.*\)$"
if test x != `echo "$2" | sed -e "s/$PATTERN/x/"`; then
echo "ERROR: invalid version constraint $2" >&2
exit 1
fi
local op=`echo "$2" | sed -e "s/$PATTERN/\1/"`
local v2=`echo "$2" | sed -e "s/$PATTERN/\2/"`
local rest=`echo "$2" | sed -e "s/$PATTERN/\3/" -e 's/ //g'`
local result=1
local rel=`compare_versions $v $v2`
case $rel$op in
"eq<="|"eq="|"eq>="|\
"gt>="|"gt>"|\
"lt<="|"lt<")
result=0
;;
esac
if test -z "$rest"; then
return $result
fi
PATTERN="\([|&]\{2\}\)\(.*\)$"
if test xx != x`echo "$rest" | sed -e "s/$PATTERN/x/"`; then
echo "ERROR: invalid version constraint '$rest'" >&2
exit 1
fi
op=`echo "$rest" | sed -e "s/$PATTERN/\1/"`
v2=`echo "$rest" | sed -e "s/$PATTERN/\2/"`
if eval "test $result -eq 0" $op "check_version \"$v\" \"$v2\""; then
return 0
fi
return 1
}
\ No newline at end of file
#!/bin/bash
###############################################
###
### read lib
###
canonicalname(){
if test $# -ne 1; then
echo Usage: canonicalname path >&2
return 1
fi
file="$1"
if test ! -e "$file"; then
echo $file: file not found >&2
return 1
fi
# if this is a symlink, then follow the symlink
if test -L "$file"; then
fdir="`dirname \"$file\"`"
flink="`readlink \"$file\"`"
if test -e "$flink"; then
# these are absolute links, or links in the CWD
canonicalname "$flink"
else
canonicalname "$fdir/$flink"
fi
else
# if this is a file, then remember the filename and
# canonicalize the directory name
if test -f "$file"; then
fdir="`dirname \"$file\"`"
fname="`basename \"$file\"`"
fdir="`canonicalname \"$fdir\"`"
echo "$fdir/$fname"
fi
# if this is a directory, then create an absolute
# directory name and we are done
if test -d "$file"; then
(cd "$file"; pwd)
fi
fi
}
canonicalpath(){
if test $# -ne 1; then
echo Usage: canonicalpath path >&2
return 1
fi
dirname $(canonicalname "$1")
}
checkdebug () {
while test $# -gt 0; do
if test x$1 = x--debug; then
echo yes
return
fi
shift
done
echo no
}
DEBUG=`checkdebug $@`
if test "x$DEBUG" = "xyes"; then
set -x
set -v
fi
export COMMAND_DIR="`canonicalpath $0`"
# Read the modules find part
. "$COMMAND_DIR/dunemodules.inc"
#
# test version checks
#
test_version_check () {
if ! check_version "$1" "$2"; then
echo "ERROR: version does not match (found $1, required $2)" >&2
#exit 1
else
echo "OK: version does match (found $1, required $2)" >&2
fi
}
test_version_check "1.2.3" ">= 1.2.5 || < 1.2.4"
test_version_check "1.2.4" ">= 1.2.5 || < 1.2.4"
test_version_check "1.2.5" ">= 1.2.5 || < 1.2.4"
test_version_check "1.2" ">= 1.2.5 || < 1.2.4"
test_version_check "1.2.3" ">= 1.2.5 && < 1.2.4"
test_version_check "1.2.4" "< 1.2.5 && >= 1.2.4"
test_version_check "1.2.3" ">= 1.2"
test_version_check "1.2.3" "= 2.4.1"
test_version_check "1.2.3" "= 1.2.3"
test_version_check "1.2.3" "> 1.2"
test_version_check "1.2.3" "= 1.2"
test_version_check "1.2.3" "< 1.2"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment