[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XEN PATCH] tools: Have flex and bison mandatory
On Tue, Feb 07, 2023 at 06:02:45PM +0000, Anthony PERARD wrote: > On Tue, Feb 07, 2023 at 06:03:12PM +0100, Jan Beulich wrote: > > On 07.02.2023 17:09, Anthony PERARD wrote: > > > This also remove the way the missing binaries are been handled, with > > > double-column-rules, which might be an issue sometime. > > > > These double-colon rules should never have been introduced. Double > > colons have a different meaning ("terminal rule") for pattern rules. > > In fact they were my initial suspects when looking into that odd build > > failure in CI. > > After some more investigation, I don't think anymore the double-colon > rules here is an issue. > > I think the issue that Andrew saw in the CI with "libxlu_cfg_y.o" > failing to build while "libxlu_cfg_l.[ch]" are been regenerated is > probably because make doesn't consider "libxlu_cfg_l.[ch]" as a group of > targets. > > If for some reason we have: > libxlu_cfg_l.h newer than libxlu_cfg_l.l newer than libxlu_cfg_l.c > > Then make seems to take two parallel decision: > When building libxlu_cfg_y.o: > libxlu_cfg_l.h is newer than libxlu_cfg_l.l > -> libxlu_cfg_l.h is up-to-date, start building libxlu_cfg_y.o > When building libxlu_cfg_l.o: > libxlu_cfg_l.c is older than libxlu_cfg_l.l > -> we need to generate libxlu_cfg_l.c first > Then, libxlu_cfg_y.o fails to build because libxlu_cfg_l.h is been > updated do to the parallel build of libxlu_cfg_l.o. > > I can easily reproduce the issue with: > touch libxlu_cfg_l.c; sleep .1; touch libxlu_cfg_l.l; sleep .1; > touch libxlu_cfg_l.h; sleep .1; make -j > And having "sleep 1" in "%.c %.h: %.l" recipe, between `rm` and `flex`. > > I don't know how to properly fix this yet. > Event writing "%.c %.h &: %.l" doesn't work, with make 4.3, which is > supposed to be grouped targets. But that's is maybe fixed in 4.4. Might this be solved with: %.c: %.l | %.h I'm unsure whether order-only dependencies are GNU-make only (there is a good chance). There is also the option of using .PRECIOUS -- (\___(\___(\______ --=> 8-) EHM <=-- ______/)___/)___/) \BS ( | ehem+sigmsg@xxxxxxx PGP 87145445 | ) / \_CS\ | _____ -O #include <stddisclaimer.h> O- _____ | / _/ 8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |