make "invalid output sync mutex"
The "make.exe" bundled with strawberry perl 5.38.0.1 appears to have an issue which causes the --output-sync / -O flag to error out when a recursive make is attempted.
make -C ./configure install
make: *** invalid output sync mutex: --. Stop.
make: *** [configure/RULES_DIRS:85: configure.install] Error 2
@genio points to WinLibs as the origin of this make build. https://github.com/StrawberryPerl/Perl-Dist-Strawberry/issues/148#issuecomment-1777875756
I have reported this on upstream gnumake. However, I wonder if this is the result of a buggy patch.
I have confirmed that the make 4.4.1 from chocolatey.org works correctly with -Otarget.
I build make from source without patches. Are you saying it needs additional patches when building for Windows?
At this point, all I can say is that it behaves differently than the build served from chocolatey.org. At least when executed on a github actions windows image. Apparently that build from ezwinports.
I don't run windows locally, so I am limited to github actions builds for troubleshooting, which is... less than efficient.
I can't reproduce your problem. Just tried building zlib using the mingw32-make.exe from my latest release and adding -Otarget gives me no errors.
I distribute it as mingw32-make.exe to avoid conflicts with customized make.exe versions like the one supplied by MSYS2.
Note: Be aware of other packages that take just the .exe file from my releases. Since I do shared build it may come with certain .dll files that are not interchangeable with other packages. So I can't speak for how they packaged this in StrawberryPerl.
I can't reproduce your problem. ..
Unfortunately, neither can I. I do not have a windows box myself, so I am limited to testing via GHA builds. Since I opened this ticket, GHA has revised their windows image to downgrade strawberryperl back to 5.32.1, which installs (I guess?) your build of gnumake 4.2.1 as gmake.exe. I can't reproduce this issue with that build, and I am unable to persuade Choco to upgrade strawberryperl back to 5.38.0. The last may be an issue with my lack of familiarity Choco, but at this point I have exhausted the time I can spend on this issue.
To summarize my situation a few days ago, with make 4.4.1 and strawberryperl 5.38.0 installed from chocolatey.org. I was able to workaround this issue by adjusting %PATH% to select (C:\ProgramData\Chocolatey\bin\make.exe) instead of C:\Strawberry\c\bin\make.EXE.
... adding
-Otarget...
Maybe relevant. My builds also add -j2, otherwise --output-sync is not really relevant.
I distribute it as
mingw32-make.exeto avoid conflicts ...
Note: Be aware of other packages that take just the .exe file from my releases ...
So noted.
I build make from source without patches.
@brechtsanders Could you provide more details on your build process and environment?
There does seem to be some difference between your binary and the one shipped by ezwinports. If the input source is identical, then logically there must be some difference in the the inputs to the build process.
For my part, I find that I am able to reproduce this error in the WINE environment with your builds (from the strawberry perl "portable" .zip), while the ezwinports build appears to work.
In the following bin/make.exe is from ezwinports, while perl/c/bin/make.exe and perl/c/bin/mingw32-make.exe from strawberry perl.
$ sha1sum bin/make.exe perl/c/bin/mingw32-make.exe perl/c/bin/make.exe
863ed3cecbd5b38336b16c315704bcf265c077da bin/make.exe
7c70601eaedb9ad74586486a6c56515e65042a55 perl/c/bin/mingw32-make.exe
7c70601eaedb9ad74586486a6c56515e65042a55 perl/c/bin/make.exe
My input Makefile is:
all: foo bar
foo:
$(MAKE) echo-foo
bar:
$(MAKE) echo-bar
echo-%:
echo $@
$ WINEPREFIX=$PWD/wine wine bin/make.exe -j -Otarget
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
Z:/tmp/junk/bin/make.exe echo-foo
Z:/tmp/junk/bin/make.exe echo-bar
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
make[1]: Entering directory 'Z:/tmp/junk'
echo echo-bar
echo-bar
make[1]: Leaving directory 'Z:/tmp/junk'
make[1]: Entering directory 'Z:/tmp/junk'
echo echo-foo
echo-foo
make[1]: Leaving directory 'Z:/tmp/junk'
$ WINEPREFIX=$PWD/wine wine perl/c/bin/make.exe -j -Otarget
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
Z:/tmp/junk/perl/c/bin/make.exe echo-foo
Z:/tmp/junk/perl/c/bin/make.exe echo-bar
mamkaek:e :* **** *c acnannonto tp aprasres eo uotuptuptu ts ysnycn cm umtuetxe x¸ ¸È:È :I nIvnavlaildi do r
o ri nicnompcloemtpel emtuel tmiublyttieb yotre or wwiiddee cchhaarraacctteerr.. SSttoopp..
make: *** [makefile:8: bar] Error 2
make: *** Waiting for unfinished jobs....
make: *** [makefile:5: foo] Error 2
$ WINEPREFIX=$PWD/wine wine perl/c/bin/mingw32-make.exe -Otarget -j
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
Z:/tmp/junk/perl/c/bin/mingw32-make.exe echo-foo
Z:/tmp/junk/perl/c/bin/mingw32-make.exe echo-bar
mmiinnggww3322--mamkaek:e :* **** *c acnannontot ppaarrssee oouuttppuutt ssyynncc mmuutteexx ¸¸ÈÈ:: II
nnvvaalliidd oorr iinnccoommpplleettee mmuullttiibbyyttee oorr wwiiddee cchhaarraacctteerr.. SSttoopp
..
mingw32-make: *** [makefile:8: bar] Error 2
mingw32-make: *** Waiting for unfinished jobs....
mingw32-make: *** [makefile:5: foo] Error 2
All my build recipes are available at https://github.com/brechtsanders/winlibs_recipes/
The recipes are basically shell commands, which call some tools from https://github.com/brechtsanders/winlibs_tools
The recipe used for mingw32-make can be found here: https://github.com/brechtsanders/winlibs_recipes/blob/main/recipes/make.winlib
Can you please check if the following release still has those issues when using the supplied mingw32-make?
https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.2.0mcf-11.0.1-ucrt-r3
Additional question: what kind of drive is your Z: drive?
Any feedback on this?