diff options
-rw-r--r-- | docs/RELEASE.md | 30 | ||||
-rw-r--r-- | meson.build | 16 | ||||
-rw-r--r-- | meson.version | 1 | ||||
-rw-r--r-- | src/basic/build.c | 2 | ||||
-rw-r--r-- | src/boot/efi/meson.build | 4 | ||||
-rw-r--r-- | src/busctl/busctl.c | 2 | ||||
-rw-r--r-- | src/core/manager-dump.c | 2 | ||||
-rw-r--r-- | src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-fido2.c | 2 | ||||
-rw-r--r-- | src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c | 2 | ||||
-rw-r--r-- | src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c | 2 | ||||
-rwxr-xr-x | src/kernel-install/60-ukify.install.in | 2 | ||||
-rw-r--r-- | src/nspawn/test-nspawn-util.c | 2 | ||||
-rw-r--r-- | src/shared/varlink.c | 2 | ||||
-rwxr-xr-x | src/ukify/ukify.py | 2 | ||||
-rwxr-xr-x | tools/meson-vcs-tag.sh | 18 |
15 files changed, 52 insertions, 37 deletions
diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 1ed99b8112..b712ba6b07 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -12,17 +12,19 @@ SPDX-License-Identifier: LGPL-2.1-or-later 3. Update the time and place in NEWS 4. Update hwdb (`ninja -C build update-hwdb`, `ninja -C build update-hwdb-autosuspend`, commit separately). 5. Update syscall numbers (`ninja -C build update-syscall-tables update-syscall-header`). -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}"`. 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) -13. "Draft" a new release on github (https://github.com/systemd/systemd/releases/new), mark "This is a pre-release" if appropriate. -14. Check that announcement to systemd-devel, with a copy&paste from NEWS, was sent. This should happen automatically. -15. Update IRC topic (`/msg chanserv TOPIC #systemd Version NNN released | Online resources https://systemd.io/`) -16. [FINAL] Push commits to stable, create an empty -stable branch: `git push systemd-stable --atomic origin/main:main origin/main:refs/heads/${version}-stable`. -17. [FINAL] Build and upload the documentation (on the -stable branch): `ninja -C build doc-sync` -18. [FINAL] Change the default branch to latest release (https://github.com/systemd/systemd-stable/settings/branches). -19. [FINAL] Change the Github Pages branch in the stable repository to the newly created branch (https://github.com/systemd/systemd-stable/settings/pages) and set the 'Custom domain' to 'systemd.io' +6. [RC1] Update library numbers in `meson.build` +7. Update version number in `meson.version` (e.g. from `v256~devel` to `v256~rc1` or from `v256~rc3` to `v256`) +8. Check dbus docs with `ninja -C build update-dbus-docs` +9. 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. +10. 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`. +11. Do `ninja -C build` +12. Make sure that the version string and package string match: `build/systemctl --version` +13. [FINAL] Close the github milestone and open a new one (https://github.com/systemd/systemd/milestones) +14. "Draft" a new release on github (https://github.com/systemd/systemd/releases/new), mark "This is a pre-release" if appropriate. +15. Check that announcement to systemd-devel, with a copy&paste from NEWS, was sent. This should happen automatically. +16. Update IRC topic (`/msg chanserv TOPIC #systemd Version NNN released | Online resources https://systemd.io/`) +17. [FINAL] Push commits to stable, create an empty -stable branch: `git push systemd-stable --atomic origin/main:main origin/main:refs/heads/${version}-stable`. +18. [FINAL] Build and upload the documentation (on the -stable branch): `ninja -C build doc-sync` +19. [FINAL] Change the default branch to latest release (https://github.com/systemd/systemd-stable/settings/branches). +20. [FINAL] Change the Github Pages branch in the stable repository to the newly created branch (https://github.com/systemd/systemd-stable/settings/pages) and set the 'Custom domain' to 'systemd.io' +21. [FINAL] Update version number in `meson.version` to the devel version of the next release (e.g. from `v256` to `v257~devel`) diff --git a/meson.build b/meson.build index ff79efd989..e4a9758ec5 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later project('systemd', 'c', - version : '255', + version : files('meson.version'), license : 'LGPLv2+', default_options: [ 'c_std=gnu11', @@ -18,8 +18,9 @@ libudev_version = '1.7.8' conf = configuration_data() conf.set_quoted('PROJECT_URL', 'https://systemd.io/') -conf.set('PROJECT_VERSION', meson.project_version(), +conf.set('PROJECT_VERSION', meson.project_version().split('~')[0], description : 'Numerical project version (used where a simple number is expected)') +conf.set_quoted('PROJECT_VERSION_FULL', meson.project_version(), description : 'Full project version') # This is to be used instead of meson.source_root(), as the latter will return # the wrong result when systemd is being built as a meson subproject @@ -1859,13 +1860,12 @@ version_h = vcs_tag( output : 'version.h', command: [project_source_root / 'tools/meson-vcs-tag.sh', project_source_root, - meson.project_version(), version_tag, ]) shared_lib_tag = get_option('shared-lib-tag') if shared_lib_tag == '' - shared_lib_tag = meson.project_version() + shared_lib_tag = meson.project_version().split('~')[0] endif ##################################################################### @@ -2559,11 +2559,17 @@ foreach exec : public_programs args : exec.full_path(), depends: exec) + version = meson.project_version() + if name == 'udevadm' + # For compatibility reasons we can't use the full version in udevadm. + version = version.split('~')[0] + endif + test('check-version-' + name, check_version, suite : 'dist', args : [exec.full_path(), - meson.project_version()], + version], depends: exec) endif endforeach diff --git a/meson.version b/meson.version new file mode 100644 index 0000000000..ecb02adbfe --- /dev/null +++ b/meson.version @@ -0,0 +1 @@ +256~devel diff --git a/src/basic/build.c b/src/basic/build.c index 1c52d9a935..7d6fbf43da 100644 --- a/src/basic/build.c +++ b/src/basic/build.c @@ -288,7 +288,7 @@ int version(void) { if (colors_enabled()) b = systemd_features_with_color(); - printf("%ssystemd " STRINGIFY(PROJECT_VERSION) "%s (" GIT_VERSION ")\n%s\n", + printf("%ssystemd " PROJECT_VERSION_FULL "%s (" GIT_VERSION ")\n%s\n", ansi_highlight(), ansi_normal(), b ?: systemd_features); return 0; diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build index c95132e420..2e22bdf57f 100644 --- a/src/boot/efi/meson.build +++ b/src/boot/efi/meson.build @@ -67,7 +67,7 @@ if meson.is_cross_build() and get_option('sbat-distro') == 'auto' warning('Auto detection of SBAT information not supported when cross-building, disabling SBAT.') elif get_option('sbat-distro') != '' efi_conf.set_quoted('SBAT_PROJECT', meson.project_name()) - efi_conf.set_quoted('PROJECT_VERSION', meson.project_version()) + efi_conf.set_quoted('PROJECT_VERSION', meson.project_version().split('~')[0]) efi_conf.set('PROJECT_URL', conf.get('PROJECT_URL')) if get_option('sbat-distro-generation') < 1 error('SBAT Distro Generation must be a positive integer') @@ -385,7 +385,7 @@ foreach efi_elf_binary : efi_elf_binaries install_tag : 'systemd-boot', command : [ elf2efi_py, - '--version-major=' + meson.project_version(), + '--version-major=' + meson.project_version().split('~')[0], '--version-minor=0', '--efi-major=1', '--efi-minor=1', diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c index b2c2bc644d..6314ff8d1d 100644 --- a/src/busctl/busctl.c +++ b/src/busctl/busctl.c @@ -1366,7 +1366,7 @@ static int verb_monitor(int argc, char **argv, void *userdata) { static int verb_capture(int argc, char **argv, void *userdata) { _cleanup_free_ char *osname = NULL; static const char info[] = - "busctl (systemd) " STRINGIFY(PROJECT_VERSION) " (Git " GIT_VERSION ")"; + "busctl (systemd) " PROJECT_VERSION_FULL " (Git " GIT_VERSION ")"; int r; if (isatty(STDOUT_FILENO)) diff --git a/src/core/manager-dump.c b/src/core/manager-dump.c index 6c32d78f3f..a12d50c91e 100644 --- a/src/core/manager-dump.c +++ b/src/core/manager-dump.c @@ -64,7 +64,7 @@ static void manager_dump_header(Manager *m, FILE *f, const char *prefix) { * stable between versions. We take the liberty to restructure it entirely between versions and * add/remove fields at will. */ - fprintf(f, "%sManager: systemd " STRINGIFY(PROJECT_VERSION) " (" GIT_VERSION ")\n", strempty(prefix)); + fprintf(f, "%sManager: systemd " PROJECT_VERSION_FULL " (" GIT_VERSION ")\n", strempty(prefix)); fprintf(f, "%sFeatures: %s\n", strempty(prefix), systemd_features); for (ManagerTimestamp q = 0; q < _MANAGER_TIMESTAMP_MAX; q++) { diff --git a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-fido2.c b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-fido2.c index 2f79d07a87..a736f753e9 100644 --- a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-fido2.c +++ b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-fido2.c @@ -18,7 +18,7 @@ /* for libcryptsetup debug purpose */ _public_ const char *cryptsetup_token_version(void) { - return TOKEN_VERSION_MAJOR "." TOKEN_VERSION_MINOR " systemd-v" STRINGIFY(PROJECT_VERSION) " (" GIT_VERSION ")"; + return TOKEN_VERSION_MAJOR "." TOKEN_VERSION_MINOR " systemd-v" PROJECT_VERSION_FULL " (" GIT_VERSION ")"; } _public_ int cryptsetup_token_open_pin( diff --git a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c index 98f4b08b76..5a7cbe01b1 100644 --- a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c +++ b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c @@ -18,7 +18,7 @@ /* for libcryptsetup debug purpose */ _public_ const char *cryptsetup_token_version(void) { - return TOKEN_VERSION_MAJOR "." TOKEN_VERSION_MINOR " systemd-v" STRINGIFY(PROJECT_VERSION) " (" GIT_VERSION ")"; + return TOKEN_VERSION_MAJOR "." TOKEN_VERSION_MINOR " systemd-v" PROJECT_VERSION_FULL " (" GIT_VERSION ")"; } _public_ int cryptsetup_token_open_pin( diff --git a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c index b65229992c..3c36f9a93f 100644 --- a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c +++ b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c @@ -20,7 +20,7 @@ /* for libcryptsetup debug purpose */ _public_ const char *cryptsetup_token_version(void) { - return TOKEN_VERSION_MAJOR "." TOKEN_VERSION_MINOR " systemd-v" STRINGIFY(PROJECT_VERSION) " (" GIT_VERSION ")"; + return TOKEN_VERSION_MAJOR "." TOKEN_VERSION_MINOR " systemd-v" PROJECT_VERSION_FULL " (" GIT_VERSION ")"; } static int log_debug_open_error(struct crypt_device *cd, int r) { diff --git a/src/kernel-install/60-ukify.install.in b/src/kernel-install/60-ukify.install.in index e10dc0f869..c7fe5108cc 100755 --- a/src/kernel-install/60-ukify.install.in +++ b/src/kernel-install/60-ukify.install.in @@ -27,7 +27,7 @@ from shutil import which from pathlib import Path from typing import Optional -__version__ = '{{PROJECT_VERSION}} ({{GIT_VERSION}})' +__version__ = '{{PROJECT_VERSION_FULL}} ({{GIT_VERSION}})' try: VERBOSE = int(os.environ['KERNEL_INSTALL_VERBOSE']) > 0 diff --git a/src/nspawn/test-nspawn-util.c b/src/nspawn/test-nspawn-util.c index 08c8050dc5..533edde5aa 100644 --- a/src/nspawn/test-nspawn-util.c +++ b/src/nspawn/test-nspawn-util.c @@ -8,7 +8,7 @@ TEST(systemd_installation_has_version) { int r; - FOREACH_STRING(version, "0", "231", STRINGIFY(PROJECT_VERSION), "999") { + FOREACH_STRING(version, "0", "231", PROJECT_VERSION_FULL, "999") { r = systemd_installation_has_version(saved_argv[1], version); assert_se(r >= 0); log_info("%s has systemd >= %s: %s", diff --git a/src/shared/varlink.c b/src/shared/varlink.c index fa51b84cd4..5991766795 100644 --- a/src/shared/varlink.c +++ b/src/shared/varlink.c @@ -1310,7 +1310,7 @@ static int generic_method_get_info( return varlink_replyb(link, JSON_BUILD_OBJECT( JSON_BUILD_PAIR_STRING("vendor", "The systemd Project"), JSON_BUILD_PAIR_STRING("product", product), - JSON_BUILD_PAIR_STRING("version", STRINGIFY(PROJECT_VERSION) " (" GIT_VERSION ")"), + JSON_BUILD_PAIR_STRING("version", PROJECT_VERSION_FULL " (" GIT_VERSION ")"), JSON_BUILD_PAIR_STRING("url", "https://systemd.io/"), JSON_BUILD_PAIR_STRV("interfaces", interfaces))); } diff --git a/src/ukify/ukify.py b/src/ukify/ukify.py index efa780992f..e5724c8ac2 100755 --- a/src/ukify/ukify.py +++ b/src/ukify/ukify.py @@ -50,7 +50,7 @@ from typing import (Any, import pefile # type: ignore -__version__ = '{{PROJECT_VERSION}} ({{GIT_VERSION}})' +__version__ = '{{PROJECT_VERSION_FULL}} ({{GIT_VERSION}})' EFI_ARCH_MAP = { # host_arch glob : [efi_arch, 32_bit_efi_arch if mixed mode is supported] diff --git a/tools/meson-vcs-tag.sh b/tools/meson-vcs-tag.sh index c6d140acb8..89e3cbd351 100755 --- a/tools/meson-vcs-tag.sh +++ b/tools/meson-vcs-tag.sh @@ -4,14 +4,15 @@ set -u set -o pipefail -dir="${1:?}" -fallback="${2:?}" -version_tag="${3:-}" +dir="${1:-.}" +version_tag="${2:-}" if [ -n "${version_tag}" ]; then # If -Dversion_tag= was used, just use that without further changes. echo "${version_tag}" else + read -r project_version <"${dir}/meson.version" + # Check that we have either .git/ (a normal clone) or a .git file (a work-tree) # and that we don't get confused if a tarball is extracted in a higher-level # git repository. @@ -22,13 +23,18 @@ else c='' if [ -e "${dir}/.git" ]; then c="$(git -C "$dir" describe --abbrev=7 --dirty=^ 2>/dev/null)" - if [ -z "$c" ]; then + if [ -n "$c" ]; then + # git describe uses the most recent tag. However, for development versions (e.g. v256~devel), the + # most recent tag will be v255 as there is no tag for development versions. To deal with this, we + # replace the tag with the project version instead. + c="${project_version}-${c#*-}" + else # This call might still fail with permission issues suffix="$(git -C "$dir" describe --always --abbrev=7 --dirty=^ 2>/dev/null)" - [ -n "$suffix" ] && c="${fallback}-${suffix}" + [ -n "$suffix" ] && c="${project_version}-${suffix}" fi fi - [ -z "$c" ] && c="${fallback}" + [ -z "$c" ] && c="${project_version}" # 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 comparison spec versioning. |