make-w32
[Top][All Lists]
Advanced

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

Re: Right place for possible bug in mingw32-make


From: Jeroen Cranendonk
Subject: Re: Right place for possible bug in mingw32-make
Date: Mon, 19 Apr 2010 19:36:04 +0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4

Hi!
See inline replies :)

On 4/19/2010 9:41 AM, Eli Zaretskii wrote:
Date: Fri, 16 Apr 2010 02:07:02 +0200
From: Jeroen Cranendonk<address@hidden>

empty test.txt in folder.
Makefile in same folder with:
all:
      "cat.exe" test.txt test.txt test.txt test.txt test.txt test.txt>>
(27440 bytes in this example, for just the arguments).
cat.exe in the same folder.

Btw, the quotes around cat.exe seem to matter.
Yes, the quotes cause the shell to be invoked to handle the command,
instead of invoking cat.exe directly.
Ahh, interesting. Is there a way to not use quotes and handle spaces in folders gracefully? Probably a noob question, sorry :) I'm just using makefiles from existing projects, not an expert on them ;)

If I now call 'mingw32-make' in the folder, the output ends with:

   test.txt test.txt test.txt test.txt test.txt test.txt test.txt
test.txt test.tx
t test.txt
cat.exe: est.txt: No such file or directory
cat.exe: tet.txt: No such file or directory
cat.exe: testtxt: No such file or directory
mingw32-make: *** [all] Error -1

Notice the mangled names there, dissapearing characters.
Hm, I cannot reproduce this.  Does the number of characters have to be
_exactly_ 27440, or will larger numbers do as well?  I tried to hit
the exact number, but I'm not sure I succeeded.
The number of characters does not have to be 27440 exactly :) That was just what I happend to end up with after a lot of copy pasting. There seems to be a disspearing character at exactly every 8k'th position in the arguments (not including the .exe).

Mind, the test I gave you was a quickly thrown together one, my actual problem occurs with java.exe, which logs in more detail what went wrong, so in that case I could really find the positions, with cat you can only see some files are misnamed.

Anyway, on my system, I get 2 kinds of results:

   . with a port of Unixy shell sh.exe somewhere on PATH, I get the
     full unmangled output.

   . if I remove sh.exe from PATH, and Make uses cmd.exe as the shell,
     I get this self-explanatory error message:

       The input line is too long.
       make: *** [all] Error 255

With cmd.exe, the error message is expected, because cmd.exe is
documented to have a limit of 4K characters in input lines.

My make.exe is built from patched sources, but I tried with the MinGW
build from make-3.81-20090914-mingw32-bin.tar.gz, and I get the same
results as shown above.

What OS are you running this on?  Do you have some sh.exe on PATH, and
if you do, what port of which Unix shell is that?

Hmm, OS may be a big factor here, running Windows 7 64 bit here!
Should've mentioned that sooner, sorry :)

There is no sh.exe anywhere, it's a pretty minimal mingw install.
Mayby with windows 7 cmd.exe they decided to allow longer arguments?
And mayby that's not supported well in make-w32 since noone could test it before?
OR mayby windows7 cmd.exe is broken, now that'd be fun :)

If XP will give a too long error anyways, I need to get back to the guy who writes the makefiles though, since this won't work there anyways.

Let me know if I can be of more assistance :)

Cheers!
Jeroen





reply via email to

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