From: David Laight > Sent: 11 May 2020 22:09 > From: Paul Smith > > Sent: 11 May 2020 18:59 > > On Mon, 2020-05-11 at 10:41 -0700, Linus Torvalds wrote: > > > On Mon, May 11, 2020 at 12:43 AM David Laight < > > > david.lai...@aculab.com> wrote: > > > > > > > > I've not looked inside gmake, but I fixed nmake so that it > > > > properly used a single job token pipe for the entire (NetBSD) > > > > build and then flushed and refilled it with 'abort' tokens > > > > when any command failed. > > > > That made the build stop almost immediately. > > > > > > The GNU jobserver doesn't have anything like that, afaik. > > > > > > I think it always writes a '+' character as a token, so I guess it > > > could be extended to write something else for the "abort now" > > > situation (presumably a '-' character). > > > > That was exactly my plan. > > ISTR using '*' :-) Was a long time ago. > > One problem is ensuring that all the recursive makes actually > use the same token queue. > The Linux kernel build acts as though the sub-makes have their > own queue - I certainly had to fix that as well.
I think I've remembered the obvious thing that made it work better. When a job ends it is important to get a new token from the jobserver rather than reusing the one to hand. Otherwise you don't seen the 'abort' marker for ages. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)