bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

A buggy behaviour on Mingw32, Win64.


From: Андрей Демидов
Subject: A buggy behaviour on Mingw32, Win64.
Date: Wed, 14 Aug 2019 02:28:36 +0300

Hello. I am reporting what I have found, while trying to build certain distributives with GNU Make 3.82.90 (for i686-pc-mingw32).

Although it seems to have nothing to do with SHELL itself -- I have heard of MAKESHELL, -- no matter, what I set the SHELL variable to -- even if it is in UNIX-style, Make tries to run the (expected, mind you, so it's not the variable's fault!) shell using Windows path instead, which happens to contain a whitespace.

Namely: the SHELL var. in the Make file was originally set to "/bin/sh", which resulted in creating a Widows process from exe file "C:\Program Files\Git\usr\bin\sh.exe". Apparently, this is where the "sh" shell resides in underlying Windows, so naturally, "/bin/sh" must lead to the aforementioned Windows exe file (because many "built-in" utilities are there too). So that's not the problem.

The problem is the "Program Files" folder: because of the whitespace Make fails to cook the recipe. I dare not to re-install Git and Git Bash as well to another, whitespaceless location, because I'm afraid of what I might lose then. Even if I could find a way to re-install it safely without any data loss, the whitespace is still a problem: no user must be forced to avoid whitespaces in file names. Thus I consider it a bug: a command line must be wrapped in quot. marks, if it contains a whitespace. I don't know, how to make Make do it.

This is what happens, when I try to build liblzma:

----
Making all in api
make[1]: Entering directory 'C:/Users/UserName/bin/xz-5.2.4/src/liblzma/api'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory 'C:/Users/UserName/bin/xz-5.2.4/src/liblzma/api'
make[1]: Entering directory 'C:/Users/UserName/bin/xz-5.2.4/src/liblzma'
  CC       liblzma_la-block_util.lo
/usr/bin/sh: C:/Program: No such file or directory
Makefile:1014: recipe for target 'liblzma_la-block_util.lo' failed
make[1]: *** [liblzma_la-block_util.lo] Error 127
make[1]: Leaving directory 'C:/Users/UserName/bin/xz-5.2.4/src/liblzma'
Makefile:1568: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
----

Makefile's 1014-th line contains the following (leading tab omitted here, expansion follows):

----
"$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-block_util.lo `test -f 'common/block_util.c' || echo '$(srcdir)/'`common/block_util.c"
----

which, I have checked, is expanded (note "Program Files" on the first line. Clearly the path must be surrounded with quot. marks) to:

----
@echo "  CC      " echo;C:/Program Files/Git/usr/bin/sh.exe ../../libtool --silent --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../..  -I../../src/liblzma/api -I../../src/liblzma/common -I../../src/liblzma/check -I../../src/liblzma/lz -I../../src/liblzma/rangecoder -I../../src/liblzma/lzma -I../../src/liblzma/delta -I../../src/liblzma/simple -I../../src/common -DTUKLIB_SYMBOL_PREFIX=lzma_  -Wall -Wextra -Wvla -Wformat=2 -Winit-self -Wmissing-include-dirs -Wstrict-aliasing -Wfloat-equal -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wlogical-op -Waggregate-return -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn -Wredundant-decls -march=i686 -mtune=generic -Os -c -o liblzma_la-block_util.lo `test -f 'common/block_util.c' || echo './'`common/block_util.c
----

When I run the output -- like the one above -- manually, taking care of the whitespace myself, it seems to compile.

I would be ever so grateful, if someone would kindly fix this buggy behaviour.

Signed,
Andrew.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]