[Top][All Lists]

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

Re: GNU make 4.2 (and 4.2.1) failing due to length of command-line

From: Adrian Muresan
Subject: Re: GNU make 4.2 (and 4.2.1) failing due to length of command-line
Date: Wed, 22 Jun 2016 17:44:33 +0000

Adrian Muresan has shared OneDrive files with you. To view them, click the links below.

This is an interesting data-point.

I used make 3.81 directly from SourceForge and it also failed with same error.

C:\Users\mureadr\Desktop\A\HMI_FORGF\bld\armle-v7\release\fordhmi>"C:\GnuWin32\bin\make.exe" deploy_marketProperties --debug=vjm --print-data-base > 381-SForge.err 2>&1
See 381-SForge.err

But when I used the 3.81 that comes with the QNX SDK, it works fine

C:\Users\mureadr\Desktop\A\HMI_FORGF\bld\armle-v7\release\fordhmi>where make

C:\Users\mureadr\Desktop\A\HMI_FORGF\bld\armle-v7\release\fordhmi>make --ver
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A

This program built for Windows32

C:\Users\mureadr\Desktop\A\HMI_FORGF\bld\armle-v7\release\fordhmi>make deploy_marketProperties --debug=vjm --print-data-base > 381-QNX.err 2>&1
See 381-QNX.err

From: Adrian Muresan <address@hidden>
Sent: Wednesday, June 22, 2016 1:01 PM
To: Eli Zaretskii
Cc: address@hidden
Subject: Re: GNU make 4.2 (and 4.2.1) failing due to length of command-line
The way that I built make 4.2.1 (and 4.2) is:
1) download and
2) open .sln file in VS 2008
3) a conversion process occurs because .sln is from an earlier version of
4) build release version

Checksum information for make 4.2.1 release executable
Name: make_msvc.net2003.exe
Size: 318464 bytes (0 MB)

CRC32: 92E7648E

CRC64: 9A025110B0589AD5

SHA256: 70479CE11C92ECB45AEDAEB2CBE3EFA96990A5804774C1D70E67135E404CCC08

SHA1: 7CF3919C78357084FE0D7C65BADC9BF41E4C6C8F

BLAKE2sp: 0A0A543305D67DC66DD823943B42489B507CE74FDD2EE1506039A76E6E9642B1


Checksum information for make 4.2 release executable
Name: make_msvc.net2003.exe
Size: 318976 bytes (0 MB)

CRC32: C98E40B9

CRC64: 1CDD9590939C9B97

SHA256: 980C00EAF8ED3CB58D56B4CBFF061C38C28A6E351B8963EE689DDCDC7C5837F5

SHA1: C84C705747C02CCEAF749CC92BF97B16EA5148C1

BLAKE2sp: 7B511AA39FC52732BF691B7552C1EF6BDBD97A01B36FE4A4685A1E54295A6108


I downloaded

I ran the command
C:\Users\mureadr\Desktop\A\HMI_FORGF\bld\armle-v7\release\fordhmi>"C:\Users\mureadr\Downloads\make-4.2-without-guile-w32-bin\bin\make.exe" deploy_marketProperties --debug=vjm --print-data-base > 42-SForge.err 2>&1

And I still got the same error (see attachment).
This time, I kept the entire output so you can reproduce it exactly.

My sh --help
C:\Users\mureadr\Desktop\A\HMI_FORGF\bld\armle-v7\release\fordhmi>where sh

C:\Users\mureadr\Desktop\A\HMI_FORGF\bld\armle-v7\release\fordhmi>sh --help
GNU bash, version 3.1.17(1)-release-(i686-pc-msys)
Usage:  sh [GNU long option] [option] ...
        sh [GNU long option] [option] script-file ...
GNU long options:
Shell options:
        -irsD or -c command or -O shopt_option          (invocation only)
        -abefhkmnptuvxBCHP or -o option
Type `sh -c "help set"' for more information about shell options.
Type `sh -c help' for more information about shell builtin commands.
Use the `bashbug' command to report bugs.

From: Eli Zaretskii <address@hidden>
Sent: Wednesday, June 22, 2016 10:48 AM
To: Adrian Muresan
Cc: address@hidden
Subject: Re: GNU make 4.2 (and 4.2.1) failing due to length of command-line
> From: Adrian Muresan <address@hidden>
> Date: Tue, 21 Jun 2016 22:53:50 +0000
> For more complete info, go to here

GNU make 4.2 (and 4.2.1) on windows truncates line in recipe
I want to move to make 4.2 so I can have the ability to do parallel jobs on Windows using --jobs=N. make 4.2 is not available in binary form from SourceForge, only 3.81 So I had to build it from

That discussion is full of misinformation, so let's ignore it, OK?

> I am making this target only
> deploy_marketProperties:
> echo Copying application data... && $(MKDIR)
> "C:/Users/User1/Desktop/A/Proj/src/../lib/armle-v7/release/marketProperties" && $(COPY_DIR) $(wildcard
> C:/Users/User1/Desktop/A/Proj/src/subProj/marketProperties/*)
> "C:/Users/User1/Desktop/A/Proj/src/../lib/armle-v7/release/marketProperties"
> Using following command
> make deploy_marketProperties --debug=vjm
> On GNU make 3.81, it works fine. But on make 4.2 and 4.2.1, I get an error:
> cp: target `C' is not a directory
> The problem appears to be the length of the command. If I delete some JSON files, it works fine.

I cannot reproduce this.  in general, Make on Windows uses APIs that
support command lines up to 32K bytes.  I just successfully ran a
Makefile that invoked a command with 23K bytes (which is more than
your 18K, as reported on Stackoverflow), with no problems.

So I think some other factor is at work here.  The first suspect is
the way you built Make 4.2.  Could you please try the binaries
available from this site:

(I'm guessing you don't need Guile support in Make, so the
"without-guile" binary zip is for you.)  This is the binary I used in
the experiment described above.  The command line I tried was this:

  echo 123456789 123456789 123456789 123456789 123456789 ...

etc., up to 23K characters.  Also, since you seem to be using the MSYS
Bash, I used it as well (I have MSYS installed here).  I don't know
what kind of Bash build you got from the QNX toolkit, but at least the
output of "sh --help" I get here is identical to what you show, so
there's hope it's the same or similar binary.

So please try the above-mentioned binary distribution of Make 4.2, and
please try the simple command I used.  If that works, then I suggest
to try your real target with the same binary of Make.

reply via email to

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