On 19.05.21 19:35, Tom Lane wrote:
Alvaro Herrera <alvhe...@alvh.no-ip.org> writes:
On 2021-May-19, Tom Lane wrote:
+1, except that you should add documentation for NO_INSTALL to the
list of definable symbols at the head of pgxs.mk, and to the list
in extend.sgml (compare that for NO_INSTALLCHECK).
I propose this.
WFM.
Thanks for the feedback. I found that my proposal doesn't quite work,
because "check" doesn't depend on "all" (anymore; see dbf2ec1a1c0), so
running make check-world doesn't build the test program first. The
easiest workaround I found was to add an "install: all" line even for
the NO_INSTALL case. It's all a bit hackish, though.
From 24946ef3c8118b88b8df04d6bab051d0b3b20420 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Tue, 25 May 2021 11:01:58 +0200
Subject: [PATCH v2] Add NO_INSTALL option to pgxs
Apply in libpq_pipeline test makefile, so that the test file is not
installed into tmp_install.
Reviewed-by: Alvaro Herrera <alvhe...@alvh.no-ip.org>
Reviewed-by: Tom Lane <t...@sss.pgh.pa.us>
Discussion:
https://www.postgresql.org/message-id/flat/cb9d16a6-760f-cd44-28d6-b091d5fb6ca7%40enterprisedb.com
---
doc/src/sgml/extend.sgml | 10 ++++++++++
src/makefiles/pgxs.mk | 13 +++++++++++++
src/test/modules/libpq_pipeline/Makefile | 2 ++
3 files changed, 25 insertions(+)
diff --git a/doc/src/sgml/extend.sgml b/doc/src/sgml/extend.sgml
index ec95b4eb01..dae5737574 100644
--- a/doc/src/sgml/extend.sgml
+++ b/doc/src/sgml/extend.sgml
@@ -1672,6 +1672,16 @@ <title>Extension Building Infrastructure</title>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><varname>NO_INSTALL</varname></term>
+ <listitem>
+ <para>
+ don't define an <literal>install</literal> target, useful for test
+ modules that don't need their build products to be installed
+ </para>
+ </listitem>
+ </varlistentry>
+
<varlistentry>
<term><varname>NO_INSTALLCHECK</varname></term>
<listitem>
diff --git a/src/makefiles/pgxs.mk b/src/makefiles/pgxs.mk
index 271e7eaba8..0f71fa293d 100644
--- a/src/makefiles/pgxs.mk
+++ b/src/makefiles/pgxs.mk
@@ -49,6 +49,8 @@
# TAP_TESTS -- switch to enable TAP tests
# ISOLATION -- list of isolation test cases
# ISOLATION_OPTS -- additional switches to pass to pg_isolation_regress
+# NO_INSTALL -- don't define an install target, useful for test modules
+# that don't need their build products to be installed
# NO_INSTALLCHECK -- don't define an installcheck target, useful e.g. if
# tests require special configuration, or don't use pg_regress
# EXTRA_CLEAN -- extra files to remove in 'make clean'
@@ -227,6 +229,8 @@ all: all-lib
endif # MODULE_big
+ifndef NO_INSTALL
+
install: all installdirs
ifneq (,$(EXTENSION))
$(INSTALL_DATA) $(addprefix $(srcdir)/, $(addsuffix .control,
$(EXTENSION))) '$(DESTDIR)$(datadir)/extension/'
@@ -336,6 +340,15 @@ endif # with_llvm
uninstall: uninstall-lib
endif # MODULE_big
+else # NO_INSTALL
+
+# Need this so that temp-install builds artifacts not meant for
+# installation (Normally, check should depend on all, but we don't do
+# that because of parallel make risk (dbf2ec1a1c0).)
+install: all
+
+endif # NO_INSTALL
+
clean:
ifdef MODULES
diff --git a/src/test/modules/libpq_pipeline/Makefile
b/src/test/modules/libpq_pipeline/Makefile
index b798f5fbbc..c9c5ae1beb 100644
--- a/src/test/modules/libpq_pipeline/Makefile
+++ b/src/test/modules/libpq_pipeline/Makefile
@@ -3,6 +3,8 @@
PROGRAM = libpq_pipeline
OBJS = libpq_pipeline.o
+NO_INSTALL = 1
+
PG_CPPFLAGS = -I$(libpq_srcdir)
PG_LIBS_INTERNAL += $(libpq_pgport)
--
2.31.1