based on golang's pseudo-version: https://groups.google.com/forum/#!topic/golang-dev/a5PqQuBljF4 > using a "pseudo-version" of the form v0.0.0-yyyymmddhhmmss-abcdefabcdef, > where the time is the commit time in UTC and the final suffix is the prefix > of the commit hash. The time portion ensures that two pseudo-versions can > be compared to determine which happened later, the commit hash identifes > the underlying commit, and the v0.0.0- prefix identifies the pseudo-version > as a pre-release before version v0.0.0, so that the go command prefers any > tagged release over any pseudo-version. Signed-off-by: Sebastiaan van Stijn <github@gone.nl> Upstream-commit: d2baf8f4891e82117bce354e0b0761258a0eafc9 Component: packaging
90 lines
3.3 KiB
Bash
Executable File
90 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
ENGINE_DIR="$1"
|
|
VERSION="$2"
|
|
origVersion=$VERSION
|
|
|
|
SUFFIX=${SUFFIX:=ce}
|
|
|
|
[[ $# < 2 ]] && echo 'not enough args' && exit 1
|
|
|
|
DATE_COMMAND="date"
|
|
if [[ $(uname) -eq "Darwin" ]]; then
|
|
DATE_COMMAND="docker run --rm alpine date"
|
|
fi
|
|
|
|
gen_deb_version() {
|
|
# Adds an increment to the deb version to get proper order
|
|
# 18.01.0-${SUFFIX}-tp1 -> 18.01.0-${SUFFIX}-0.1-tp1
|
|
# 18.01.0-${SUFFIX}-beta1 -> 18.01.0-${SUFFIX}-1.1-beta1
|
|
# 18.01.0-${SUFFIX}-rc1 -> 18.01.0-${SUFFIX}-2.1-rc1
|
|
# 18.01.0-${SUFFIX} -> 18.01.0-${SUFFIX}-3
|
|
fullVersion="$1"
|
|
pattern="$2"
|
|
increment="$3"
|
|
testVersion="${fullVersion#*-$SUFFIX-*$pattern}"
|
|
baseVersion="${fullVersion%-"$pattern"*}"
|
|
echo "$baseVersion-$increment.$testVersion.$pattern$testVersion"
|
|
}
|
|
|
|
case "$VERSION" in
|
|
*-dev)
|
|
debVersion="$VERSION"
|
|
;;
|
|
*-tp[0-9]*)
|
|
debVersion="$(gen_deb_version "$VERSION" tp 0)"
|
|
;;
|
|
*-beta[0-9]*)
|
|
debVersion="$(gen_deb_version "$VERSION" beta 1)"
|
|
;;
|
|
*-rc[0-9]*)
|
|
debVersion="$(gen_deb_version "$VERSION" rc 2)"
|
|
;;
|
|
*)
|
|
debVersion="$VERSION-3"
|
|
;;
|
|
esac
|
|
|
|
export TZ=UTC
|
|
|
|
tilde='~' # ouch Bash 4.2 vs 4.3, you keel me
|
|
# git running in different directories, backwards compatible too
|
|
GIT_COMMAND="git -C $ENGINE_DIR"
|
|
debVersion="${debVersion//-/$tilde}" # using \~ or '~' here works in 4.3, but not 4.2; just ~ causes $HOME to be inserted, hence the $tilde
|
|
# if we have a "-dev" suffix or have change in Git, let's make this package version more complex so it works better
|
|
if [[ "$VERSION" == *-dev ]]; then
|
|
# based on golang's pseudo-version: https://groups.google.com/forum/#!topic/golang-dev/a5PqQuBljF4
|
|
#
|
|
# using a "pseudo-version" of the form v0.0.0-yyyymmddhhmmss-abcdefabcdef,
|
|
# where the time is the commit time in UTC and the final suffix is the prefix
|
|
# of the commit hash. The time portion ensures that two pseudo-versions can
|
|
# be compared to determine which happened later, the commit hash identifes
|
|
# the underlying commit, and the v0.0.0- prefix identifies the pseudo-version
|
|
# as a pre-release before version v0.0.0, so that the go command prefers any
|
|
# tagged release over any pseudo-version.
|
|
gitUnix="$($GIT_COMMAND log -1 --pretty='%ct')"
|
|
gitDate="$($DATE_COMMAND --utc --date "@$gitUnix" +'%Y%m%d%H%M%S')"
|
|
gitCommit="$($GIT_COMMAND log -1 --pretty='%h')"
|
|
debVersion="0.0.0-${gitDate}-${gitCommit}"
|
|
origVersion=$debVersion
|
|
|
|
# verify that nightly builds are always < actual releases
|
|
#
|
|
# $ dpkg --compare-versions 1.5.0 gt 1.5.0~rc1 && echo true || echo false
|
|
# true
|
|
# $ dpkg --compare-versions 1.5.0~rc1 gt 0.0.0-20180719213347-5daff5a && echo true || echo false
|
|
# true
|
|
# $ dpkg --compare-versions 18.06.0-ce-rc3 gt 18.06.0-ce-rc2 && echo true || echo false
|
|
# true
|
|
# $ dpkg --compare-versions 18.06.0-ce gt 18.06.0-ce-rc2 && echo true || echo false
|
|
# false
|
|
# $ dpkg --compare-versions 18.06.0-ce-rc3 gt 0.0.0-20180719213347-5daff5a && echo true || echo false
|
|
# true
|
|
# $ dpkg --compare-versions 18.06.0-ce gt 0.0.0-20180719213347-5daff5a && echo true || echo false
|
|
# true
|
|
# $ dpkg --compare-versions 0.0.0-20180719213702-cd5e2db gt 0.0.0-20180719213347-5daff5a && echo true || echo false
|
|
# true
|
|
fi
|
|
|
|
echo "$debVersion" "$origVersion"
|