Use tilde for rc tag versioning
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 13 Feb 2024 13:00:50 +0000 (14:00 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 13 Feb 2024 17:14:36 +0000 (18:14 +0100)
tilde sorts lower in the version comparison spec:
https://uapi-group.org/specifications/specs/version_format_specification/

➜  systemd git:(strip) systemd-analyze compare-versions 249\~rc1 249
249\~rc1 < 249
➜  systemd git:(strip) systemd-analyze compare-versions 249-rc1 249
249-rc1 > 249

Also update tools/meson-vcs-tag.sh to use carets instead of hyphens
for the git part of the version as carets are allowed to be part of
a version by pacman while hyphens are not and both sort higher than
a version without the git part.

docs/RELEASE.md
tools/meson-vcs-tag.sh

index d98fe0a2f9cbee79d7976f87dd3f1c2a65d90982..4ba29a87a940096f225169743116d3996b4a20e4 100644 (file)
@@ -15,7 +15,7 @@ SPDX-License-Identifier: LGPL-2.1-or-later
 6. [RC1] Update version and library numbers in `meson.build`
 7. Check dbus docs with `ninja -C build update-dbus-docs`
 8. Update translation strings (`cd build`, `meson compile systemd-pot`, `meson compile systemd-update-po`) - drop the header comments from `systemd.pot` + re-add SPDX before committing. If the only change in a file is the 'POT-Creation-Date' field, then ignore that file.
-9. Tag the release: `version=vXXX-rcY && git tag -s "${version}" -m "systemd ${version}"`
+9. Tag the release: `version=vXXX~rcY && git tag -s "${version}" -m "systemd ${version}"`. Note that this uses a tilde (\~) instead of a hyphen (-) because tildes sort lower in version comparisons according to the [version format specification](https://uapi-group.org/specifications/specs/version_format_specification/), and we want `v255-rc1` to sort lower than `v255`.
 10. Do `ninja -C build`
 11. Make sure that the version string and package string match: `build/systemctl --version`
 12. [FINAL] Close the github milestone and open a new one (https://github.com/systemd/systemd/milestones)
index 4a8dc89ab2c21a34b467b5e1d95afab5c6f58c7f..6bac603929ca792c2f1d0daad2097ed4b3858887 100755 (executable)
@@ -29,5 +29,8 @@ else
         fi
     fi
     [ -z "$c" ] && c="${fallback}"
-    echo "$c" | sed 's/^v//; s/-rc/~rc/'
+    # Replace any hyphens with carets which are allowed in versions by pacman whereas hyphens are not. Git
+    # versions with carets will also sort higher than their non-git version counterpart both in pacman
+    # versioning and in version comparision spec versioning.
+    echo "$c" | sed 's/^v//; s/-/^/g'
 fi