ci: generalize version number handling a bit

This commit is contained in:
Travis Cross 2012-05-08 15:53:45 +00:00
parent 1ecb6be009
commit 53f1b51c1a
2 changed files with 50 additions and 13 deletions

View File

@ -4,6 +4,8 @@
src_repo="$(pwd)" src_repo="$(pwd)"
tmp_dir=${TMP_DIR:="/tmp"} tmp_dir=${TMP_DIR:="/tmp"}
zgrep () { (echo "$2" | grep -e "$1" >/dev/null); }
parse_version () { parse_version () {
local ver="$1" major="" minor="" micro="" rev="" local ver="$1" major="" minor="" micro="" rev=""
local next=major local next=major
@ -26,38 +28,73 @@ parse_version () {
eval $next='${tmp}${x}' eval $next='${tmp}${x}'
fi fi
done done
# The major version should never be null
if [ -z "$major" ]; then
echo "WARNING: parse_version was called with '$1' which is missing a major version number" >&2
fi
# If someone asks for the minor or micro specificially, they
# probably expect that it won't be null. Also, vX.Y should never be
# different from vX.Y.0 (that would be crazy), so we don't lose
# meaningful generality by setting minor or micro to zero on vX or
# vX.Y style versions.
minor="${minor:-0}"
micro="${micro:-0}"
# centos-style versions (don't mess with the argument given for now)
# TODO: what is the CentOS version number policy?
local cmajor cminor cmicro crev cver local cmajor cminor cmicro crev cver
cmajor=${major:="0"} cmajor="${major:-0}"
cminor=${minor:="0"} cminor="${minor:-0}"
cmicro=${micro:="0"} cmicro="${micro:-0}"
crev="$(echo "$rev" | sed -e 's/[._~-]//')" crev="$(echo "$rev" | sed -e 's/[._~-]//')"
cver="${cmajor}.${cminor}.${cmicro}" cver="${cmajor}.${cminor}.${cmicro}"
if [ -n "${micro}" ] && echo "$micro" | grep '^\(alpha\|beta\|rc\)' >/dev/null; then [ -n "$crev" ] && cver="${cver}.${crev}"
rev="~${micro}" # fix up if the revision was passed in the minor or micro number
if zgrep '^\(alpha\|beta\|rc\)' "$minor"; then
rev="-${minor}"
minor="0"
micro="0"
ver="${major}${rev}"
fi
if zgrep '^\(alpha\|beta\|rc\)' "$micro"; then
rev="-${micro}"
micro="0" micro="0"
ver="${major}.${minor}${rev}" ver="${major}.${minor}${rev}"
fi fi
# git-style versions
local gmajor gminor gmicro grev gver
gver="$(echo "$ver" | sed -e 's/[~_]/-/')" gver="$(echo "$ver" | sed -e 's/[~_]/-/')"
grev="$(echo "$rev" | sed -e 's/[~_]/-/')" grev="$(echo "$rev" | sed -e 's/[~_]/-/')"
gmajor="$major" gmajor="$major"
gminor="$minor" gminor="$minor"
gmicro="$micro" gmicro="$micro"
[ -n "$crev" ] && cver="${cver}.${crev}" # debian-style versions
local dmajor dminor dmicro drev dver
dver="$(echo "$ver" | sed -e 's/[-_]/~/')"
drev="$(echo "$rev" | sed -e 's/[-_]/~/')"
dmajor="$major"
dminor="$minor"
dmicro="$micro"
# return variables
echo "ver='$ver'" echo "ver='$ver'"
echo "major='$major'" echo "major='$major'"
echo "minor='$minor'" echo "minor='$minor'"
echo "micro='$micro'" echo "micro='$micro'"
echo "rev='$rev'" echo "rev='$rev'"
echo "cver='$cver'"
echo "cmajor='$cmajor'"
echo "cminor='$cminor'"
echo "cmicro='$cmicro'"
echo "crev='$crev'"
echo "gver='$gver'" echo "gver='$gver'"
echo "gmajor='$gmajor'" echo "gmajor='$gmajor'"
echo "gminor='$gminor'" echo "gminor='$gminor'"
echo "gmicro='$gmicro'" echo "gmicro='$gmicro'"
echo "grev='$grev'" echo "grev='$grev'"
echo "dver='$dver'"
echo "dmajor='$dmajor'"
echo "dminor='$dminor'"
echo "dmicro='$dmicro'"
echo "drev='$drev'"
echo "cver='$cver'"
echo "cmajor='$cmajor'"
echo "cminor='$cminor'"
echo "cmicro='$cmicro'"
echo "crev='$crev'"
} }
set_fs_ver () { set_fs_ver () {

View File

@ -14,7 +14,7 @@ build="b${2-0}"
distro="${3-unstable}" distro="${3-unstable}"
codename="${4-sid}" codename="${4-sid}"
fver="${ver}~${nightly}~${build}" fver="${dver}~${nightly}~${build}"
fname="freeswitch-$fver" fname="freeswitch-$fver"
orig="freeswitch_$fver.orig" orig="freeswitch_$fver.orig"
ddir=$src_repo/debbuild ddir=$src_repo/debbuild
@ -23,7 +23,7 @@ bdir=$src_repo/debbuild/$fname
mkdir -p $ddir mkdir -p $ddir
git clone . $bdir git clone . $bdir
cd $bdir cd $bdir
set_fs_ver "$ver" "$major" "$minor" "$micro" "$rev" set_fs_ver "$gver" "$gmajor" "$gminor" "$gmicro" "$grev"
cd libs cd libs
getlib () { getlib () {
f="${1##*/}" f="${1##*/}"