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

Dylan Baker dylan at pnwbakers.com
Wed Nov 8 19:02:09 UTC 2017


Quoting Eric Engestrom (2017-11-08 04:21:41)
> 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.

That seems like a good idea.

> 
> > @@ -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?

There's some caveats on Windows to not using the "if __name__ == '__main__'"
idiom.

> 
> Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>
> 
> > -- 
> > 2.14.3
> > 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171108/90e60ace/attachment.sig>


More information about the mesa-dev mailing list