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
. ./git_rev.sh
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 my.do' 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.