pgsql: Preserve intermediate .c files in coverage mode
Preserve intermediate .c files in coverage mode
The introduction of the .y -> .c pattern rule causes some .c files such
as bootparse.c to be considered intermediate files in the .y -> .c -> .o
rule chain, which make would automatically delete. But in coverage
mode, the processing tools such as genhtml need those files, so mark
them as "precious" so that make preserves them.
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/4af3dda13601d859a20425e3554533fde0549056
Modified Files
--------------
src/Makefile.global.in | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
Peter Eisentraut <peter_e@gmx.net> writes:
Preserve intermediate .c files in coverage mode
The introduction of the .y -> .c pattern rule causes some .c files such
as bootparse.c to be considered intermediate files in the .y -> .c -> .o
rule chain, which make would automatically delete. But in coverage
mode, the processing tools such as genhtml need those files, so mark
them as "precious" so that make preserves them.
[ blink... ] I'd vote for making them precious all the time. No such
behavioral change was discussed or agreed to, and I'm concerned about
possible side effects, for instance losing files that you don't have the
tools to rebuild when working from a distributed tarball.
regards, tom lane
On Sun, 2012-10-28 at 11:10 -0400, Tom Lane wrote:
Peter Eisentraut <peter_e@gmx.net> writes:
Preserve intermediate .c files in coverage mode
The introduction of the .y -> .c pattern rule causes some .c files such
as bootparse.c to be considered intermediate files in the .y -> .c -> .o
rule chain, which make would automatically delete. But in coverage
mode, the processing tools such as genhtml need those files, so mark
them as "precious" so that make preserves them.[ blink... ] I'd vote for making them precious all the time. No such
behavioral change was discussed or agreed to,
This is standard, default make behavior. It only showed up here because
the coverage processing doesn't list all the files it needs in make
rules.
and I'm concerned about
possible side effects, for instance losing files that you don't have the
tools to rebuild when working from a distributed tarball.
I don't think this is a problem because distprep explicitly lists the
files it builds.
Peter Eisentraut <peter_e@gmx.net> writes:
On Sun, 2012-10-28 at 11:10 -0400, Tom Lane wrote:
[ blink... ] I'd vote for making them precious all the time. No such
behavioral change was discussed or agreed to,
This is standard, default make behavior. It only showed up here because
the coverage processing doesn't list all the files it needs in make
rules.
Yeah, I know it's "default", but it's not how our make files ever
treated these files before. At the risk of repeating myself: a change
of this sort was not discussed nor agreed to. And I'm not agreeing to
it. I don't care for the idea that the build tree after a regular make
might not include all files that would be in a distribution tarball.
A concrete usage case that this breaks is doing something like
find . -name '*.c' | xargs grep whatever
Up to now I've always been able to assume that that would catch
occurrences of "whatever" coming from *.y and *.l files. No more
though. Maybe the derived *.c files are there, or maybe they're
not --- it'll be really history-dependent.
Please just make them precious.
regards, tom lane
On Tue, 2012-10-30 at 17:28 -0400, Tom Lane wrote:
A concrete usage case that this breaks is doing something like
find . -name '*.c' | xargs grep whatever
Up to now I've always been able to assume that that would catch
occurrences of "whatever" coming from *.y and *.l files. No more
though. Maybe the derived *.c files are there, or maybe they're
not --- it'll be really history-dependent.
Good point. Fixed.