Re: PGXS "check" target forcing an install ?

From: Sandro Santilli <strk(at)keybit(dot)net>
To: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
Cc: PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: PGXS "check" target forcing an install ?
Date: 2015-06-23 10:03:10
Message-ID: 20150623100310.GB5835@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)keybit(dot)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;

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Eisentraut 2015-06-23 11:23:35 Re: 9.5 make world failing due to sgml tools missing
Previous Message Rui Hai Jiang 2015-06-23 09:07:17 how is a query passed between a coordinator and a datanode