install: make cmpver available earlier

[ci skip]
This commit is contained in:
Simon Michael 2018-10-05 09:48:21 -10:00
parent 190eee5485
commit bcf6f8ab4d

View File

@ -768,6 +768,42 @@ trap cleanup_temp_dir EXIT
# hledger routines
# Compare dotted number version strings, based on https://stackoverflow.com/a/4025065/84401.
# cmpver A B's exit status *and* output is
# 0 for A ~= B (1 is equivalent to 1.0, 1.0.0 etc.)
# 1 for A > B
# 2 for A < B.
cmpver () {
if [[ $1 == $2 ]]
then
echo 0; return 0
fi
local IFS=.
local i ver1=($1) ver2=($2)
# fill empty fields in ver1 with zeros
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
do
ver1[i]=0
done
for ((i=0; i<${#ver1[@]}; i++))
do
if [[ -z ${ver2[i]} ]]
then
# fill empty fields in ver2 with zeros
ver2[i]=0
fi
if ((10#${ver1[i]} > 10#${ver2[i]}))
then
echo 1; return 1
fi
if ((10#${ver1[i]} < 10#${ver2[i]}))
then
echo 2; return 2
fi
done
echo 0; return 0
}
# install stack or a newer version of stack if needed,
# or always with --force-install-stack,
# in $HOME/.local/bin
@ -940,42 +976,6 @@ fi
try_info cabal update
)
# Compare dotted number version strings, based on https://stackoverflow.com/a/4025065/84401.
# cmpver A B's exit status *and* output is
# 0 for A ~= B (1 is equivalent to 1.0, 1.0.0 etc.)
# 1 for A > B
# 2 for A < B.
cmpver () {
if [[ $1 == $2 ]]
then
echo 0; return 0
fi
local IFS=.
local i ver1=($1) ver2=($2)
# fill empty fields in ver1 with zeros
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
do
ver1[i]=0
done
for ((i=0; i<${#ver1[@]}; i++))
do
if [[ -z ${ver2[i]} ]]
then
# fill empty fields in ver2 with zeros
ver2[i]=0
fi
if ((10#${ver1[i]} > 10#${ver2[i]}))
then
echo 1; return 1
fi
if ((10#${ver1[i]} < 10#${ver2[i]}))
then
echo 2; return 2
fi
done
echo 0; return 0
}
# try installing each package that needs installing, in turn
echo ----------