[Mesa-dev] [PATCH] meson: Add script to use VERSION file for getting version

Eric Engestrom eric.engestrom at imgtec.com
Wed Nov 8 12:21:41 UTC 2017


On Wednesday, 2017-11-01 11:58:16 -0700, Dylan Baker wrote:
> Meson has up until this point set it's version in the root meson.build
> script. While there are other build systems them creates "one more
> thing" to duplicate between meson and every other build system, this
> script is a simple "read, strip, print" sort of deal to allow meson to
> read the VERSION file.
> 
> I chose to implement this in python since python is portable, and to
> keep the meson.build script clean. This is also complicated by the fact
> that the project() call *must* be the first non-comment,non-blank in the
> toplevel meson.build script.
> 
> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> ---
>  meson.build                  |  2 +-
>  scripts/meson_get_version.py | 35 +++++++++++++++++++++++++++++++++++
>  2 files changed, 36 insertions(+), 1 deletion(-)
>  create mode 100644 scripts/meson_get_version.py
> 
> diff --git a/meson.build b/meson.build
> index 6ad8c8bbf4b..3f77380f7df 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -21,7 +21,7 @@
>  project(
>    'mesa',
>    ['c', 'cpp'],
> -  version : '17.3.0-devel',
> +  version : run_command(find_program('scripts/meson_get_version.py')).stdout(),
>    license : 'MIT',
>    meson_version : '>= 0.42',
>    default_options : ['c_std=c99', 'cpp_std=c++11']
> diff --git a/scripts/meson_get_version.py b/scripts/meson_get_version.py
> new file mode 100644
> index 00000000000..a221e26f250
> --- /dev/null
> +++ b/scripts/meson_get_version.py

get_reviewers.pl is the only script in `scripts/`, everything else is in
`bin/`. I would suggest putting your script in `bin/` for now, we might
merge `bin/` into `scripts/` later.

> @@ -0,0 +1,35 @@
> +#!/usr/bin/env python
> +# encoding=utf-8
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +from __future__ import print_function
> +import os
> +
> +
> +def main():
> +    filename = os.path.join(os.environ['MESON_SOURCE_ROOT'], 'VERSION')
> +    with open(filename) as f:
> +        version = f.read().strip()
> +    print(version, end='')
> +
> +
> +if __name__ == '__main__':
> +    main()

Seems like overkill, but why not. Change `main()` to `print_mesa_version()`
or something though, if the idea is to have it available as a module?

Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>

> -- 
> 2.14.3
> 


More information about the mesa-dev mailing list