I noticed again that make check in contrib doesn't work, so here is a patch to fix it. Perhaps someone wants to fill in the Windows support for it. Naturally, this works only for contrib itself, not for external packages that use pgxs.
A secondary issue that actually led to this: I was preparing a Debian package for some module^Wextension^W^Hthing that uses pgxs. The Debian packaging tools ("dh", to be exact, for the insiders) have this convenience that by default they examine your makefile and execute the standard targets, if found, in order. So it runs make all, make check, which then fails because of check: @echo "'make check' is not supported." @echo "Do 'make install', then 'make installcheck' instead." @exit 1 You can override this, but it still means that everyone who packages an extension will have to re-figure this out. So while this message might be moderately useful (although I'm not sure whether it's guaranteed that the suggestion will always work), I'd rather get rid of it and not have a check target in the pgxs case. Comments?
diff --git i/GNUmakefile.in w/GNUmakefile.in index f3c5fe5..79b0da4 100644 --- i/GNUmakefile.in +++ w/GNUmakefile.in @@ -60,8 +60,7 @@ check: all check installcheck installcheck-parallel: $(MAKE) -C src/test $@ -# TODO: add contrib -$(call recurse,check-world,src/test src/pl src/interfaces/ecpg,check) +$(call recurse,check-world,src/test src/pl src/interfaces/ecpg contrib,check) $(call recurse,installcheck-world,src/test src/pl src/interfaces/ecpg contrib,installcheck) diff --git i/contrib/earthdistance/Makefile w/contrib/earthdistance/Makefile index 49f6e66..48a7cf8 100644 --- i/contrib/earthdistance/Makefile +++ w/contrib/earthdistance/Makefile @@ -6,6 +6,7 @@ EXTENSION = earthdistance DATA = earthdistance--1.0.sql earthdistance--unpackaged--1.0.sql REGRESS = earthdistance +REGRESS_OPTS = --extra-install=contrib/cube LDFLAGS_SL += $(filter -lm, $(LIBS)) diff --git i/src/makefiles/pgxs.mk w/src/makefiles/pgxs.mk index 87ade0a..44b0603 100644 --- i/src/makefiles/pgxs.mk +++ w/src/makefiles/pgxs.mk @@ -281,13 +281,10 @@ endif installcheck: submake $(pg_regress_installcheck) $(REGRESS_OPTS) $(REGRESS) -# in-tree test doesn't work yet (no way to install my shared library) -#check: all submake -# $(pg_regress_check) $(REGRESS_OPTS) $(REGRESS) -check: - @echo "'make check' is not supported." - @echo "Do 'make install', then 'make installcheck' instead." - @exit 1 +ifndef PGXS +check: all submake + $(pg_regress_check) --extra-install=$(subdir) $(REGRESS_OPTS) $(REGRESS) +endif endif # REGRESS diff --git i/src/test/regress/pg_regress.c w/src/test/regress/pg_regress.c index 5fe3724..9d894f8 100644 --- i/src/test/regress/pg_regress.c +++ w/src/test/regress/pg_regress.c @@ -102,6 +102,7 @@ static bool port_specified_by_user = false; static char *dlpath = PKGLIBDIR; static char *user = NULL; static _stringlist *extraroles = NULL; +static _stringlist *extra_install = NULL; /* internal variables */ static const char *progname; @@ -1894,6 +1895,7 @@ help(void) printf(_(" --top-builddir=DIR (relative) path to top level build directory\n")); printf(_(" --port=PORT start postmaster on PORT\n")); printf(_(" --temp-config=PATH append contents of PATH to temporary config\n")); + printf(_(" --extra-install=DIR additional directory to install (e.g., contrib\n")); printf(_("\n")); printf(_("Options for using an existing installation:\n")); printf(_(" --host=HOST use postmaster running on HOST\n")); @@ -1941,6 +1943,7 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc {"use-existing", no_argument, NULL, 20}, {"launcher", required_argument, NULL, 21}, {"load-extension", required_argument, NULL, 22}, + {"extra-install", required_argument, NULL, 23}, {NULL, 0, NULL, 0} }; @@ -2040,6 +2043,9 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc case 22: add_stringlist_item(&loadextension, optarg); break; + case 23: + add_stringlist_item(&extra_install, optarg); + break; default: /* getopt_long already emitted a complaint */ fprintf(stderr, _("\nTry \"%s -h\" for more information.\n"), @@ -2084,6 +2090,7 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc if (temp_install) { FILE *pg_conf; + _stringlist *sl; /* * Prepare the temp installation @@ -2126,6 +2133,24 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc exit_nicely(2); } + for (sl = extra_install; sl != NULL; sl = sl->next) + { +#ifndef WIN32_ONLY_COMPILER + snprintf(buf, sizeof(buf), + SYSTEMQUOTE "\"%s\" -C \"%s/%s\" DESTDIR=\"%s/install\" install >> \"%s/log/install.log\" 2>&1" SYSTEMQUOTE, + makeprog, top_builddir, sl->str, temp_install, outputdir); +#else + fprintf(stderr, _("\n%s: --extra-install option not supported on this platform\n", progname)); + exit_nicely(2); +#endif + + if (system(buf)) + { + fprintf(stderr, _("\n%s: installation failed\nExamine %s/log/install.log for the reason.\nCommand was: %s\n"), progname, outputdir, buf); + exit_nicely(2); + } + } + /* initdb */ header(_("initializing database system")); snprintf(buf, sizeof(buf),
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers