redo and make issue in cygwin

Skip to first unread message

Jun 18, 2020, 11:34:08 PM6/18/20
to redo
I understand that redo on cygwin is not officially supported, but I have been using it successfully for the last two years.  I have recently encountered an issue with the interaction between redo and make with a project that I have not worked on for about a year.  This project depends on a third party framework that is written as a series of hierarchical Makefiles.  I had mostly been developing the project on a linux box, but I recall also building it a few times on my cygwin computer using redo.  The .do script is very simple

redo-ifchange $(find . -name '*.[ch]')
redo-ifchange git_rev
. ./
export SOME_VAR=myvar
make -B 1>&2

Running with the minimal/do works as expected.  Running with redo results in the following error and an aborted call to make:

make: *** job server shut down.  Stop.
make: *** Waiting for unfinished jobs....

when I run 'sh' the output is as expected as well.  I tried to see if changing the make call to use a different number of jobs may make a difference.  Using 'make -j -B 1>&2' works with minimal do and calling from shell, but fails with redo.  Using 'make -j8 -B 1>&2'  works with redo, but prints the following warning:

make: warning: -j8 forced in submake: resetting jobserver mode.

It appears that I can work around this problem by setting make's -j parameter to some reasonable number, but this may point to some more fundamental underlying problem.

I tried calling redo with both -j1 and -j8 parameters, but this led to the same initial abort message

make: *** job server shut down.  Stop.
make: *** Waiting for unfinished jobs....

I have tried an unrelated project with makefiles and when I created a similar .do file which calls make.  I get the same failure, so I believe that this is a more general problem that involves make's interaction with redo's jobserver.  It is entirely possible that this interaction may be hitting some more fundamental limitation of cygwin.
what steps can I take to investigate the interaction between redo and make regarding the jobserver?

FYI, when i stick to pure redo projects, redo's -j implementation works as expected on cygwin (barring the very rare flakiness which seems to be ever more rare in recent redo builds).

Thanks for your input.
Reply all
Reply to author
0 new messages