|
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 |
This is an interesting data-point. I used make 3.81 directly from SourceForge and it also failed with same error. 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:\QNX650\host\win32\x86\usr\bin\make.exe
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
PARTICULAR PURPOSE.
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.errFrom: 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 http://ftp.gnu.org/gnu/make/make-4.2.1.tar.gz and http://ftp.gnu.org/gnu/make/make-4.2.tar.gz 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 --------------------------- OK --------------------------- --------------------------- 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 --------------------------- OK --------------------------- I downloaded https://sourceforge.net/projects/ezwinports/files/make-4.2-without-guile-w32-bin.zip/download 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:\QNX650\host\win32\x86\usr\bin\sh.exe 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: --debug --debugger --dump-po-strings --dump-strings --help --init-file --login --noediting --noprofile --norc --posix --protected --rcfile --restricted --verbose --version --wordexp 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 > > http://stackoverflow.com/questions/37932984/gnu-make-4-2-and-4-2-1-on-windows-bug GNU make 4.2 (and 4.2.1) on windows truncates line in recipe stackoverflow.com 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: https://sourceforge.net/projects/ezwinports/files/?source=navbar (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. |
[Prev in Thread] | Current Thread | [Next in Thread] |