Re: PGXS "check" target forcing an install ? - Mailing list pgsql-hackers

From Sandro Santilli
Subject Re: PGXS "check" target forcing an install ?
Date
Msg-id 20150623100310.GB5835@localhost
Whole thread Raw
In response to Re: PGXS "check" target forcing an install ?  (Michael Paquier <michael.paquier@gmail.com>)
List pgsql-hackers
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;



pgsql-hackers by date:

Previous
From: Rui Hai Jiang
Date:
Subject: how is a query passed between a coordinator and a datanode
Next
From: Peter Eisentraut
Date:
Subject: Re: 9.5 make world failing due to sgml tools missing