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