[Mesa-dev] [PATCH] meson: Fix building gallium media targets with gallium-xlib glx

Eric Engestrom eric.engestrom at imgtec.com
Thu Dec 7 18:13:27 UTC 2017


On Thursday, 2017-12-07 09:57:19 -0800, Dylan Baker wrote:
> Quoting Eric Engestrom (2017-12-07 09:37:47)
> > On Thursday, 2017-12-07 09:16:24 -0800, Dylan Baker wrote:
> > > Quoting Eric Engestrom (2017-12-07 04:17:58)
> > > > On Tuesday, 2017-12-05 09:40:53 -0800, Dylan Baker wrote:
> > > > > Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> > > > > ---
> > > > >  meson.build | 6 +++---
> > > > >  1 file changed, 3 insertions(+), 3 deletions(-)
> > > > > 
> > > > > diff --git a/meson.build b/meson.build
> > > > > index 3e8ea7d17e0..bf6bd551f08 100644
> > > > > --- a/meson.build
> > > > > +++ b/meson.build
> > > > > @@ -1107,9 +1107,9 @@ if with_platform_x11
> > > > >      dep_xcb_glx = dependency('xcb-glx', version : '>= 1.8.1')
> > > > >      dep_xxf86vm = dependency('xxf86vm', required : false)
> > > > >    endif
> > > > > -  if with_any_vk or with_glx == 'dri' or
> > > > > -      (with_gallium_vdpau or with_gallium_xvmc or with_gallium_omx or
> > > > > -       with_gallium_xa)
> > > > > +  if (with_any_vk or with_glx == 'dri' or
> > > > > +       (with_gallium_vdpau or with_gallium_xvmc or with_gallium_omx or
> > > > > +        with_gallium_xa))
> > > > 
> > > > Hmm, works for me without this, on both meson 43 and 44; I'm guessing
> > > > meson 42 fails to parse this?
> > > > 
> > > > Either way, it doesn't hurt, so:
> > > > Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>
> > > > 
> > > > >      dep_xcb = dependency('xcb')
> > > > >      dep_x11_xcb = dependency('x11-xcb')
> > > > >    endif
> > > > > -- 
> > > > > 2.15.0
> > > > > 
> > > 
> > > You need to run meson like this to exercise the bug (I'll add this to the commit
> > > message):
> > > meson builddir -Dglx=gallium-xlib -Ddri-drivers= -Dvulkan-drivers=
> > > 
> > > The problem is that meson's parser just stops parsing the if statement as soon
> > > as it decides that the expression so far is true and the next token is 'or' and
> > > there is no way for the whole expression to be false even if the next sub
> > > expression is false. Basically laziness is biting us.
> > > 
> > > I started working on a linter yesterday but I'm doing it the hard way (aka
> > > writing my own parser).
> > 
> > I'm assuming going to route of adding an mlint.py in meson would allow
> > you to reuse a ton of code (esp. parsing)? I kinda like the idea of
> > simply typing `meson lint` to validate all the meson code.
> 
> The problem is that meson's parser is lazy and doesn't exhaust expressions, so
> it wouldn't have caught any of the issue's I would want a linter to catch (like
> the glx=gallium-xlib bug). I also think having a second parser that is not
> recursive descent is useful in it's own right, in part since it proves the claim
> that meson could be rewritten if needed.

Yup, makes sense to rewrite the parser then.

What about the suggestion of doing it as a meson module though, so that
the linter can be part of the project? Main benefits I'm seeing are that
it will always be up to date with meson features, and it will be
maintained by the community, which won't necessarily be you :)


More information about the mesa-dev mailing list