It's not clear whether you're complaining about rules whose commands are
run even with -n or -t, or whether you're complaining about commands run
by eg $(shell).
 
Assuming the former, the documentation already explains:
 
The `-n', `-t', and `-q' options do not affect command lines that begin
with `+' characters or contain the strings `$(MAKE)' or `${MAKE}'. Note
that only the line containing the `+' character or the strings `$(MAKE)'
or `${MAKE}' is run regardless of these options. Other lines in the same
rule are not run unless they too begin with `+' or contain `$(MAKE)' or
`${MAKE}'
 
That's just below the main description of what -n does, but it looks
like you're reading the summary of the command line switches.  There's a
link to the main description right after the sentence you quoted.  That
sentence has been further improved in the CVS version to read:
 
Print the recipe that would be executed, but do not execute it.
@xref{Instead of Execution, ,Instead of Executing the Recipes}.
 
One reason why I find that to be an improvement is because it's now
clearer that it only refers to commands in "recipes", not commands in
variable assignments, conditionals or elsewhere.
 
> Also please document how one can achieve a --guaranteed-real-dry-run.
 
That would be ignoring the wish of the makefile author that those
commands be run even with -n.  More constructively, make --debug might
help you.  A program called "remake" received rave reviews in
http://savannah.gnu.org/bugs/?18617.  And, in the last resort, strace
remains excellent.
 
-----Original Message-----
From: bug-make-bounces+mdorey=bluearc....@gnu.org
[mailto:bug-make-bounces+mdorey=bluearc....@gnu.org] On Behalf Of
jida...@jidanni.org
Sent: Thursday, January 01, 2009 09:12
To: bug-make@gnu.org
Subject: make --guaranteed-real-dry-run
 
In the documentation everywhere you mention
       -n, --just-print, --dry-run, --recon
            Print  the  commands  that  would  be executed, but do not
execute
            them.
You should also say:
            Well, that is not exactly the truth, in some cases
            a even non-malicious programmer can construct a makefile
            that will still execute commands. In fact it is quite
            common and intentional... The same goes for -t... See
            (info "(make)MAKE Variable") (info
"(make)Options/Recursion").
 
At least add one word that one still can get wet.
 
Also please document how one can achieve a --guaranteed-real-dry-run.
 
Furthermore, one notes in the make --dry-run output that there is no
way to distinguish the lines that were really run from those that
weren't. Only when one sees e.g., "/bin/sh: curl-config: command not
found" does one notice something sneaky is happening.
 
 
_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make
_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to