in both input and output dir, to handle vpath builds more simply.
# PGXS: PostgreSQL extensions makefile
-# $PostgreSQL: pgsql/src/makefiles/pgxs.mk,v 1.12 2008/04/07 14:15:58 petere Exp $
+# $PostgreSQL: pgsql/src/makefiles/pgxs.mk,v 1.13 2008/10/01 22:38:56 petere Exp $
# This file contains generic rules to build many kinds of simple
# extension modules. You only need to set a few variables and include
# where to find psql for running the tests
PSQLDIR = $(bindir)
-# When doing a VPATH build, must copy over the test .sql and .out
-# files so that the driver script can find them. We have to use an
-# absolute path for the targets, because otherwise make will try to
-# locate the missing files using VPATH, and will find them in
-# $(srcdir), but the point here is that we want to copy them from
-# $(srcdir) to the build directory.
-
-ifdef VPATH
-abs_builddir := $(shell pwd)
-test_files_src := $(wildcard $(srcdir)/sql/*.sql) $(wildcard $(srcdir)/expected/*.out) $(wildcard $(srcdir)/data/*.data)
-test_files_build := $(patsubst $(srcdir)/%, $(abs_builddir)/%, $(test_files_src))
-
-all: $(test_files_build)
-$(test_files_build): $(abs_builddir)/%: $(srcdir)/%
- ln -s $< $@
-endif # VPATH
-
.PHONY: submake
submake:
ifndef PGXS
# Makefile for PL/Perl
-# $PostgreSQL: pgsql/src/pl/plperl/GNUmakefile,v 1.34 2008/04/07 14:15:58 petere Exp $
+# $PostgreSQL: pgsql/src/pl/plperl/GNUmakefile,v 1.35 2008/10/01 22:38:56 petere Exp $
subdir = src/pl/plperl
top_builddir = ../../..
SPI.c: SPI.xs
$(PERL) $(perl_privlibexp)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@
-# When doing a VPATH build, copy over the .sql and .out files so that the
-# test script can find them. See comments in src/test/regress/GNUmakefile.
-ifdef VPATH
-
-ifneq ($(PORTNAME),win32)
-abs_srcdir := $(shell cd $(srcdir) && pwd)
-abs_builddir := $(shell pwd)
-else
-abs_srcdir := $(shell cd $(srcdir) && pwd -W)
-abs_builddir := $(shell pwd -W)
-endif
-
-test_files_src := $(wildcard $(srcdir)/sql/*.sql) $(wildcard $(srcdir)/expected/*.out)
-test_files_build := $(patsubst $(srcdir)/%, $(abs_builddir)/%, $(test_files_src))
-
-all: $(test_files_build)
-$(test_files_build): $(abs_builddir)/%: $(srcdir)/%
- ln -s $< $@
-
-endif
-
install: all installdirs install-lib
installdirs: installdirs-lib
-# $PostgreSQL: pgsql/src/pl/plpython/Makefile,v 1.29 2008/04/07 14:15:58 petere Exp $
+# $PostgreSQL: pgsql/src/pl/plpython/Makefile,v 1.30 2008/10/01 22:38:56 petere Exp $
subdir = src/pl/plpython
top_builddir = ../../..
all: all-lib
-# When doing a VPATH build, copy over the .sql and .out files so that the
-# test script can find them. See comments in src/test/regress/GNUmakefile.
-ifdef VPATH
-
-ifneq ($(PORTNAME),win32)
-abs_srcdir := $(shell cd $(srcdir) && pwd)
-abs_builddir := $(shell pwd)
-else
-abs_srcdir := $(shell cd $(srcdir) && pwd -W)
-abs_builddir := $(shell pwd -W)
-endif
-
-test_files_src := $(wildcard $(srcdir)/sql/*.sql) $(wildcard $(srcdir)/expected/*.out)
-test_files_build := $(patsubst $(srcdir)/%, $(abs_builddir)/%, $(test_files_src))
-
-all: $(test_files_build)
-$(test_files_build): $(abs_builddir)/%: $(srcdir)/%
- ln -s $< $@
-
-endif
-
install: all installdirs install-lib
installdirs: installdirs-lib
#
# Makefile for the pltcl shared object
#
-# $PostgreSQL: pgsql/src/pl/tcl/Makefile,v 1.51 2008/04/07 14:15:58 petere Exp $
+# $PostgreSQL: pgsql/src/pl/tcl/Makefile,v 1.52 2008/10/01 22:38:56 petere Exp $
#
#-------------------------------------------------------------------------
all: all-lib
$(MAKE) -C modules $@
-# When doing a VPATH build, copy over the .sql and .out files so that the
-# test script can find them. See comments in src/test/regress/GNUmakefile.
-ifdef VPATH
-
-ifneq ($(PORTNAME),win32)
-abs_srcdir := $(shell cd $(srcdir) && pwd)
-abs_builddir := $(shell pwd)
-else
-abs_srcdir := $(shell cd $(srcdir) && pwd -W)
-abs_builddir := $(shell pwd -W)
-endif
-
-test_files_src := $(wildcard $(srcdir)/sql/*.sql) $(wildcard $(srcdir)/expected/*.out)
-test_files_build := $(patsubst $(srcdir)/%, $(abs_builddir)/%, $(test_files_src))
-
-all: $(test_files_build)
-$(test_files_build): $(abs_builddir)/%: $(srcdir)/%
- ln -s $< $@
-
-endif
-
install: all installdirs install-lib
$(MAKE) -C modules $@
# Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/src/test/regress/GNUmakefile,v 1.74 2008/05/30 00:04:32 tgl Exp $
+# $PostgreSQL: pgsql/src/test/regress/GNUmakefile,v 1.75 2008/10/01 22:38:57 petere Exp $
#
#-------------------------------------------------------------------------
$(top_builddir)/src/port/pg_config_paths.h: $(top_builddir)/src/Makefile.global
$(MAKE) -C $(top_builddir)/src/port pg_config_paths.h
-install: pg_regress$(X)
+install: all installdirs
$(INSTALL_PROGRAM) pg_regress$(X) '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_regress$(X)'
+installdirs:
+ $(mkinstalldirs) '$(DESTDIR)$(pgxsdir)/$(subdir)'
+
uninstall:
rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_regress$(X)'
# Test input and expected files. These are created by pg_regress itself, so we
# don't have a rule to create them. We do need rules to clean them however.
-ifile_list := $(subst .source,, $(notdir $(wildcard $(top_srcdir)/$(subdir)/input/*.source)))
-input_files := $(foreach file, $(ifile_list), sql/$(file).sql)
-ofile_list := $(subst .source,, $(notdir $(wildcard $(top_srcdir)/$(subdir)/output/*.source)))
-output_files := $(foreach file, $(ofile_list), expected/$(file).out)
-
-ifneq ($(PORTNAME),win32)
-abs_srcdir := $(shell cd $(srcdir) && pwd)
-abs_builddir := $(shell pwd)
-else
-abs_srcdir := $(shell cd $(srcdir) && pwd -W)
-abs_builddir := $(shell pwd -W)
-endif
+input_files = $(patsubst $(srcdir)/input/%.source,sql/%.sql, $(wildcard $(srcdir)/input/*.source))
+output_files := $(patsubst $(srcdir)/output/%.source,expected/%.out, $(wildcard $(srcdir)/output/*.source))
-# When doing a VPATH build, copy over the remaining .sql and .out
-# files so that the driver script can find them. We have to use an
-# absolute path for the targets, because otherwise make will try to
-# locate the missing files using VPATH, and will find them in
-# $(srcdir), but the point here is that we want to copy them from
-# $(srcdir) to the build directory.
-ifdef VPATH
-remaining_files_src := $(wildcard $(srcdir)/sql/*.sql) $(wildcard $(srcdir)/expected/*.out) $(srcdir)/resultmap
-remaining_files_build := $(patsubst $(srcdir)/%, $(abs_builddir)/%, $(remaining_files_src))
+# not installed by default
-all: $(remaining_files_build)
-$(remaining_files_build): $(abs_builddir)/%: $(srcdir)/%
- ln -s $< $@
-endif
+regress_data_files = \
+ $(filter-out $(addprefix $(srcdir)/,$(output_files)),$(wildcard $(srcdir)/expected/*.out)) \
+ $(wildcard $(srcdir)/input/*.source) \
+ $(wildcard $(srcdir)/output/*.source) \
+ $(filter-out $(addprefix $(srcdir)/,$(input_files)),$(wildcard $(srcdir)/sql/*.sql)) \
+ $(wildcard $(srcdir)/data/*.data) \
+ $(srcdir)/parallel_schedule $(srcdir)/serial_schedule $(srcdir)/resultmap
+
+install-tests: all install install-lib installdirs-tests
+ $(MAKE) -C $(top_builddir)/contrib/spi install
+ for file in $(regress_data_files); do \
+ $(INSTALL_DATA) $$file '$(DESTDIR)$(pkglibdir)/regress/'$$file; \
+ done
+
+installdirs-tests: installdirs
+ $(mkinstalldirs) $(patsubst $(srcdir)/%/,'$(DESTDIR)$(pkglibdir)/regress/%',$(sort $(dir $(regress_data_files))))
# Get some extra C modules from contrib/spi...
## Run tests
##
+pg_regress_call = ./pg_regress --inputdir=$(srcdir) --dlpath=. --multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE)
+
check: all
- ./pg_regress --temp-install=./tmp_check --top-builddir=$(top_builddir) --srcdir=$(abs_srcdir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE) $(TEMP_CONF)
+ $(pg_regress_call) --temp-install=./tmp_check --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) $(TEMP_CONF)
installcheck: all
- ./pg_regress --psqldir=$(PSQLDIR) --schedule=$(srcdir)/serial_schedule --srcdir=$(abs_srcdir) --multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE)
+ $(pg_regress_call) --psqldir=$(PSQLDIR) --schedule=$(srcdir)/serial_schedule
installcheck-parallel: all
- ./pg_regress --psqldir=$(PSQLDIR) --schedule=$(srcdir)/parallel_schedule --srcdir=$(abs_srcdir) --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE)
+ $(pg_regress_call) --psqldir=$(PSQLDIR) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT)
# old interfaces follow...
runtest-parallel: installcheck-parallel
bigtest: all
- ./pg_regress --psqldir=$(PSQLDIR) --schedule=$(srcdir)/serial_schedule --srcdir=$(abs_srcdir) --multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE) numeric_big
+ $(pg_regress_call) --psqldir=$(PSQLDIR) --schedule=$(srcdir)/serial_schedule numeric_big
bigcheck: all
- ./pg_regress --temp-install=./tmp_check --top-builddir=$(top_builddir) --srcdir=$(abs_srcdir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE) numeric_big
+ $(pg_regress_call) --temp-install=./tmp_check --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) numeric_big
##
clean distclean maintainer-clean: clean-lib
# things built by `all' target
- rm -f $(OBJS) refint$(DLSUFFIX) autoinc$(DLSUFFIX)
- rm -f $(output_files) $(input_files) pg_regress_main.o pg_regress.o pg_regress$(X)
+ rm -f $(OBJS) refint$(DLSUFFIX) autoinc$(DLSUFFIX) pg_regress_main.o pg_regress.o pg_regress$(X)
# things created by various check targets
+ rm -f $(output_files) $(input_files)
rm -rf testtablespace
rm -rf results tmp_check log
rm -f regression.diffs regression.out regress.out run_check.out
-ifeq ($(PORTNAME), cygwin)
- rm -f regress.def
-endif
-ifdef VPATH
- rm -f $(remaining_files_build)
-endif
CREATE FUNCTION widget_in(cstring)
RETURNS widget
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C STRICT;
CREATE FUNCTION widget_out(widget)
RETURNS cstring
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C STRICT;
CREATE FUNCTION int44in(cstring)
RETURNS city_budget
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C STRICT;
CREATE FUNCTION int44out(city_budget)
RETURNS cstring
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C STRICT;
CREATE FUNCTION check_primary_key ()
RETURNS trigger
- AS '@abs_builddir@/refint@DLSUFFIX@'
+ AS '@libdir@/refint@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION check_foreign_key ()
RETURNS trigger
- AS '@abs_builddir@/refint@DLSUFFIX@'
+ AS '@libdir@/refint@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION autoinc ()
RETURNS trigger
- AS '@abs_builddir@/autoinc@DLSUFFIX@'
+ AS '@libdir@/autoinc@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION funny_dup17 ()
RETURNS trigger
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION ttdummy ()
RETURNS trigger
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION set_ttdummy (int4)
RETURNS int4
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C STRICT;
-- Things that shouldn't work:
AS 'nosuchfile';
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C
- AS '@abs_builddir@/regress@DLSUFFIX@', 'nosuchsymbol';
+ AS '@libdir@/regress@DLSUFFIX@', 'nosuchsymbol';
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal
AS 'nosuch';
CREATE FUNCTION pt_in_widget(point, widget)
RETURNS bool
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION overpaid(emp)
RETURNS bool
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION boxarea(box)
RETURNS float8
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION interpt_pp(path, path)
RETURNS point
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION reverse_name(name)
RETURNS name
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION oldstyle_length(int4, text)
RETURNS int4
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
--
-- Function dynamic loading
--
-LOAD '@abs_builddir@/regress@DLSUFFIX@';
+LOAD '@libdir@/regress@DLSUFFIX@';
--
CREATE FUNCTION widget_in(cstring)
RETURNS widget
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C STRICT;
NOTICE: type "widget" is not yet defined
DETAIL: Creating a shell type definition.
CREATE FUNCTION widget_out(widget)
RETURNS cstring
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C STRICT;
NOTICE: argument type widget is only a shell
CREATE FUNCTION int44in(cstring)
RETURNS city_budget
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C STRICT;
NOTICE: type "city_budget" is not yet defined
DETAIL: Creating a shell type definition.
CREATE FUNCTION int44out(city_budget)
RETURNS cstring
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C STRICT;
NOTICE: argument type city_budget is only a shell
CREATE FUNCTION check_primary_key ()
RETURNS trigger
- AS '@abs_builddir@/refint@DLSUFFIX@'
+ AS '@libdir@/refint@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION check_foreign_key ()
RETURNS trigger
- AS '@abs_builddir@/refint@DLSUFFIX@'
+ AS '@libdir@/refint@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION autoinc ()
RETURNS trigger
- AS '@abs_builddir@/autoinc@DLSUFFIX@'
+ AS '@libdir@/autoinc@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION funny_dup17 ()
RETURNS trigger
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION ttdummy ()
RETURNS trigger
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION set_ttdummy (int4)
RETURNS int4
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C STRICT;
-- Things that shouldn't work:
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
AS 'nosuchfile';
ERROR: could not access file "nosuchfile": No such file or directory
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C
- AS '@abs_builddir@/regress@DLSUFFIX@', 'nosuchsymbol';
-ERROR: could not find function "nosuchsymbol" in file "@abs_builddir@/regress@DLSUFFIX@"
+ AS '@libdir@/regress@DLSUFFIX@', 'nosuchsymbol';
+ERROR: could not find function "nosuchsymbol" in file "@libdir@/regress@DLSUFFIX@"
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal
AS 'nosuch';
ERROR: there is no built-in function named "nosuch"
LANGUAGE SQL;
CREATE FUNCTION pt_in_widget(point, widget)
RETURNS bool
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION overpaid(emp)
RETURNS bool
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION boxarea(box)
RETURNS float8
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION interpt_pp(path, path)
RETURNS point
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION reverse_name(name)
RETURNS name
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
CREATE FUNCTION oldstyle_length(int4, text)
RETURNS int4
- AS '@abs_builddir@/regress@DLSUFFIX@'
+ AS '@libdir@/regress@DLSUFFIX@'
LANGUAGE C;
--
-- Function dynamic loading
--
-LOAD '@abs_builddir@/regress@DLSUFFIX@';
+LOAD '@libdir@/regress@DLSUFFIX@';
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.47 2008/08/05 05:16:08 tgl Exp $
+ * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.48 2008/10/01 22:38:57 petere Exp $
*
*-------------------------------------------------------------------------
*/
* out where "make install" will put stuff under the temp_install directory.
* In non-temp_install mode, the only thing we need is the location of psql,
* which we expect to find in psqldir, or in the PATH if psqldir isn't given.
+ *
+ * XXX Because pg_regress is not installed in bindir, we can't support
+ * this for relocatable trees as it is. --psqldir would need to be
+ * specified in those cases.
*/
char *bindir = PGBINDIR;
char *libdir = LIBDIR;
bool debug = false;
char *inputdir = ".";
char *outputdir = ".";
-char *psqldir = NULL;
+char *psqldir = PGBINDIR;
static _stringlist *loadlanguage = NULL;
static int max_connections = 0;
static char *encoding = NULL;
static bool nolocale = false;
static char *hostname = NULL;
static int port = -1;
+static char *dlpath = PKGLIBDIR;
static char *user = NULL;
-static char *srcdir = NULL;
static _stringlist *extraroles = NULL;
/* internal variables */
* the given suffix.
*/
static void
-convert_sourcefiles_in(char *source, char *dest, char *suffix)
+convert_sourcefiles_in(char *source_subdir, char *dest_subdir, char *suffix)
{
- char abs_srcdir[MAXPGPATH];
- char abs_builddir[MAXPGPATH];
char testtablespace[MAXPGPATH];
char indir[MAXPGPATH];
struct stat st;
char **names;
int count = 0;
-#ifdef WIN32
- char *c;
-#endif
-
- if (!getcwd(abs_builddir, sizeof(abs_builddir)))
- {
- fprintf(stderr, _("%s: could not get current directory: %s\n"),
- progname, strerror(errno));
- exit_nicely(2);
- }
-
- /*
- * in a VPATH build, use the provided source directory; otherwise, use the
- * current directory.
- */
- if (srcdir)
- strlcpy(abs_srcdir, srcdir, MAXPGPATH);
- else
- strlcpy(abs_srcdir, abs_builddir, MAXPGPATH);
-
- snprintf(indir, MAXPGPATH, "%s/%s", abs_srcdir, source);
+ snprintf(indir, MAXPGPATH, "%s/%s", inputdir, source_subdir);
/* Check that indir actually exists and is a directory */
ret = stat(indir, &st);
/* Error logged in pgfnames */
exit_nicely(2);
-#ifdef WIN32
- /* in Win32, replace backslashes with forward slashes */
- for (c = abs_builddir; *c; c++)
- if (*c == '\\')
- *c = '/';
- for (c = abs_srcdir; *c; c++)
- if (*c == '\\')
- *c = '/';
-#endif
-
- snprintf(testtablespace, MAXPGPATH, "%s/testtablespace", abs_builddir);
+ snprintf(testtablespace, MAXPGPATH, "%s/testtablespace", outputdir);
#ifdef WIN32
/*
/* build the full actual paths to open */
snprintf(prefix, strlen(*name) - 6, "%s", *name);
snprintf(srcfile, MAXPGPATH, "%s/%s", indir, *name);
- snprintf(destfile, MAXPGPATH, "%s/%s.%s", dest, prefix, suffix);
+ snprintf(destfile, MAXPGPATH, "%s/%s.%s", dest_subdir, prefix, suffix);
infile = fopen(srcfile, "r");
if (!infile)
}
while (fgets(line, sizeof(line), infile))
{
- replace_string(line, "@abs_srcdir@", abs_srcdir);
- replace_string(line, "@abs_builddir@", abs_builddir);
+ replace_string(line, "@abs_srcdir@", inputdir);
+ replace_string(line, "@abs_builddir@", outputdir);
replace_string(line, "@testtablespace@", testtablespace);
+ replace_string(line, "@libdir@", dlpath);
replace_string(line, "@DLSUFFIX@", DLSUFFIX);
fputs(line, outfile);
}
/*
* If we didn't process any files, complain because it probably means
- * somebody neglected to pass the needed --srcdir argument.
+ * somebody neglected to pass the needed --inputdir argument.
*/
if (count <= 0)
{
return l;
}
-static bool
+bool
file_exists(const char *file)
{
FILE *f = fopen(file, "r");
}
}
+static char *
+make_absolute_path(const char *in)
+{
+ char *result;
+
+ if (is_absolute_path(in))
+ result = strdup(in);
+ else
+ {
+ static char cwdbuf[MAXPGPATH];
+
+ if (!cwdbuf[0])
+ {
+ if (!getcwd(cwdbuf, sizeof(cwdbuf)))
+ {
+ fprintf(stderr, _("could not get current working directory: %s\n"), strerror(errno));
+ exit_nicely(2);
+ }
+ }
+
+ result = malloc(strlen(cwdbuf) + strlen(in) + 2);
+ sprintf(result, "%s/%s", cwdbuf, in);
+ }
+
+ canonicalize_path(result);
+ return result;
+}
+
static void
help(void)
{
printf(_(" --outputdir=DIR place output files in DIR (default \".\")\n"));
printf(_(" --schedule=FILE use test ordering schedule from FILE\n"));
printf(_(" (can be used multiple times to concatenate)\n"));
- printf(_(" --srcdir=DIR absolute path to source directory (for VPATH builds)\n"));
+ printf(_(" --dlpath=DIR look for dynamic libraries in DIR\n"));
printf(_(" --temp-install=DIR create a temporary installation in DIR\n"));
printf(_("\n"));
printf(_("Options for \"temp-install\" mode:\n"));
{"port", required_argument, NULL, 14},
{"user", required_argument, NULL, 15},
{"psqldir", required_argument, NULL, 16},
- {"srcdir", required_argument, NULL, 17},
+ {"dlpath", required_argument, NULL, 17},
{"create-role", required_argument, NULL, 18},
{"temp-config", required_argument, NULL, 19},
{NULL, 0, NULL, 0}
add_stringlist_item(&schedulelist, optarg);
break;
case 9:
- /* temp_install must be absolute path */
- if (is_absolute_path(optarg))
- temp_install = strdup(optarg);
- else
- {
- char cwdbuf[MAXPGPATH];
-
- if (!getcwd(cwdbuf, sizeof(cwdbuf)))
- {
- fprintf(stderr, _("could not get current working directory: %s\n"), strerror(errno));
- exit_nicely(2);
- }
- temp_install = malloc(strlen(cwdbuf) + strlen(optarg) + 2);
- sprintf(temp_install, "%s/%s", cwdbuf, optarg);
- }
- canonicalize_path(temp_install);
+ temp_install = make_absolute_path(optarg);
break;
case 10:
nolocale = true;
psqldir = strdup(optarg);
break;
case 17:
- srcdir = strdup(optarg);
+ dlpath = strdup(optarg);
break;
case 18:
split_to_stringlist(strdup(optarg), ", ", &extraroles);
if (temp_install)
port = temp_port;
+ inputdir = make_absolute_path(inputdir);
+ outputdir = make_absolute_path(outputdir);
+ dlpath = make_absolute_path(dlpath);
+
/*
* Initialization
*/
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/test/regress/pg_regress.h,v 1.3 2008/01/01 19:46:00 momjian Exp $
+ * $PostgreSQL: pgsql/src/test/regress/pg_regress.h,v 1.4 2008/10/01 22:38:57 petere Exp $
*-------------------------------------------------------------------------
*/
PID_TYPE spawn_process(const char *cmdline);
void exit_nicely(int code);
void replace_string(char *string, char *replace, char *replacement);
+bool file_exists(const char *file);
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/test/regress/pg_regress_main.c,v 1.3 2008/01/01 19:46:00 momjian Exp $
+ * $PostgreSQL: pgsql/src/test/regress/pg_regress_main.c,v 1.4 2008/10/01 22:38:57 petere Exp $
*
*-------------------------------------------------------------------------
*/
char expectfile[MAXPGPATH];
char psql_cmd[MAXPGPATH * 3];
+ /*
+ * Look for files in the output dir first, consistent with a vpath
+ * search. This is mainly to create more reasonable error
+ * messages if the file is not found. It also allows local test
+ * overrides when running pg_regress outside of the source tree.
+ */
snprintf(infile, sizeof(infile), "%s/sql/%s.sql",
- inputdir, testname);
+ outputdir, testname);
+ if (!file_exists(infile))
+ snprintf(infile, sizeof(infile), "%s/sql/%s.sql",
+ inputdir, testname);
+
snprintf(outfile, sizeof(outfile), "%s/results/%s.out",
outputdir, testname);
+
snprintf(expectfile, sizeof(expectfile), "%s/expected/%s.out",
- inputdir, testname);
+ outputdir, testname);
+ if (!file_exists(expectfile))
+ snprintf(expectfile, sizeof(expectfile), "%s/expected/%s.out",
+ inputdir, testname);
add_stringlist_item(resultfiles, outfile);
add_stringlist_item(expectfiles, expectfile);