Merge pull request #1722 from whot/doc-fixes

fixes for vcs_tag
pull/1389/merge
Jussi Pakkanen 8 years ago committed by GitHub
commit bae7861c1c
  1. 12
      docs/markdown/Reference-manual.md
  2. 5
      docs/markdown/Release-notes-for-0.41.0.md
  3. 6
      mesonbuild/interpreter.py
  4. 4
      test cases/common/73 vcstag/meson.build

@ -635,13 +635,15 @@ Defined tests can be run in a backend-agnostic way by calling `mesontest` inside
ctarget vcs_tag(...)
```
This command detects revision control commit information at build time and places it in the specified output file. This file is guaranteed to be up to date on every build. Keywords are similar to `custom_target` and all of them are mandatory.
This command detects revision control commit information at build time and places it in the specified output file. This file is guaranteed to be up to date on every build. Keywords are similar to `custom_target`.
- `input` file to modify (e.g. `version.c.in`)
- `output` file to write the results to (e.g. `version.c`)
- `fallback` version number to use when no revision control information is present, such as when building from a release tarball
- `input` file to modify (e.g. `version.c.in`) (required)
- `output` file to write the results to (e.g. `version.c`) (required)
- `fallback` version number to use when no revision control information is present, such as when building from a release tarball (defaults to `meson.project_version()`)
- `command` string list with the command to execute, see [`custom_target`](#custom_target) for details on how this command must be specified
- `replace_string` string in the input file to substitute with the commit information (defaults to `@VCS_TAG@`)
Meson will read the contents of `input`, replace the string `@VCS_TAG@` with the detected revision number and write the result to `output`. This method returns an opaque [`custom_target`](#custom_target) object that you should put in your main program. If you desire more specific behavior than what this command provides, you should use `custom_target`.
Meson will read the contents of `input`, substitute the `replace_string` with the detected revision number, and write the result to `output`. This method returns an opaque [`custom_target`](#custom_target) object that can be used as source. If you desire more specific behavior than what this command provides, you should use `custom_target`.
## Built-in objects

@ -12,3 +12,8 @@ Add features here as code is merged to master.
## Dependency Handler for LLVM
Native support for linking against LLVM using the `dependency` function.
## vcs_tag keyword fallback is is now optional
The `fallback` keyword in `vcs_tag` is now optional. If not given, its value
defaults to the return value of `meson.project_version()`.

@ -2022,9 +2022,11 @@ class Interpreter(InterpreterBase):
raise InterpreterException('Unknown target_type.')
def func_vcs_tag(self, node, args, kwargs):
fallback = kwargs.pop('fallback', None)
if 'input' not in kwargs or 'output' not in kwargs:
raise InterpreterException('Keyword arguments input and output must exist')
fallback = kwargs.pop('fallback', self.project_version)
if not isinstance(fallback, str):
raise InterpreterException('Keyword argument fallback must exist and be a string.')
raise InterpreterException('Keyword argument fallback must be a string.')
replace_string = kwargs.pop('replace_string', '@VCS_TAG@')
regex_selector = '(.*)' # default regex selector for custom command: use complete output
vcs_cmd = kwargs.get('command', None)

@ -9,6 +9,10 @@ output : 'vcstag-custom.c',
command : ['git', 'show-ref', '-s', 'refs/heads/master'],
fallback : '1.0.0')
version_src_fallback = vcs_tag(input : 'vcstag.c.in',
output : 'vcstag-fallback.c')
executable('tagprog', 'tagprog.c', version_src)
executable('tagprog-custom', 'tagprog.c', version_src_custom)
executable('tagprog-fallback', 'tagprog.c', version_src_fallback)

Loading…
Cancel
Save