[PATCH] waf upgrade broke flex and bison detection and flex build

Alexander Bokovoy ab at samba.org
Thu Sep 6 07:07:18 UTC 2018


On ke, 05 syys 2018, Alexander Bokovoy via samba-technical wrote:
> On ke, 05 syys 2018, Ralph Böhme via samba-technical wrote:
> > Hi!
> > 
> > Looks like the recent waf update broke flex and bison detection and flex build.
> > 
> > Attached patches fix the detection, but the build error is more difficult:
> > seems as if flex is invoked from a the toplevel git checkout directory, not
> > from bin, so the path to the flex source which is relative to bin, is wrong:
> Thanks. Please push these two patches, they are right:
> 
> $ git grep \\.detect
> source3/wscript:        bison.detect(conf)
> source3/wscript:        flex.detect(conf)
> third_party/waf/waflib/Tools/ifort.py:          compiler, version, path, includes, libdirs, arch = conf.detect_ifort()
> third_party/waf/waflib/Tools/msvc.py:   compiler, version, path, includes, libdirs, cpu = conf.detect_msvc()
> third_party/waf/waflib/extras/compat15.py:              ret.configure = ret.detect
> 
> When upgrading waf, I also tried to move us away from using waf 1.5
> compatibilty layer. This one item was missed but as you can see from
> compat15.py, a compat is reassigning 'detect()' code as 'configure()' 
> when loading the tools:
> 
>         if 'detect' in ret.__dict__:
>                 if Logs.verbose:
>                         Logs.warn('compat: rename "detect" to "configure"')
>                 ret.configure = ret.detect
>         return ret
> 
> So the change you did is correct.
> 
> > 
> > [slow at kazak scratch]$ pwd
> > /home/slow/git/samba/scratch
> > 
> > [slow at kazak scratch]$ make
> > WAF_MAKE=1 python ./buildtools/bin/waf build
> > ...
> > [1998/3795] Compiling source3/rpc_server/mdssvc/sparql_lexer.l
> > ...
> > 
> > /home/slow/git/samba/scratch
> > flex: can't open ../source3/rpc_server/mdssvc/sparql_lexer.l
> > 
> > Traceback (most recent call last):
> >  File "/home/slow/git/samba/scratch/third_party/waf/waflib/Task.py", line 320, in process
> >    ret = self.run()
> >  File "/home/slow/git/samba/scratch/third_party/waf/waflib/Tools/flex.py", line 36, in flexfun
> >    txt = bld.cmd_and_log(lst, env=env.env or None, quiet=0)
> >  File "/home/slow/git/samba/scratch/third_party/waf/waflib/Context.py", line 464, in cmd_and_log
> >    raise e
> > WafError: Command ['/usr/bin/flex', '-t', '../source3/rpc_server/mdssvc/sparql_lexer.l'] returned 1
> > 
> > make: *** [Makefile:8: all] Error 1
> > 
> > I've patched cmd_and_log to print the cwd and error, that's where the lines
> > 
> > /home/slow/git/samba/scratch
> > flex: can't open ../source3/rpc_server/mdssvc/sparql_lexer.l
> > 
> > are coming from.
> > 
> > Note, you need --enable-spotlight to trigger this.
> > 
> > Any help appreciated.
> I'll look at it.
Fixed this one -- the issue is that flex routine in waflib re-adjusts
inputs against the task's working directory but then uses a different
working directory to run actual command. I fixed this but need to find
out why this assumption is made in the waf upstream.

-- 
/ Alexander Bokovoy



More information about the samba-technical mailing list