I agree with you, though I didn't initially. I've noticed that this list doesn't always have timely replies.
-- ~ LukeShu http://lukeshu.ath.cx On Thu, 2011-03-24 at 03:52 -0500, Michael Witten wrote: > On Tue, Mar 8, 2011 at 18:12, Michael Witten <mfwit...@gmail.com> wrote: > > On Tue, Mar 8, 2011 at 16:11, Philip Guenther <guent...@gmail.com> wrote: > >> On Tue, Mar 8, 2011 at 1:37 PM, Michael Witten <mfwit...@gmail.com> wrote: > >>> The `--dry-run' flag is supposed to be safe in that nothing > >>> in the file system is actually modified. > >> > >> That's not actually true. To quote the docs: > >> > >> `-n' > >> `--just-print' > >> `--dry-run' > >> `--recon' > >> "No-op". The activity is to print what recipe would be used to > >> make the targets up to date, but not actually execute it. Some > >> recipes are still executed, even with this flag (*note How the > >> `MAKE' Variable Works: MAKE Variable.). > >> > >> and then later on the same page: > >> > >> The `-n', `-t', and `-q' options do not affect recipe 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}' (*Note How the `MAKE' Variable Works: > >> MAKE Variable.) > >> > >> > >> At least part of that behavior is required by the POSIX specification > >> and has a few decades of history behind it. > > > > Well, ok, but my patch still stands. > > > > According to [the development version of]: > > > > info '(make)Instead of Execution' > > > > we have: > > > > `-t' > > `--touch' > > "Touch". Marks targets as up to date without actually changing > > them. In other words, `make' pretends to update the targets but > > does not really change their contents; instead only their modified > > times are updated. > > > > Comparing this with the text quoted for `--dry-run', it can be seen that > > the operative words here are: > > > > `--dry-run' > > The activity is to print what recipe would be used > > TO MAKE THE TARGETS UP TO DATE, but not actually > > execute it. > > > > `--touch' > > MARKS TARGETS AS UP TO DATE without actually changing. > > > > Similarly, this is what my system's POSIX documentation: > > > > man 1p make > > > > has to say: > > > > -n Write commands that would be executed on standard output, but > > do not execute them. However, lines with a plus sign ( '+' ) > > prefix shall be executed. In this mode, lines with an at sign > > ( '@' ) character prefix shall be written to standard output. > > > > -t Update the modification time of each target as though a > > `touch target' had been executed. Targets that have > > prerequisites but no commands (see Target Rules ), or that > > are already up-to-date, shall not be touched in this manner. > > Write messages to standard output for each target file > > indicating the name of the file and that it was touched. > > Normally, the makefile command lines associated with each > > target are not executed. However, a command line with a plus > > sign ( '+' ) prefix shall be executed. > > > > In particular: > > > > -n Write COMMANDS THAT WOULD BE EXECUTED on standard output, but > > do not execute them. > > > > -t Update the modification time of each target AS THOUGH A > > `touch target' HAD BEEN EXECUTED. > > > > Indeed, `-t' is not simply a directive to touch the targets; in large > > part, it is meant to act as a substitute for the `recipe' (except for > > special command lines detailed above): > > > > -t ... Targets that have prerequisites but no commands (see Target > > Rules ), or that are already up-to-date, shall not be touched > > in this manner. > > > > Thus, it makes most sense for `--dry-run' (`-n') to mask `--touch' (`-t') > > rather than the other way around (which is the current, buggy, unexpected, > > possibly ruinous behavior). > > > > Sincerely, > > Michael Witten > > > > Um... Hello? > > _______________________________________________ > 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