diff -cr -x TAGS ../cvs-pgsql/src/makefiles/pgxs.mk ./src/makefiles/pgxs.mk *** ../cvs-pgsql/src/makefiles/pgxs.mk 2008-04-07 17:15:58.000000000 +0300 --- ./src/makefiles/pgxs.mk 2008-09-22 20:40:39.000000000 +0300 *************** *** 232,254 **** # 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 --- 232,237 ---- diff -cr -x TAGS ../cvs-pgsql/src/pl/plperl/GNUmakefile ./src/pl/plperl/GNUmakefile *** ../cvs-pgsql/src/pl/plperl/GNUmakefile 2008-04-07 17:15:58.000000000 +0300 --- ./src/pl/plperl/GNUmakefile 2008-09-22 20:29:07.000000000 +0300 *************** *** 50,76 **** 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 --- 50,55 ---- diff -cr -x TAGS ../cvs-pgsql/src/pl/plpython/Makefile ./src/pl/plpython/Makefile *** ../cvs-pgsql/src/pl/plpython/Makefile 2008-04-07 17:15:58.000000000 +0300 --- ./src/pl/plpython/Makefile 2008-09-22 20:30:40.000000000 +0300 *************** *** 66,92 **** 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 --- 66,71 ---- diff -cr -x TAGS ../cvs-pgsql/src/pl/tcl/Makefile ./src/pl/tcl/Makefile *** ../cvs-pgsql/src/pl/tcl/Makefile 2008-04-07 17:15:58.000000000 +0300 --- ./src/pl/tcl/Makefile 2008-09-22 20:31:13.000000000 +0300 *************** *** 49,75 **** 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 $@ --- 49,54 ---- diff -cr -x TAGS ../cvs-pgsql/src/test/regress/GNUmakefile ./src/test/regress/GNUmakefile *** ../cvs-pgsql/src/test/regress/GNUmakefile 2008-05-30 03:04:32.000000000 +0300 --- ./src/test/regress/GNUmakefile 2008-09-22 19:57:57.000000000 +0300 *************** *** 65,73 **** $(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_PROGRAM) pg_regress$(X) '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_regress$(X)' uninstall: rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_regress$(X)' --- 65,76 ---- $(top_builddir)/src/port/pg_config_paths.h: $(top_builddir)/src/Makefile.global $(MAKE) -C $(top_builddir)/src/port pg_config_paths.h ! 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)' *************** *** 83,116 **** # 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 ! ! # 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)) ! ! all: $(remaining_files_build) ! $(remaining_files_build): $(abs_builddir)/%: $(srcdir)/% ! ln -s $< $@ ! endif # Get some extra C modules from contrib/spi... --- 86,113 ---- # 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. ! input_files = $(patsubst $(srcdir)/input/%.source,sql/%.sql, $(wildcard $(srcdir)/input/*.source)) ! output_files := $(patsubst $(srcdir)/output/%.source,expected/%.out, $(wildcard $(srcdir)/output/*.source)) ! ! ! # not installed by default ! ! 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... *************** *** 144,157 **** ## Run tests ## 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) installcheck: all ! ./pg_regress --psqldir=$(PSQLDIR) --schedule=$(srcdir)/serial_schedule --srcdir=$(abs_srcdir) --multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE) installcheck-parallel: all ! ./pg_regress --psqldir=$(PSQLDIR) --schedule=$(srcdir)/parallel_schedule --srcdir=$(abs_srcdir) --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE) # old interfaces follow... --- 141,156 ---- ## Run tests ## + pg_regress_call = ./pg_regress --inputdir=$(srcdir) --dlpath=. --multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE) + check: all ! $(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_call) --psqldir=$(PSQLDIR) --schedule=$(srcdir)/serial_schedule installcheck-parallel: all ! $(pg_regress_call) --psqldir=$(PSQLDIR) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) # old interfaces follow... *************** *** 161,170 **** 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 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 ## --- 160,169 ---- runtest-parallel: installcheck-parallel bigtest: all ! $(pg_regress_call) --psqldir=$(PSQLDIR) --schedule=$(srcdir)/serial_schedule numeric_big bigcheck: all ! $(pg_regress_call) --temp-install=./tmp_check --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) numeric_big ## *************** *** 173,187 **** 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) # things created by various check targets 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 --- 172,180 ---- clean distclean maintainer-clean: clean-lib # things built by `all' target ! 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 diff -cr -x TAGS ../cvs-pgsql/src/test/regress/input/create_function_1.source ./src/test/regress/input/create_function_1.source *** ../cvs-pgsql/src/test/regress/input/create_function_1.source 2008-05-30 03:04:32.000000000 +0300 --- ./src/test/regress/input/create_function_1.source 2008-09-22 12:08:46.000000000 +0300 *************** *** 4,55 **** CREATE FUNCTION widget_in(cstring) RETURNS widget ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C STRICT; CREATE FUNCTION widget_out(widget) RETURNS cstring ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C STRICT; CREATE FUNCTION int44in(cstring) RETURNS city_budget ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C STRICT; CREATE FUNCTION int44out(city_budget) RETURNS cstring ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C STRICT; CREATE FUNCTION check_primary_key () RETURNS trigger ! AS '@abs_builddir@/refint@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION check_foreign_key () RETURNS trigger ! AS '@abs_builddir@/refint@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION autoinc () RETURNS trigger ! AS '@abs_builddir@/autoinc@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION funny_dup17 () RETURNS trigger ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION ttdummy () RETURNS trigger ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION set_ttdummy (int4) RETURNS int4 ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C STRICT; -- Things that shouldn't work: --- 4,55 ---- CREATE FUNCTION widget_in(cstring) RETURNS widget ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; CREATE FUNCTION widget_out(widget) RETURNS cstring ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; CREATE FUNCTION int44in(cstring) RETURNS city_budget ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; CREATE FUNCTION int44out(city_budget) RETURNS cstring ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; CREATE FUNCTION check_primary_key () RETURNS trigger ! AS '@libdir@/refint@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION check_foreign_key () RETURNS trigger ! AS '@libdir@/refint@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION autoinc () RETURNS trigger ! AS '@libdir@/autoinc@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION funny_dup17 () RETURNS trigger ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION ttdummy () RETURNS trigger ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION set_ttdummy (int4) RETURNS int4 ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; -- Things that shouldn't work: *************** *** 73,79 **** AS 'nosuchfile'; CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C ! AS '@abs_builddir@/regress@DLSUFFIX@', 'nosuchsymbol'; CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal AS 'nosuch'; --- 73,79 ---- AS 'nosuchfile'; CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C ! AS '@libdir@/regress@DLSUFFIX@', 'nosuchsymbol'; CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal AS 'nosuch'; diff -cr -x TAGS ../cvs-pgsql/src/test/regress/input/create_function_2.source ./src/test/regress/input/create_function_2.source *** ../cvs-pgsql/src/test/regress/input/create_function_2.source 2006-02-27 18:09:50.000000000 +0200 --- ./src/test/regress/input/create_function_2.source 2008-09-22 12:09:34.000000000 +0300 *************** *** 36,71 **** CREATE FUNCTION pt_in_widget(point, widget) RETURNS bool ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION overpaid(emp) RETURNS bool ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION boxarea(box) RETURNS float8 ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION interpt_pp(path, path) RETURNS point ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION reverse_name(name) RETURNS name ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION oldstyle_length(int4, text) RETURNS int4 ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; -- -- Function dynamic loading -- ! LOAD '@abs_builddir@/regress@DLSUFFIX@'; --- 36,71 ---- CREATE FUNCTION pt_in_widget(point, widget) RETURNS bool ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION overpaid(emp) RETURNS bool ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION boxarea(box) RETURNS float8 ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION interpt_pp(path, path) RETURNS point ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION reverse_name(name) RETURNS name ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION oldstyle_length(int4, text) RETURNS int4 ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; -- -- Function dynamic loading -- ! LOAD '@libdir@/regress@DLSUFFIX@'; diff -cr -x TAGS ../cvs-pgsql/src/test/regress/output/create_function_1.source ./src/test/regress/output/create_function_1.source *** ../cvs-pgsql/src/test/regress/output/create_function_1.source 2008-09-02 15:11:11.000000000 +0300 --- ./src/test/regress/output/create_function_1.source 2008-09-22 12:13:59.000000000 +0300 *************** *** 3,51 **** -- CREATE FUNCTION widget_in(cstring) RETURNS widget ! AS '@abs_builddir@/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@' LANGUAGE C STRICT; NOTICE: argument type widget is only a shell CREATE FUNCTION int44in(cstring) RETURNS city_budget ! AS '@abs_builddir@/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@' LANGUAGE C STRICT; NOTICE: argument type city_budget is only a shell CREATE FUNCTION check_primary_key () RETURNS trigger ! AS '@abs_builddir@/refint@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION check_foreign_key () RETURNS trigger ! AS '@abs_builddir@/refint@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION autoinc () RETURNS trigger ! AS '@abs_builddir@/autoinc@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION funny_dup17 () RETURNS trigger ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION ttdummy () RETURNS trigger ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION set_ttdummy (int4) RETURNS int4 ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C STRICT; -- Things that shouldn't work: CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL --- 3,51 ---- -- CREATE FUNCTION widget_in(cstring) RETURNS widget ! 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 '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; NOTICE: argument type widget is only a shell CREATE FUNCTION int44in(cstring) RETURNS city_budget ! 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 '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; NOTICE: argument type city_budget is only a shell CREATE FUNCTION check_primary_key () RETURNS trigger ! AS '@libdir@/refint@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION check_foreign_key () RETURNS trigger ! AS '@libdir@/refint@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION autoinc () RETURNS trigger ! AS '@libdir@/autoinc@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION funny_dup17 () RETURNS trigger ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION ttdummy () RETURNS trigger ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION set_ttdummy (int4) RETURNS int4 ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; -- Things that shouldn't work: CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL *************** *** 75,82 **** 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@" CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal AS 'nosuch'; ERROR: there is no built-in function named "nosuch" --- 75,82 ---- AS 'nosuchfile'; ERROR: could not access file "nosuchfile": No such file or directory CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C ! 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" diff -cr -x TAGS ../cvs-pgsql/src/test/regress/output/create_function_2.source ./src/test/regress/output/create_function_2.source *** ../cvs-pgsql/src/test/regress/output/create_function_2.source 2006-02-27 18:09:50.000000000 +0200 --- ./src/test/regress/output/create_function_2.source 2008-09-22 12:13:30.000000000 +0300 *************** *** 29,57 **** LANGUAGE SQL; CREATE FUNCTION pt_in_widget(point, widget) RETURNS bool ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION overpaid(emp) RETURNS bool ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION boxarea(box) RETURNS float8 ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION interpt_pp(path, path) RETURNS point ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION reverse_name(name) RETURNS name ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION oldstyle_length(int4, text) RETURNS int4 ! AS '@abs_builddir@/regress@DLSUFFIX@' LANGUAGE C; -- -- Function dynamic loading -- ! LOAD '@abs_builddir@/regress@DLSUFFIX@'; --- 29,57 ---- LANGUAGE SQL; CREATE FUNCTION pt_in_widget(point, widget) RETURNS bool ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION overpaid(emp) RETURNS bool ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION boxarea(box) RETURNS float8 ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION interpt_pp(path, path) RETURNS point ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION reverse_name(name) RETURNS name ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION oldstyle_length(int4, text) RETURNS int4 ! AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; -- -- Function dynamic loading -- ! LOAD '@libdir@/regress@DLSUFFIX@'; diff -cr -x TAGS ../cvs-pgsql/src/test/regress/pg_regress.c ./src/test/regress/pg_regress.c *** ../cvs-pgsql/src/test/regress/pg_regress.c 2008-08-05 08:16:08.000000000 +0300 --- ./src/test/regress/pg_regress.c 2008-09-22 21:01:20.000000000 +0300 *************** *** 47,52 **** --- 47,56 ---- * 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; *************** *** 70,76 **** bool debug = false; char *inputdir = "."; char *outputdir = "."; ! char *psqldir = NULL; static _stringlist *loadlanguage = NULL; static int max_connections = 0; static char *encoding = NULL; --- 74,80 ---- bool debug = false; char *inputdir = "."; char *outputdir = "."; ! char *psqldir = PGBINDIR; static _stringlist *loadlanguage = NULL; static int max_connections = 0; static char *encoding = NULL; *************** *** 83,90 **** static bool nolocale = false; static char *hostname = NULL; static int port = -1; static char *user = NULL; - static char *srcdir = NULL; static _stringlist *extraroles = NULL; /* internal variables */ --- 87,94 ---- static bool nolocale = false; static char *hostname = NULL; static int port = -1; + static char *dlpath = PKGLIBDIR; static char *user = NULL; static _stringlist *extraroles = NULL; /* internal variables */ *************** *** 391,400 **** * the given suffix. */ static void ! convert_sourcefiles_in(char *source, char *dest, char *suffix) { - char abs_srcdir[MAXPGPATH]; - char abs_builddir[MAXPGPATH]; char testtablespace[MAXPGPATH]; char indir[MAXPGPATH]; struct stat st; --- 395,402 ---- * the given suffix. */ static void ! convert_sourcefiles_in(char *source_subdir, char *dest_subdir, char *suffix) { char testtablespace[MAXPGPATH]; char indir[MAXPGPATH]; struct stat st; *************** *** 403,429 **** 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); /* Check that indir actually exists and is a directory */ ret = stat(indir, &st); --- 405,411 ---- char **names; int count = 0; ! snprintf(indir, MAXPGPATH, "%s/%s", inputdir, source_subdir); /* Check that indir actually exists and is a directory */ ret = stat(indir, &st); *************** *** 441,457 **** /* 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); #ifdef WIN32 /* --- 423,429 ---- /* Error logged in pgfnames */ exit_nicely(2); ! snprintf(testtablespace, MAXPGPATH, "%s/testtablespace", outputdir); #ifdef WIN32 /* *************** *** 490,496 **** /* 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); infile = fopen(srcfile, "r"); if (!infile) --- 462,468 ---- /* 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_subdir, prefix, suffix); infile = fopen(srcfile, "r"); if (!infile) *************** *** 508,516 **** } while (fgets(line, sizeof(line), infile)) { ! replace_string(line, "@abs_srcdir@", abs_srcdir); ! replace_string(line, "@abs_builddir@", abs_builddir); replace_string(line, "@testtablespace@", testtablespace); replace_string(line, "@DLSUFFIX@", DLSUFFIX); fputs(line, outfile); } --- 480,489 ---- } while (fgets(line, sizeof(line), infile)) { ! 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); } *************** *** 520,526 **** /* * If we didn't process any files, complain because it probably means ! * somebody neglected to pass the needed --srcdir argument. */ if (count <= 0) { --- 493,499 ---- /* * If we didn't process any files, complain because it probably means ! * somebody neglected to pass the needed --inputdir argument. */ if (count <= 0) { *************** *** 1087,1093 **** return l; } ! static bool file_exists(const char *file) { FILE *f = fopen(file, "r"); --- 1060,1066 ---- return l; } ! bool file_exists(const char *file) { FILE *f = fopen(file, "r"); *************** *** 1792,1797 **** --- 1765,1798 ---- } } + 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) { *************** *** 1812,1818 **** 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(_(" --temp-install=DIR create a temporary installation in DIR\n")); printf(_("\n")); printf(_("Options for \"temp-install\" mode:\n")); --- 1813,1819 ---- 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(_(" --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")); *************** *** 1861,1867 **** {"port", required_argument, NULL, 14}, {"user", required_argument, NULL, 15}, {"psqldir", required_argument, NULL, 16}, ! {"srcdir", required_argument, NULL, 17}, {"create-role", required_argument, NULL, 18}, {"temp-config", required_argument, NULL, 19}, {NULL, 0, NULL, 0} --- 1862,1868 ---- {"port", required_argument, NULL, 14}, {"user", required_argument, NULL, 15}, {"psqldir", required_argument, NULL, 16}, ! {"dlpath", required_argument, NULL, 17}, {"create-role", required_argument, NULL, 18}, {"temp-config", required_argument, NULL, 19}, {NULL, 0, NULL, 0} *************** *** 1922,1943 **** 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); break; case 10: nolocale = true; --- 1923,1929 ---- add_stringlist_item(&schedulelist, optarg); break; case 9: ! temp_install = make_absolute_path(optarg); break; case 10: nolocale = true; *************** *** 1969,1975 **** psqldir = strdup(optarg); break; case 17: ! srcdir = strdup(optarg); break; case 18: split_to_stringlist(strdup(optarg), ", ", &extraroles); --- 1955,1961 ---- psqldir = strdup(optarg); break; case 17: ! dlpath = strdup(optarg); break; case 18: split_to_stringlist(strdup(optarg), ", ", &extraroles); *************** *** 1997,2002 **** --- 1983,1992 ---- if (temp_install) port = temp_port; + inputdir = make_absolute_path(inputdir); + outputdir = make_absolute_path(outputdir); + dlpath = make_absolute_path(dlpath); + /* * Initialization */ diff -cr -x TAGS ../cvs-pgsql/src/test/regress/pg_regress.h ./src/test/regress/pg_regress.h *** ../cvs-pgsql/src/test/regress/pg_regress.h 2008-01-01 21:46:00.000000000 +0200 --- ./src/test/regress/pg_regress.h 2008-09-20 19:24:29.000000000 +0300 *************** *** 57,59 **** --- 57,60 ---- 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); diff -cr -x TAGS ../cvs-pgsql/src/test/regress/pg_regress_main.c ./src/test/regress/pg_regress_main.c *** ../cvs-pgsql/src/test/regress/pg_regress_main.c 2008-01-01 21:46:00.000000000 +0200 --- ./src/test/regress/pg_regress_main.c 2008-09-21 19:23:08.000000000 +0300 *************** *** 34,45 **** char expectfile[MAXPGPATH]; char psql_cmd[MAXPGPATH * 3]; 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); add_stringlist_item(resultfiles, outfile); add_stringlist_item(expectfiles, expectfile); --- 34,59 ---- 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", ! 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", ! 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);