aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/yaml/functions/vcs_tag.yaml4
-rw-r--r--mesonbuild/interpreter/interpreter.py2
-rw-r--r--test cases/common/66 vcstag/meson.build5
-rwxr-xr-xtest cases/common/66 vcstag/version.py3
4 files changed, 13 insertions, 1 deletions
diff --git a/docs/yaml/functions/vcs_tag.yaml b/docs/yaml/functions/vcs_tag.yaml
index 3d4a1c4..29ef7ea 100644
--- a/docs/yaml/functions/vcs_tag.yaml
+++ b/docs/yaml/functions/vcs_tag.yaml
@@ -22,7 +22,7 @@ description: |
kwargs:
command:
- type: list[str]
+ type: list[str | file]
description: |
The command to execute, see [[custom_target]] for details
on how this command must be specified.
@@ -30,6 +30,8 @@ kwargs:
This parameter is optional. If it is absent, Meson will try
its best to find a suitable default command.
+ *(since 0.62.0)* [[@file]] is accepted.
+
input:
type: str
required: true
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 7acf391..0d5dd39 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -1752,6 +1752,8 @@ external dependencies (including libraries) must go to "dependencies".''')
vcs_cmd = kwargs['command']
source_dir = os.path.normpath(os.path.join(self.environment.get_source_dir(), self.subdir))
if vcs_cmd:
+ if isinstance(vcs_cmd[0], mesonlib.File):
+ FeatureNew.single_use('vcs_tag with file as the first argument', '0.62.0', self.subproject, location=node)
maincmd = self.find_program_impl(vcs_cmd[0], required=False)
if maincmd.found():
vcs_cmd[0] = maincmd
diff --git a/test cases/common/66 vcstag/meson.build b/test cases/common/66 vcstag/meson.build
index 520f72a..9eba4c6 100644
--- a/test cases/common/66 vcstag/meson.build
+++ b/test cases/common/66 vcstag/meson.build
@@ -17,7 +17,12 @@ fallback : '1.0.0')
version_src_fallback = vcs_tag(input : 'vcstag.c.in',
output : 'vcstag-fallback.c')
+version_src_file = vcs_tag(input : 'vcstag.c.in',
+output : 'vcstag-file.c',
+command : files('version.py'))
+
executable('tagprog', 'tagprog.c', version_src)
executable('tagprog-custom', 'tagprog.c', version_src_custom)
executable('tagprog-fallback', 'tagprog.c', version_src_fallback)
executable('tagprog-notfound-fallback', 'tagprog.c', version_src_notfound_fallback)
+executable('tagprog-file', 'tagprog.c', version_src_file)
diff --git a/test cases/common/66 vcstag/version.py b/test cases/common/66 vcstag/version.py
new file mode 100755
index 0000000..0e0185e
--- /dev/null
+++ b/test cases/common/66 vcstag/version.py
@@ -0,0 +1,3 @@
+#!/usr/bin/env python3
+
+print('3.14')