mirror of
https://github.com/systemd/systemd.git
synced 2024-11-27 04:03:36 +08:00
Merge pull request #31352 from DaanDeMeyer/versioning
Rework meson-vcs-tag.sh
This commit is contained in:
commit
0ace2560ea
28
meson.build
28
meson.build
@ -1853,13 +1853,27 @@ xml_helper_py = find_program('tools/xml_helper.py')
|
||||
#####################################################################
|
||||
|
||||
version_tag = get_option('version-tag')
|
||||
version_h = vcs_tag(
|
||||
input : 'src/version/version.h.in',
|
||||
output : 'version.h',
|
||||
command: [project_source_root / 'tools/meson-vcs-tag.sh',
|
||||
project_source_root,
|
||||
version_tag,
|
||||
])
|
||||
if version_tag == ''
|
||||
version_tag = meson.project_version()
|
||||
endif
|
||||
|
||||
conf.set_quoted('VERSION_TAG', version_tag)
|
||||
|
||||
vcs_tag = get_option('vcs-tag')
|
||||
if vcs_tag and fs.is_dir(project_source_root / '.git')
|
||||
version_h = vcs_tag(
|
||||
input : 'src/version/version.h.in',
|
||||
output : 'version.h',
|
||||
fallback : '',
|
||||
command : ['sh', '-c', 'echo "-g$(git -C . describe --abbrev=7 --match="" --always --dirty=^)"'],
|
||||
)
|
||||
else
|
||||
version_h = configure_file(
|
||||
input : 'src/version/version.h.in',
|
||||
output : 'version.h',
|
||||
configuration : configuration_data({'VCS_TAG' : ''}),
|
||||
)
|
||||
endif
|
||||
|
||||
shared_lib_tag = get_option('shared-lib-tag')
|
||||
if shared_lib_tag == ''
|
||||
|
@ -2,9 +2,11 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
option('version-tag', type : 'string',
|
||||
description : 'override the git version string')
|
||||
description : 'set the extended version string (defaults to project version)')
|
||||
option('shared-lib-tag', type : 'string',
|
||||
description : 'override the private shared library version tag (defaults to project version)')
|
||||
option('vcs-tag', type : 'boolean', value : true,
|
||||
description : 'append current git commit to version output when git information is available')
|
||||
|
||||
option('mode', type : 'combo', choices : ['developer', 'release'],
|
||||
description : 'autoenable features suitable for systemd development/release builds')
|
||||
|
@ -68,6 +68,7 @@ if meson.is_cross_build() and get_option('sbat-distro') == 'auto'
|
||||
elif get_option('sbat-distro') != ''
|
||||
efi_conf.set_quoted('SBAT_PROJECT', meson.project_name())
|
||||
efi_conf.set_quoted('PROJECT_VERSION', meson.project_version().split('~')[0])
|
||||
efi_conf.set_quoted('VERSION_TAG', version_tag)
|
||||
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')
|
||||
|
@ -7,4 +7,4 @@
|
||||
* - where a simplified machine-parsable form is more useful, for example
|
||||
* pkgconfig files and version information written to binary files.
|
||||
*/
|
||||
#define GIT_VERSION "@VCS_TAG@"
|
||||
#define GIT_VERSION VERSION_TAG "@VCS_TAG@"
|
||||
|
@ -1,42 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
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.
|
||||
#
|
||||
# If the working tree has no tags (CI builds), the first git-describe will fail
|
||||
# and we fall back to project_version-commitid instead.
|
||||
|
||||
c=''
|
||||
if [ -e "${dir}/.git" ]; then
|
||||
c="$(git -C "$dir" describe --abbrev=7 --dirty=^ 2>/dev/null)"
|
||||
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="${project_version}-${suffix}"
|
||||
fi
|
||||
fi
|
||||
[ -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 format specification versioning.
|
||||
echo "$c" | sed 's/^v//; s/-/^/g'
|
||||
fi
|
Loading…
Reference in New Issue
Block a user