From: Daan De Meyer Date: Sun, 10 Jan 2021 12:18:36 +0000 (+0100) Subject: meson: Use configure_file when version-tag is specified X-Git-Tag: v248-rc1~338 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=064b8e2c99ceb348c515353cc5c7d7bd05c49fcb;p=thirdparty%2Fsystemd.git meson: Use configure_file when version-tag is specified vcs_tag() is slow. When the version-tag meson option is set, we can use configure_file() directly to speed up incremental builds. Before (with version-tag set to v247): ``` ‣ Running build script... [1/418] Generating version.h with a custom command real 0m0.521s user 0m0.229s sys 0m0.067s ``` After (with version-tag set to v247): ``` ‣ Running build script... ninja: no work to do. real 0m0.094s user 0m0.048s sys 0m0.022s ``` --- diff --git a/meson.build b/meson.build index a8afa0dd2f7..99d203d1452 100644 --- a/meson.build +++ b/meson.build @@ -555,15 +555,24 @@ endif ##################################################################### -vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh', - project_source_root, - get_option('version-tag'), - meson.project_version()] - -version_h = vcs_tag( - input : 'src/version/version.h.in', - output : 'version.h', - command: vcs_tagger) +version_tag = get_option('version-tag') +if version_tag != '' + vcs_data = configuration_data() + vcs_data.set('VCS_TAG', version_tag) + version_h = configure_file(configuration : vcs_data, + input : 'src/version/version.h.in', + output : 'version.h') +else + vcs_tagger = [ + project_source_root + '/tools/meson-vcs-tag.sh', + project_source_root, + meson.project_version()] + + version_h = vcs_tag( + input : 'src/version/version.h.in', + output : 'version.h', + command: vcs_tagger) +endif versiondep = declare_dependency(sources: version_h) diff --git a/tools/meson-vcs-tag.sh b/tools/meson-vcs-tag.sh index 1c3814d4830..a285210f964 100755 --- a/tools/meson-vcs-tag.sh +++ b/tools/meson-vcs-tag.sh @@ -4,13 +4,7 @@ set -eu set -o pipefail dir="$1" -tag="$2" -fallback="$3" - -if [ -n "$tag" ]; then - echo "$tag" - exit 0 -fi +fallback="$2" # Apparently git describe has a bug where it always considers the work-tree # dirty when invoked with --git-dir (even though 'git status' is happy). Work