[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: make --guaranteed-real-dry-run

From: Martin Dorey
Subject: RE: make --guaranteed-real-dry-run
Date: Thu, 1 Jan 2009 11:42:15 -0800

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: address@hidden [mailto:address@hidden On Behalf Of address@hidden
Sent: Thursday, January 01, 2009 09:12
To: address@hidden
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


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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]