[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 3.83 testing
From: |
Paul Smith |
Subject: |
Re: 3.83 testing |
Date: |
Sun, 13 Nov 2011 21:50:04 -0500 |
On Thu, 2011-10-06 at 09:40 +0200, Boris Kolpackov wrote:
> 1. Change of behavior compared to 3.82 and earlier:
>
> This makefile:
> all: v := foo bar \
> baz
> all:; @echo "[$v]"
>
> With 3.83 prints:
> [foo bar baz]
>
> And with 3.82:
> [foo bar baz]
>
> I.e., there is now an extra space introduced by the new line escaping.
This behavior is required by POSIX:
When an escaped <newline> (one preceded by a <backslash>) is
found anywhere in the makefile except in a command line, an
include line, or a line immediately preceding an include line,
it shall be replaced, along with any leading white space on the
following line, with a single <space>.
> 2. I can fairly consistently get these messages on our build system:
>
> make: INTERNAL: Exiting with 3 jobserver tokens (should be 0)!
> make: INTERNAL: Exiting with 14 jobserver tokens available; should be 16!
I made a change that might help. If you can reproduce this with the
latest CVS please let me know (and if you can dig into it at all that
would be great).
> make[1]: Leaving directory
> `/home/boris/work/odb/tests-pgsql/common/readonly'
> �P�:35: recipe for target `_all' failed
Hm. This means the filename string has been corrupted when invoking
jobs.c:child_error(). I'm not sure how that would happen, since all
makefile names are kept in the strcache and that is read-only.
I tried a simple repro case and I got the right string with no
corruption. If you can repro this please dig a bit and see if you can
figure it out.
Thanks!
--
-------------------------------------------------------------------------------
Paul D. Smith <address@hidden> Find some GNU make tips at:
http://www.gnu.org http://make.mad-scientist.net
"Please remain calm...I may be mad, but I am a professional." --Mad Scientist
- Re: 3.83 testing,
Paul Smith <=