meson: always use vcs_tag

The branch with configure_file() was broken: meson doesn't know that
this file is a prerequisite for other targets, so partial rebuilds were broken.
Easy reproducer:
  git mv .git{,.no}
  touch meson build && ninja -C build src/basic/libbasic.a
  rm build/version.h
  ninja -C build src/basic/libbasic.a

Using vcs_tag() also in that case makes meson always build the file.

(Combined with the issue fixed in previous commit, I was encountering
failed builds quite often.)

Fixes 3f6ce3d4f0.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2024-03-13 18:33:59 +01:00
parent 9e11979765
commit d5dd917a02

View file

@ -1853,20 +1853,15 @@ endif
conf.set_quoted('VERSION_TAG', version_tag)
vcs_tag = get_option('vcs-tag')
if vcs_tag and fs.exists(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
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,
)
shared_lib_tag = get_option('shared-lib-tag')
if shared_lib_tag == ''