On 2/19/2023 9:29 AM, Paul Smith wrote:
On Sun, 2023-02-19 at 09:17 -0500, Ken Brown wrote:
So I'm not sure where to go from here on Cygwin. Should I force
Cygwin builds to use the "pipe" jobserver, as I've done for
GNU/Hurd?
My preference would be for you to provide a configure option, which
defaults to "pipe" on Cygwin. But if you don't want to do that, then
I think you should force Cygwin builds to use "pipe".
There is (in my current implementation, not released yet) a way to do
that but it's a little obscure; you need to use:
./configure CPPFLAGS=-DJOBSERVER_USE_FIFO=0
or
./configure CPPFLAGS=-DJOBSERVER_USE_FIFO=1
That's good.
If you set it explicitly then that setting is obeyed regardless of the
capabilities of the system (well, if mkfifo() is not available then
trying to enable it is a no-op of course).
Should I add preprocessor checks (or autoconf checks?) to try to
figure out which version of Cygwin is being used and choose based
on that? I don't know how to check versions.
That wouldn't help. There's currently no known version of Cygwin on
which the fifo option works well. (Bruno tested on old version, I
tested the current version.)
OK but I noted you said:
If I simply run 'make -j13 world' without using the Build script, it
doesn't hang.
so I wasn't sure if we were considering that a "full failure".
I agree that it's not a full failure, but it's annoying when it happens.
In my use case (building TeX Live using the supplied Build script),
the build runs for about 2 hours before it fails.
I guess
if we don't know why it happens, we just have to disable mkfifo().
I will change the default setting of the jobserver to use "pipe" on
Cygwin, at least for now.
Thanks.
Ken