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

Eric Engestrom eric at engestrom.ch
Wed Nov 8 20:38:26 UTC 2017



On 8 November 2017 19:32:22 GMT, Dylan Baker <dylan at pnwbakers.com> wrote:
> 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(),
> 
> And actually, thinking about windows, this should be:
> run_command(
> [find_program('python', 'python2', 'python3'),
> 'bin/meson_get_version.py']
> ).stdout(),
> 
> Since windows doesn't support shabangs link nix does.

Indeed; r-b still stands with this change :)

Speaking of, did you manage to get mesa building with meson on windows?

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