Re: make -C libpq check fails obscurely if tap tests are disabled

Alvaro Herrera <alvherre@alvh.no-ip.org>

From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Andrew Dunstan <andrew@dunslane.net>
Cc: Justin Pryzby <pryzby@telsasoft.com>, pgsql-hackers@postgresql.org, Andres Freund <andres@anarazel.de>
Date: 2022-07-22T20:19:45Z
Lists: pgsql-hackers
On 2022-Jul-22, Alvaro Herrera wrote:

> It's not very common -- we do have some target-specific variable
> assignments, but none of them use 'export'.  I saw somewhere that this
> works from Make 3.77 onwards, and we require 3.80, so it should be okay.
> The buildfarm will tell us ...

Hm, so prairiedog didn't like this:

make -C libpq all
Makefile:146: *** multiple target patterns.  Stop.

but I don't understand which part it is upset about.  The rules are:

check installcheck: export PATH := $(CURDIR)/test:$(PATH)

check: test-build all
   $(prove_check)

installcheck: test-build all
   $(prove_installcheck)

I think "multiple target patterns" means it doesn't like the fact that
there are two colons in the first line.  But if I use a recursive
assignment (PATH = ...), that of course doesn't work because PATH appears on
both sides of the assignment:

Makefile:146: *** Recursive variable 'PATH' references itself (eventually).  Stop.

Now, maybe that colon is not the issue and perhaps the problem can be
solved by splitting the rule:

check: export PATH := $(CURDIR)/test:$(PATH)
installcheck: export PATH := $(CURDIR)/test:$(PATH)

According to 32568.1536241083@sss.pgh.pa.us, prairiedog is on Make 3.80.
Hmmm.

-- 
Álvaro Herrera               48°01'N 7°57'E  —  https://www.EnterpriseDB.com/
Voy a acabar con todos los humanos / con los humanos yo acabaré
voy a acabar con todos (bis) / con todos los humanos acabaré ¡acabaré! (Bender)



Commits

  1. Increase minimum supported GNU make version to 3.81.

  2. Fix [install]check in interfaces/libpq/Makefile

  3. Run tap tests in src/interfaces/libpq.