On Thu, Nov 14, 2019 at 05:30:34PM +0200, Lauri Tirkkonen wrote:
> Yeah, you're right, it reads like crap, I'll rewrite it. The gist of the
> thing is that 'expensive' heuristic is now only used to decide whether
> or not to print the failed command.

I object to that. Keep the "expensive" heuristics around. 
The current -jn should still work *without* the jobserver mechanism.

> > >  static void
> > > -loop_handle_running_jobs()
> > > +loop_handle_running_jobs(void)
> > >  {
> > >   while (runningJobs != NULL)
> > >           handle_running_jobs();
> > >  }
> > Yet another gratuitous change.  There is already a perfectly fine prototype
> > that asserts (void).
> 
> A function prototype with empty parentheses does not assert (void) in C
> (but does in C++). However, you're correct about it not being related to
> this change.
See above. There are prototypes for ALL static functions in that file.
You don't need the void in the function definition when the function
declaration (a few hundred lines above) already has it.

> This was also a bit concerning to me, but that's what bmake/gmake also
> are doing (albeit with more fd's). Eventually the potential gains
> outweighed my concerns: every SUBDIR in bsd.subdir.mk is currently built
> serially, which has quite a large impact on how many jobs are running at
> any one time.
> 
> An alternative could be to use unix sockets with paths instead and pass
> the path through the environment, but I'm not convinced I like that any
> better.
There is the huge problem of where you put your paths.  NFS comes in the
way AND socket names are limited to 256 characters.

Reply via email to