Thread: make installcheck on non-default ports
I was trying to set up my dev box for multiple simultaneous Postgres installs (7.3 stable, 7.4 stable, cvs head) and discovered that `make installcheck` did not honor the default port assigned at configure time. I view this as a bug. The attached resolves the issue for all three versions. Any objections to me applying this to cvs head? What about 7.3 and 7.4 stable branches? Thanks, Joe Index: src/test/regress/GNUmakefile =================================================================== RCS file: /cvsroot/pgsql-server/src/test/regress/GNUmakefile,v retrieving revision 1.43 diff -c -r1.43 GNUmakefile *** src/test/regress/GNUmakefile 2 Nov 2003 21:56:15 -0000 1.43 --- src/test/regress/GNUmakefile 26 Nov 2003 04:00:38 -0000 *************** *** 122,128 **** $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE)$(MAXCONNOPT) installcheck: all ! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) # old interfaces follow... --- 122,128 ---- $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE)$(MAXCONNOPT) installcheck: all ! $(SHELL) ./pg_regress --port=$(DEF_PGPORT) --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) # old interfaces follow... *************** *** 131,137 **** runtest: installcheck bigtest: ! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) numeric_big bigcheck: $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE)$(MAXCONNOPT) numeric_big --- 131,137 ---- runtest: installcheck bigtest: ! $(SHELL) ./pg_regress --port=$(DEF_PGPORT) --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) numeric_big bigcheck: $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE)$(MAXCONNOPT) numeric_big
Joe Conway wrote: > I was trying to set up my dev box for multiple simultaneous Postgres > installs (7.3 stable, 7.4 stable, cvs head) and discovered that > `make installcheck` did not honor the default port assigned at configure > time. I view this as a bug. > > The attached resolves the issue for all three versions. > > Any objections to me applying this to cvs head? What about 7.3 and 7.4 > stable branches? BTW, a similar change is needed in contrib/contrib-global.mk so that `make installcheck` will work for contrib. New patch attached. Joe Index: contrib/contrib-global.mk =================================================================== RCS file: /cvsroot/pgsql-server/contrib/contrib-global.mk,v retrieving revision 1.5 diff -c -r1.5 contrib-global.mk *** contrib/contrib-global.mk 2 Nov 2002 00:16:21 -0000 1.5 --- contrib/contrib-global.mk 26 Nov 2003 04:42:55 -0000 *************** *** 209,215 **** # against installed postmaster installcheck: submake ! $(top_builddir)/src/test/regress/pg_regress $(REGRESS) # in-tree test doesn't work yet (no way to install my shared library) #check: all submake --- 209,215 ---- # against installed postmaster installcheck: submake ! $(top_builddir)/src/test/regress/pg_regress --port=$(DEF_PGPORT) $(REGRESS) # in-tree test doesn't work yet (no way to install my shared library) #check: all submake Index: src/test/regress/GNUmakefile =================================================================== RCS file: /cvsroot/pgsql-server/src/test/regress/GNUmakefile,v retrieving revision 1.43 diff -c -r1.43 GNUmakefile *** src/test/regress/GNUmakefile 2 Nov 2003 21:56:15 -0000 1.43 --- src/test/regress/GNUmakefile 26 Nov 2003 04:00:38 -0000 *************** *** 122,128 **** $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE)$(MAXCONNOPT) installcheck: all ! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) # old interfaces follow... --- 122,128 ---- $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE)$(MAXCONNOPT) installcheck: all ! $(SHELL) ./pg_regress --port=$(DEF_PGPORT) --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) # old interfaces follow... *************** *** 131,137 **** runtest: installcheck bigtest: ! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) numeric_big bigcheck: $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE)$(MAXCONNOPT) numeric_big --- 131,137 ---- runtest: installcheck bigtest: ! $(SHELL) ./pg_regress --port=$(DEF_PGPORT) --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) numeric_big bigcheck: $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE)$(MAXCONNOPT) numeric_big
Joe Conway <mail@joeconway.com> writes: > I was trying to set up my dev box for multiple simultaneous Postgres > installs (7.3 stable, 7.4 stable, cvs head) and discovered that > `make installcheck` did not honor the default port assigned at configure > time. I view this as a bug. I think there is something wrong with your setup procedures, because I've never needed such. (I've corresponded with Joe off-list about this --- maybe we can produce a FAQ about the right way to do it once the dust settles.) > Any objections to me applying this to cvs head? AFAICS this would defeat the documented behavior of being able to set PGHOST/PGPORT in the environment to control which postmaster "make installcheck" will speak to. So, yeah, I think it's a bad idea. regards, tom lane
Tom Lane wrote: > I think there is something wrong with your setup procedures, because > I've never needed such. (I've corresponded with Joe off-list about > this --- maybe we can produce a FAQ about the right way to do it once > the dust settles.) Yup, got it. > AFAICS this would defeat the documented behavior of being able to set > PGHOST/PGPORT in the environment to control which postmaster "make > installcheck" will speak to. So, yeah, I think it's a bad idea. OK. I'll see about playing with the scripts you sent me. Thanks, Joe
Tom Lane wrote: > I think there is something wrong with your setup procedures, because > I've never needed such. The main problem seemed to be that I had --disable-rpath in my configure script, left over from when I was playing with options used by the RPM spec file. Once I got rid of that, and started using a derivative of Tom's scripts, it all started to work just fine. Now I can do: . pg73 (or pg74 or pg75) cvs up make clean pgconfig make all pgctl stop make install pgctl start make installcheck I've attached the scripts in case anyone is interested. Joe # Source this, eg with ". bin/setvariables", to prepare for Postgres work. # This version is for a debug install. STDPATH=${STDPATH:-$PATH} STDMANPATH=${STDMANPATH:-$MANPATH} PGVER="7.5" PGPORT=55435 PGUSER=postgres PGTAGNAME="pgsql ${PGVER}" PGSRCROOT=/opt/src/pgsql-cvs/pgsql-${PGVER} PGINSTROOT=/usr/local/pgsql-${PGVER} PATH=$PGINSTROOT/bin:$STDPATH MANPATH=$PGINSTROOT/man:$STDMANPATH PGLIB=$PGINSTROOT/lib PGDATA=$PGINSTROOT/data PMOPTIONS="-p ${PGPORT} -i -F" PMLOGFILE=$PGINSTROOT/debugserver.log export PGSRCROOT PGINSTROOT PATH MANPATH PGLIB PGDATA export STDPATH STDMANPATH PGTAGNAME PGPORT PGUSER export PMOPTIONS PMLOGFILE#!/bin/sh . /opt/src/pgsql-cvs/setvariables.74 cd ${PGSRCROOT} #!/bin/sh . /opt/src/pgsql-cvs/setvariables.75 cd ${PGSRCROOT} #! /bin/sh ./configure \ --prefix=${PGINSTROOT} \ --with-pgport=${PGPORT} \ --with-perl \ --with-tcl \ --with-tclconfig=/usr/lib \ --without-tk \ --with-python \ --enable-nls \ --enable-debug \ --enable-cassert \ --enable-depend \ --with-openssl \ --with-pam \ --enable-integer-datetimes \ --with-krb5=/usr/kerberos #! /bin/sh PGCTL="${PGINSTROOT}/bin/pg_ctl" start(){ echo "Starting ${PGTAGNAME}" su -l postgres -s /bin/sh -c "${PGCTL} start -D ${PGDATA} -l ${PMLOGFILE} -o '${PMOPTIONS}'" } stop(){ echo $"Stopping ${PGTAGNAME}" su -l postgres -s /bin/sh -c "${PGCTL} stop -D ${PGDATA} -s -m fast" } restart(){ stop start } reload(){ echo $"Reloading ${PGTAGNAME}" su -l postgres -s /bin/sh -c "${PGCTL} reload -D ${PGDATA} -s" } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload) reload ;; *) echo $"Usage: $0 {start|stop|restart|reload}" exit 1 esac exit 0 # Source this, eg with ". bin/setvariables", to prepare for Postgres work. # This version is for a debug install. STDPATH=${STDPATH:-$PATH} STDMANPATH=${STDMANPATH:-$MANPATH} PGVER="7.3" PGPORT=55433 PGUSER=postgres PGTAGNAME="pgsql ${PGVER}" PGSRCROOT=/opt/src/pgsql-cvs/pgsql-${PGVER} PGINSTROOT=/usr/local/pgsql-${PGVER} PATH=$PGINSTROOT/bin:$STDPATH MANPATH=$PGINSTROOT/man:$STDMANPATH PGLIB=$PGINSTROOT/lib PGDATA=$PGINSTROOT/data PMOPTIONS="-p ${PGPORT} -i -F" PMLOGFILE=$PGINSTROOT/debugserver.log export PGSRCROOT PGINSTROOT PATH MANPATH PGLIB PGDATA export STDPATH STDMANPATH PGTAGNAME PGPORT PGUSER export PMOPTIONS PMLOGFILE # Source this, eg with ". bin/setvariables", to prepare for Postgres work. # This version is for a debug install. STDPATH=${STDPATH:-$PATH} STDMANPATH=${STDMANPATH:-$MANPATH} PGVER="7.4" PGPORT=55434 PGUSER=postgres PGTAGNAME="pgsql ${PGVER}" PGSRCROOT=/opt/src/pgsql-cvs/pgsql-${PGVER} PGINSTROOT=/usr/local/pgsql-${PGVER} PATH=$PGINSTROOT/bin:$STDPATH MANPATH=$PGINSTROOT/man:$STDMANPATH PGLIB=$PGINSTROOT/lib PGDATA=$PGINSTROOT/data PMOPTIONS="-p ${PGPORT} -i -F" PMLOGFILE=$PGINSTROOT/debugserver.log export PGSRCROOT PGINSTROOT PATH MANPATH PGLIB PGDATA export STDPATH STDMANPATH PGTAGNAME PGPORT PGUSER export PMOPTIONS PMLOGFILE#!/bin/sh . /opt/src/pgsql-cvs/setvariables.73 cd ${PGSRCROOT}