From d5dd917a02ce2ae5ae0fa2c2817bb8cc0a675cf5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Mar 2024 18:33:59 +0100 Subject: [PATCH] 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 3f6ce3d4f04de0f765bb3bde0e400d0823829486. --- meson.build | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/meson.build b/meson.build index ddda3d71812..078ba822ea1 100644 --- a/meson.build +++ b/meson.build @@ -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 == '' -- 2.47.3