From: Daan De Meyer Date: Fri, 19 Jul 2024 11:05:11 +0000 (+0200) Subject: Make vcs-tag do something useful for non-developer mode as well X-Git-Tag: v257-rc1~853 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=944faf65986f36d7ed3a4ba5cb4cc763011f0f77;p=thirdparty%2Fsystemd.git Make vcs-tag do something useful for non-developer mode as well When building packages of arbitrary commits of systemd-stable, distributors might want to include a git sha of the exact commit they're on. Let's extend vcs-tag a little to make this possible. If we're on a commit matching a tag, don't generate a git sha at all. If we're not on a commit matching a tag, generate a vcs tag as usually. However, if we're not in developer mode, don't append a '^' if the tree is dirty to accomodate package builds applying various patches to the tree which shouldn't be considered as "dirty" edits. --- diff --git a/meson.build b/meson.build index e0bbb6a9086..45030d29b0e 100644 --- a/meson.build +++ b/meson.build @@ -1994,14 +1994,11 @@ endif conf.set_quoted('VERSION_TAG', version_tag) vcs_tag = get_option('vcs-tag') -command = ['sh', '-c', - vcs_tag and fs.exists(project_source_root / '.git') ? - 'echo "-g$(git -C . describe --abbrev=7 --match="" --always --dirty=^)"' : ':'] version_h = vcs_tag( input : 'src/version/version.h.in', output : 'version.h', fallback : '', - command : command, + command : [vcs_tag ? 'tools/vcs-tag.sh' : 'true', get_option('mode')], ) shared_lib_tag = get_option('shared-lib-tag') diff --git a/tools/vcs-tag.sh b/tools/vcs-tag.sh new file mode 100755 index 00000000000..5da39cc5396 --- /dev/null +++ b/tools/vcs-tag.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# SPDX-License-Identifier: LGPL-2.1-or-later +set -e + +MODE="$1" + +if ! [[ -d .git ]] || git describe --tags --exact-match &>/dev/null; then + exit 0 +fi + +if [[ "$MODE" == "developer" ]]; then + DIRTY="--dirty=^" +else + DIRTY="" +fi + +echo "-g$(git describe --abbrev=7 --match="" --always $DIRTY)"