On Tue, Jun 23, 2015 at 02:31:03PM +0900, Michael Paquier wrote:
> On Tue, Jun 23, 2015 at 12:11 AM, Sandro Santilli <strk@keybit.net> wrote:
> > I've noted that upgrading from PostgreSQL 9.3 to 9.5 I'm suddenly
> > unable to specify a "check" rule in the Makefile that includes the
> > PGXS one. The error is:
> >
> > $ make check
> > rm -rf ''/tmp_install
> > make -C '/home/postgresql-9.5/lib/pgxs/src/makefiles/../..' DESTDIR=''/tmp_install install
> > make[1]: Entering directory `/home/postgresql-9.5/lib/pgxs'
> > make[1]: *** No rule to make target `install'. Stop.
> > make[1]: Leaving directory `/home/postgresql-9.5/lib/pgxs'
> > make: *** [temp-install] Error 2
> >
> > I tracked the dangerous -rf to come from Makefile.global and it's empty
> > string being due to abs_top_builddir not being define in my own Makefile.
> > But beside that, which I can probably fix, it doesn't sound correct
> > that a "check" rule insists in finding an "install" rule.
>
> Oops, this is a regression, and a dangerous one indeed. This is caused
> by dcae5fac.
>
> One fix is to use NO_TEMP_INSTALL=yes in Makefile.global in the
> context of PGXS, like in the patch attached, this variable needing to
> be set before Makefile.global is loaded. We could as well use directly
> PGXS in the section "Testing", but that does not sound appealing for
> Makefile.global's readability.
Thanks, setting NO_TEMP_INSTALL=yes in the including Makefile fixes
this issue.
> > I'm also
> > surprised that there's no warning coming out from the "make" invocation
> > given I'm defining a "check" rule myself (after inclusion).
>
> Why? It looks perfectly normal to me to be able to define your own
> check rule. That's more flexible this way.
I'm surprised because I used to get warnings on overrides, and I actually
still get them for other rules. For example:
Makefile:192: warning: overriding commands for target `install'
/home/postgresql-9.3.4/lib/pgxs/src/makefiles/pgxs.mk:120: warning: ignoring old commands for target `install'
The same warning isn't raised for the "check" rule, while it is clearly
defined in some upper Makefile (as shown by the forced-install-bug).
> Thoughts?
Mixed... One one hand I'm happy to implement my own rules, but in this
specific case the lack of a warning left me with no hint about where
the offending "check" rule was defined.
--strk;