Hi all While updating an extension for 9.6 I noticed that while the $(prove_check) definition is exposed for use by PGXS in Makefile.global, extensions can't actually use the TAP tests because we don't install the required Perl modules like PostgresNode.pm.
I don't see any reason not to make this available to extension authors and doing so is harmless, so here's a small patch to install it. I think it's reasonable to add this to 9.6 even at this late stage; IMO it should've been installed from the beginning. They're only installed if --enable-tap-tests is set, since otherwise $(prove_check) will just error out with "TAP tests not enabled" anyway. Not having this in 9.6 will make it way harder for extension authors to benefit from the new TAP tooling. Another patch allows the isolation tester to be installed too, again so that extensions can use it. The final patch just adds a comment to src/test/Makefile to warn that src/Makefile doesn't call it directly, because I was confused as to why 'make -C src/test install' installed everything, but 'make install' did not. Sorry this is so late in the piece. It only came up when I switched from 10.0 dev/review to updating extensions for 9.6. But it's just adding installed files and I think it's worth doing. Another small patch (pending) will be needed because we look for pg_regress in the wrong place when running out-of-tree with $(prove_installcheck). Can't exec "/home/craig/projects/2Q/postgres-bdr-extension//home/craig/pg/96/lib/postgresql/pgxs/src/makefiles/../../src/test/regress/pg_regress": No such file or directory at /home/craig/pg/96/lib/postgresql/pgxs/src/makefiles/../../src/test/perl/TestLib.pm line 151. $(prove_check) won't be usable because it assumes a temp install in ./tmp_install but that's to be expected. -- Craig Ringer http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
From 1974ef1e771e28c39d5f6acb29c648e864b0f057 Mon Sep 17 00:00:00 2001 From: Craig Ringer <cr...@2ndquadrant.com> Date: Tue, 13 Sep 2016 11:06:58 +0800 Subject: [PATCH 1/3] Install the Perl TAP tests --- src/Makefile | 3 ++- src/test/Makefile | 2 +- src/test/perl/GNUmakefile | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 src/test/perl/GNUmakefile diff --git a/src/Makefile b/src/Makefile index b526be7..977f80b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -26,7 +26,8 @@ SUBDIRS = \ bin \ pl \ makefiles \ - test/regress + test/regress \ + test/perl # There are too many interdependencies between the subdirectories, so # don't attempt parallel make here. diff --git a/src/test/Makefile b/src/test/Makefile index 7f7754f..6b40cf5 100644 --- a/src/test/Makefile +++ b/src/test/Makefile @@ -12,7 +12,7 @@ subdir = src/test top_builddir = ../.. include $(top_builddir)/src/Makefile.global -SUBDIRS = regress isolation modules recovery +SUBDIRS = perl regress isolation modules recovery # We don't build or execute examples/, locale/, or thread/ by default, # but we do want "make clean" etc to recurse into them. Likewise for ssl/, diff --git a/src/test/perl/GNUmakefile b/src/test/perl/GNUmakefile new file mode 100644 index 0000000..810a712 --- /dev/null +++ b/src/test/perl/GNUmakefile @@ -0,0 +1,39 @@ +#------------------------------------------------------------------------- +# +# Makefile for src/test/perl +# +# Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/test/perl/Makefile +# +#------------------------------------------------------------------------- + +subdir = src/test/perl +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +installdirs: + $(MKDIR_P) '$(DESTDIR)$(pgxsdir)/$(subdir)' + +ifeq ($(enable_tap_tests),yes) + +install: all installdirs + $(INSTALL_PROGRAM) TestLib.pm '$(DESTDIR)$(pgxsdir)/$(subdir)/TestLib.pm' + $(INSTALL_PROGRAM) SimpleTee.pm '$(DESTDIR)$(pgxsdir)/$(subdir)/SimpleTee.pm' + $(INSTALL_PROGRAM) RecursiveCopy.pm '$(DESTDIR)$(pgxsdir)/$(subdir)/RecursiveCopy.pm' + $(INSTALL_PROGRAM) PostgresNode.pm '$(DESTDIR)$(pgxsdir)/$(subdir)/PostgresNode.pm' + +uninstall: + rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/TestLib.pm' + rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/SimpleTee.pm' + rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/RecursiveCopy.pm' + rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/PostgresNode.pm' + +else + +install: ; + +uninstall: ; + +endif -- 2.5.5
From bc023c43e44a615aaf310e13edeea97ca8928ce6 Mon Sep 17 00:00:00 2001 From: Craig Ringer <cr...@2ndquadrant.com> Date: Tue, 13 Sep 2016 11:00:41 +0800 Subject: [PATCH 2/3] Add install rules for isolation tester Allow 'make install' for the isolation tester to work so it can be used from PGXS extensions. --- src/Makefile | 1 + src/test/isolation/Makefile | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/Makefile b/src/Makefile index 977f80b..d4aa06b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -27,6 +27,7 @@ SUBDIRS = \ pl \ makefiles \ test/regress \ + test/isolation \ test/perl # There are too many interdependencies between the subdirectories, so diff --git a/src/test/isolation/Makefile b/src/test/isolation/Makefile index 3d272d5..e111bf0 100644 --- a/src/test/isolation/Makefile +++ b/src/test/isolation/Makefile @@ -66,3 +66,14 @@ installcheck-prepared-txns: all temp-install check-prepared-txns: all temp-install ./pg_isolation_regress --temp-instance=./tmp_check $(TEMP_CONF) $(EXTRA_REGRESS_OPTS) --inputdir=$(srcdir) --schedule=$(srcdir)/isolation_schedule prepared-transactions + +install: all installdirs + $(INSTALL_PROGRAM) isolationtester$(X) '$(DESTDIR)$(pgxsdir)/$(subdir)/isolationtester$(X)' + $(INSTALL_PROGRAM) pg_isolation_regress$(X) '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_isolation_regress$(X)' + +installdirs: + $(MKDIR_P) '$(DESTDIR)$(pgxsdir)/$(subdir)' + +uninstall: + rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/isolationtester$(X)' + rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_isolation_regress$(X)' -- 2.5.5
From 58daf37d03c2f01533737fffdcdd15949b4cbbad Mon Sep 17 00:00:00 2001 From: Craig Ringer <cr...@2ndquadrant.com> Date: Tue, 13 Sep 2016 11:48:43 +0800 Subject: [PATCH 3/3] Note that src/test/Makefile is not called from src/Makefile Add a comment to help developers who're editing src/test/Makefile. --- src/test/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/test/Makefile b/src/test/Makefile index 6b40cf5..a24071e 100644 --- a/src/test/Makefile +++ b/src/test/Makefile @@ -11,6 +11,10 @@ subdir = src/test top_builddir = ../.. include $(top_builddir)/src/Makefile.global + +# Note that src/test/Makefile is not normally called recursively by +# src/Makefile; instead, individual subdirectories are called directly +# from its SUBDIRS. SUBDIRS = perl regress isolation modules recovery -- 2.5.5
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers