Found a bug where a number was being appended to the nightly dev builds package name causing the latest packages not to be considered as the latest packages by the package manager. This makes it so that the nubmer is not included on dev builds. Signed-off-by: Eli Uriegas <eli.uriegas@docker.com> Upstream-commit: 63be84fc6ed88847a003dfb32e0dc8bc9126411e Component: packaging
72 lines
2.3 KiB
Bash
Executable File
72 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
ENGINE_DIR="$1"
|
|
VERSION="$2"
|
|
|
|
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
|
|
gitUnix="$($GIT_COMMAND log -1 --pretty='%at')"
|
|
gitDate="$($DATE_COMMAND --date "@$gitUnix" +'%Y%m%d.%H%M%S')"
|
|
gitCommit="$($GIT_COMMAND log -1 --pretty='%h')"
|
|
gitVersion="git${gitDate}.0.${gitCommit}"
|
|
debVersion="$debVersion~$gitVersion"
|
|
|
|
# $ dpkg --compare-versions 1.5.0 gt 1.5.0~rc1 && echo true || echo false
|
|
# true
|
|
# $ dpkg --compare-versions 1.5.0~rc1 gt 1.5.0~git20150128.112847.17e840a && echo true || echo false
|
|
# true
|
|
# $ dpkg --compare-versions 1.5.0~git20150128.112847.17e840a gt 1.5.0~dev~git20150128.112847.17e840a && echo true || echo false
|
|
# true
|
|
|
|
# ie, 1.5.0 > 1.5.0~rc1 > 1.5.0~git20150128.112847.17e840a > 1.5.0~dev~git20150128.112847.17e840a
|
|
fi
|
|
|
|
echo "$debVersion"
|