mirror of
https://github.com/systemd/systemd.git
synced 2025-01-13 17:18:18 +03:00
1a71ac07ad
This conceptually reverts e95acdfe1d3a790e18617bb992a712b34f41800d, but the actual contents of the script are taken from the command invocation in meson with all the updates that happened in the meantime. One small change is that I replaced () by {}: this avoids one subprocess spawn. People were worried about the cost of vcs_tag(), and this microoptimization may help a bit. I measured the speed on machine, and noop rebuilds are still about 100–120 ms. The logic is entirely moved to the script. This makes the meson config simpler and also makes it easier to use it externally. The script is needed for in-place rpm builds, see README.build-in-place.md [1], where it is invoked from the spec file to determine the project version. [1] https://src.fedoraproject.org/rpms/systemd/blob/rawhide/f/README.build-in-place.md
29 lines
891 B
Bash
Executable File
29 lines
891 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
set -eu
|
|
set -o pipefail
|
|
|
|
dir="${1:?}"
|
|
fallback="${2:?}"
|
|
version_tag="$3"
|
|
|
|
if [ -n "${version_tag}" ]; then
|
|
# If -Dversion_tag= was used, just use that without further changes.
|
|
echo "${version_tag}"
|
|
else
|
|
# 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.
|
|
#
|
|
# If the working tree has no tags (CI builds), the first git-describe will fail
|
|
# and we fall back to project_version-commitid instead.
|
|
if [ -e "${dir}/.git" ]; then
|
|
c="$(git -C "$dir" describe --abbrev=7 --dirty=^ 2>/dev/null ||
|
|
echo "${fallback}-$(git -C "$dir" describe --always --abbrev=7)")"
|
|
else
|
|
c="${fallback}"
|
|
fi
|
|
echo "$c" | sed 's/^v//; s/-rc/~rc/'
|
|
fi
|