Subject: bug#8326: can't override dvi: target, or others with -local

From: [email-masked] (Karl Berry)
Date: Wed, 23 Mar 2011 00:21:56 GMT

Aside from the discussion in #8289 about alternatives to the hardwired
make dvi being run by make distcheck, there seems to be another problem,
namely putting a simple
dvi:
in a Makefile.am doesn't work to override the default rule. I get an
error like this:

  doc/Makefile.am:12: user target `dvi' defined here...
  automake: ... overrides Automake target `dvi' defined here
  doc/Makefile.am:12: consider using dvi-local instead of dvi

Looking for the code that's enforcing this, I see in Rule.pm around line
this comment:
	      # -am targets listed in %dependencies support a -local
	      # variant.  If the user tries to override TARGET or
	      # TARGET-am for which there exists a -local variant,
	      # just tell the user to use it.

But dvi-local does not suffice for the case at hand; that is, it can't
be used to avoid rebuilding the dvi, as far as I can see.  Certainly
merely adding dvi-local: does nothing in particular.  Is there another
way?

(Aside: I'm just curious, what can dvi-local actually be used for?
If there's a known use for it, I suggest mentioning it in the doc.)

As far as I can see, this behavior contradicts the documentation (node:
Extending), which simply says:

   * As far as rules are concerned, a user-defined rule overrides any
     `automake'-defined rule for the same target.

So my report is to suggest implementing that :).  Perhaps there should
be a warning in case of such overrides, but a fatal "you can't do that"?
Else the doc should be changed.

At any rate, if there's a workaround to get a clean make distcheck with
a PDF-only manual with the currently released automake, we'd like to know.

Thanks,
Karl