On Wednesday 23 March 2011, Karl Berry wrote: > 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 > This happens almost surely because you have `override' warnings enabled, and Automake is treating warnings as errors (do you have `-Wall -Werror' in AM_INIT_AUTOMAKE, maybe?). If you want to override an Automake-provided target without complaints from Automake, you must disable the `override' warnings, e.g., by using "AUTOMAKE_OPTIONS = -Wno-override" in the affected Makefile.am (or by not using `-Wall' in AM_INIT_AUTOMAKE, even if I would discourage this).
> 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? > See above. > (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.) > If there is a known use, I don't know it; sorry! > 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 :). > That's already implemented (well, almost -- it's not true for few special targets, like `all' and `check'; maybe we should fix this inconsistency?) > Perhaps there should be a warning in case of such overrides, > See above. > but a fatal "you can't do that"? > You must have enabled `-Werror' somewhere... could you please confirm? Otherwise we have a bug. > 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. > Adding: AUTOMAKE_OPTIONS = -Wno-override dvi: to the relevant Makefile.am should be enough as a workaround (even if not particularly clean). > Thanks, > Karl > > HTH, Stefano