From 005f6138936f638509322e9cc69c5d9afaf2ad95 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 24 May 2022 11:55:12 +0200 Subject: [PATCH] fix generating pre-release deb/rpm versions when using '.' The script assumed that pre-release suffixes used the format `-tp`, `-beta` or `-rc`, however, it's more common (and standard practice in SemVer) to delimit the `alpha/beta/rc` with a `.`, which allows SemVer comparing to first sort by pre-release version (`alpha`, `beta`, `rc`), then by the numeric suffix. Altogether, we should consider removing this code; using `tp` as a pre-release *before* `alpha` / `beta` is non-standard (pre-releases are named `alpha`, `beta`, `rc`, so that they can be sorted alphabetically. Using `tp` violates that assumption, and adds the complexity of having to add a numeric prefix to make it sort again. Also see https://www.debian.org/doc/debian-policy/ch-controlfields.html#epochs-should-be-used-sparingly Before: ./rpm/gen-rpm-ver . 22.06.0-beta0 22.06.0 1.0.beta0 6e7db7f 22.06.0-beta0 ./rpm/gen-rpm-ver . 22.06.0-beta.0 22.06.0.beta.0 3 6e7db7f 22.06.0-beta.0 ./deb/gen-deb-ver . 22.06.0-beta0 22.06.0~1.0.beta0 22.06.0-beta0 ./deb/gen-deb-ver . 22.06.0-beta.0 22.06.0~beta.0~3 22.06.0-beta.0 After: ./rpm/gen-rpm-ver . 22.06.0-beta0 22.06.0 1.0.beta0 3091da7 22.06.0-beta0 ./rpm/gen-rpm-ver . 22.06.0-beta.0 22.06.0 1.0.beta.0 3091da7 22.06.0-beta.0 ./deb/gen-deb-ver . 22.06.0-beta0 22.06.0~1.0.beta0 22.06.0-beta0 ./deb/gen-deb-ver . 22.06.0-beta.0 22.06.0~1.0.beta.0 22.06.0-beta.0 Signed-off-by: Sebastiaan van Stijn --- deb/gen-deb-ver | 8 ++++---- rpm/gen-rpm-ver | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/deb/gen-deb-ver b/deb/gen-deb-ver index e8b5424aaa..27728b37d0 100755 --- a/deb/gen-deb-ver +++ b/deb/gen-deb-ver @@ -24,19 +24,19 @@ gen_deb_version() { increment="$3" testVersion="${fullVersion#*-$pattern}" baseVersion="${fullVersion%-"$pattern"*}" - echo "$baseVersion-$increment.$testVersion.$pattern$testVersion" + echo "$baseVersion-$increment.${testVersion##.}.$pattern$testVersion" } case "$debVersion" in *-dev) ;; - *-tp[0-9]*) + *-tp[.0-9]*) debVersion="$(gen_deb_version "$debVersion" tp 0)" ;; - *-beta[0-9]*) + *-beta[.0-9]*) debVersion="$(gen_deb_version "$debVersion" beta 1)" ;; - *-rc[0-9]*) + *-rc[.0-9]*) debVersion="$(gen_deb_version "$debVersion" rc 2)" ;; *) diff --git a/rpm/gen-rpm-ver b/rpm/gen-rpm-ver index bd10abe83c..58e7146b9c 100755 --- a/rpm/gen-rpm-ver +++ b/rpm/gen-rpm-ver @@ -23,18 +23,18 @@ rpmRelease=3 # Docker 18.01.0-ce-cs1-rc1: version=18.01.0.ce.cs1, release=0.1.rc1 # Docker 18.01.0-ce-dev nightly: version=18.01.0.ce, release=0.0.YYYYMMDD.HHMMSS.gitHASH -if [[ "$rpmVersion" =~ .*-tp[0-9]+$ ]]; then - tpVersion=${rpmVersion#*-tp} +if [[ "$rpmVersion" =~ .*-tp[.0-9]+$ ]]; then + testVersion=${rpmVersion#*-tp} rpmVersion=${rpmVersion%-tp*} - rpmRelease="0.${tpVersion}.tp${tpVersion}" -elif [[ "$rpmVersion" =~ .*-beta[0-9]+$ ]]; then - betaVersion=${rpmVersion#*-beta} + rpmRelease="0.${testVersion##.}.tp${testVersion}" +elif [[ "$rpmVersion" =~ .*-beta[.0-9]+$ ]]; then + testVersion=${rpmVersion#*-beta} rpmVersion=${rpmVersion%-beta*} - rpmRelease="1.${betaVersion}.beta${betaVersion}" -elif [[ "$rpmVersion" =~ .*-rc[0-9]+$ ]]; then - rcVersion=${rpmVersion#*-rc} + rpmRelease="1.${testVersion##.}.beta${testVersion}" +elif [[ "$rpmVersion" =~ .*-rc[.0-9]+$ ]]; then + testVersion=${rpmVersion#*-rc} rpmVersion=${rpmVersion%-rc*} - rpmRelease="2.${rcVersion}.rc${rcVersion}" + rpmRelease="2.${testVersion##.}.rc${testVersion}" fi DOCKER_GITCOMMIT=$($GIT_COMMAND rev-parse --short HEAD)