ANNOUNCE: Patches for PostgreSQL 6.5.3 on SGI Irix 6.5 - Mailing list pgsql-ports
From | Mark Dalphin |
---|---|
Subject | ANNOUNCE: Patches for PostgreSQL 6.5.3 on SGI Irix 6.5 |
Date | |
Msg-id | 38BDAFE9.52B123E9@amgen.com Whole thread Raw |
Responses |
Re: [PORTS] ANNOUNCE: Patches for PostgreSQL 6.5.3 on SGI Irix 6.5
|
List | pgsql-ports |
Hi, I suppose it is getting a bit late for this, now that postgreSQL 7.0 is in beta, but I have finally gotten all the patches together to make postgreSQL 6.5.3 compile completely on an SGI Irix 6.5. This includes all the interfaces: JDBC, ODBC, libpq++, tcl, pgaccess, PL/pgsql, etc. As it turns out, all the patches are minor. So, here is my patch list: ============================================================================ Patch for PostgreSQL 6.5.3 on SGI Irix 6.5. Submitted by Mark Dalphin, March 1, 2000. Generated by: diff -c -r postgresql-6.5.3/ postgresql-6.5.3.patched/ > irix_6.5.patch ====================================================================== Discussion of PostgreSQL and its interfaces These patches are relatively minor in the overall source tree, but permit everything to compile, including libpq++, odbc, PL/pgsql, and tcl. There are no errors while running the regression tests except for error message words and some date problems in 1947. I can compile and run the libpq++ examples: cd .../src/interfaces/libpq++ gmake examples cd examples ./testlibpq ... I have not tested this material carefully, however. I have not tested the tcl interface, however, pgaccess, which uses it, runs well. I use the perl DBI::DBD on a daily basis without any trouble. The libpq C library is used by these modules and, furthermore, I use it directly as well without any troubles. The ODBC library has been tested a little using the Data Access Builder from IBM's Visual Age for Java. It worked without any trouble after we got things configured at the PC end. No configuration was needed at the Irix end of the connection. The build of the JDBC code caused some trouble since it assumes the use of the GNU bash shell. I ended up building it following the commands in the Makefile, but was unable to get the automated build to work. After the JDBC interface was built, it has worked well for Java 1.1.6. The system is compiled with the native C compiler (/usr/bin/cc; MIPSpro Compilers: Version 7.30; /etc/compiler.defaults = -DEFAULT:abi=n32:isa=mips4:proc=r10k) and the native C++ compiler (/usr/bin/CC). Other packages installed include: flex version 2.5.4 GNU Bison version 1.25 GNU Make version 3.76.1 install (GNU fileutils) 4.0 GNU lib readline, ver 4.0 tcl 8.0, tk 8.0 (this is a local install, not the SGI Freeware) perl 5.005_03 The configure command is: ./configure \ --with-CC=/usr/bin/cc \ --with-CXX=/usr/bin/CC \ --prefix=/usr/local/pgsql \ --with-includes=/usr/local/include \ --with-libraries=/usr/local/lib \ --with-tcl \ --with-tclconfig=/usr/local/lib \ --with-tkconfig=/usr/local/lib \ --with-perl \ --with-odbc A description of the function of each patch is listed just above the patch. ====================================================================== This patch makes it so that PostgreSQL can "find" the DSO (shared libraries) without using the environment variable, LD_LIBRARY_PATH. diff -c -r postgresql-6.5.3/src/Makefile.shlib postgresql-6.5.3.patched/src/Makefile.shlib *** postgresql-6.5.3/src/Makefile.shlib Thu Jul 29 21:13:44 1999 --- postgresql-6.5.3.patched/src/Makefile.shlib Tue Feb 29 11:12:17 2000 *************** *** 120,126 **** ifeq ($(PORTNAME), irix5) install-shlib-dep := install-shlib shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION) ! LDFLAGS_SL := -shared CFLAGS += $(CFLAGS_SL) endif --- 120,126 ---- ifeq ($(PORTNAME), irix5) install-shlib-dep := install-shlib shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION) ! LDFLAGS_SL := -shared -rpath $(LIBDIR) CFLAGS += $(CFLAGS_SL) endif ====================================================================== This patch alters the Makefile options, removing GNU gcc options which choke the SGI C++ compiler. It is only a problem on the examples for libpq++. diff -c -r postgresql-6.5.3/src/interfaces/libpq++/examples/Makefile postgresql-6.5.3.patched/src/interfaces/libpq++/examples/Makefile *** postgresql-6.5.3/src/interfaces/libpq++/examples/Makefile Sat May 22 18:04:04 1999 --- postgresql-6.5.3.patched/src/interfaces/libpq++/examples/Makefile Tue Feb 29 15:56:51 2000 *************** *** 12,18 **** # inevitably get the warning, "abstract declarator used as declaration" # because of our inclusion of c.h and we don't know how to stop that. ! CXXFLAGS= $(CFLAGS) -Wno-error -Wno-unused -Wl,-Bdynamic INCLUDE_OPT= -I$(HEADERDIR) --- 12,19 ---- # inevitably get the warning, "abstract declarator used as declaration" # because of our inclusion of c.h and we don't know how to stop that. ! #CXXFLAGS= $(CFLAGS) -Wno-error -Wno-unused -Wl,-Bdynamic ! CXXFLAGS= $(CFLAGS) INCLUDE_OPT= -I$(HEADERDIR) ====================================================================== The next several patches all "repair" the same problem. The re-declaration of the variable 'i' as an 'int' in the second of two 'for' loops, causes an error for the SGI C++ compiler. It complains that 'i' is already in scope. This is only a problem in the example code. diff -c -r postgresql-6.5.3/src/interfaces/libpq++/examples/testlibpq1.cc postgresql-6.5.3.patched/src/interfaces/libpq++/examples/testlibpq1.cc *** postgresql-6.5.3/src/interfaces/libpq++/examples/testlibpq1.cc Sat May 22 18:04:05 1999 --- postgresql-6.5.3.patched/src/interfaces/libpq++/examples/testlibpq1.cc Tue Feb 29 15:59:03 2000 *************** *** 51,57 **** cout << endl << endl; // next, print out the instances ! for (int i=0; i < data.Tuples(); i++) { for (int j=0; j < nFields; j++) cout << setiosflags(ios::right) << setw(15) << data.GetValue(i,j); cout << endl; --- 51,57 ---- cout << endl << endl; // next, print out the instances ! for (i=0; i < data.Tuples(); i++) { for (int j=0; j < nFields; j++) cout << setiosflags(ios::right) << setw(15) << data.GetValue(i,j); cout << endl; diff -c -r postgresql-6.5.3/src/interfaces/libpq++/examples/testlibpq2.cc postgresql-6.5.3.patched/src/interfaces/libpq++/examples/testlibpq2.cc *** postgresql-6.5.3/src/interfaces/libpq++/examples/testlibpq2.cc Sat May 22 18:04:05 1999 --- postgresql-6.5.3.patched/src/interfaces/libpq++/examples/testlibpq2.cc Tue Feb 29 16:03:50 2000 *************** *** 45,51 **** cout << endl << endl; // next, print out the instances ! for (int i=0; i < data.Tuples(); i++) { for (int j=0; j < nFields; j++) cout << setiosflags(ios::right) << setw(15) << data.GetValue(i,j); cout << endl; --- 45,51 ---- cout << endl << endl; // next, print out the instances ! for ( i=0; i < data.Tuples(); i++) { for (int j=0; j < nFields; j++) cout << setiosflags(ios::right) << setw(15) << data.GetValue(i,j); cout << endl; diff -c -r postgresql-6.5.3/src/interfaces/libpq++/examples/testlibpq3.cc postgresql-6.5.3.patched/src/interfaces/libpq++/examples/testlibpq3.cc *** postgresql-6.5.3/src/interfaces/libpq++/examples/testlibpq3.cc Sat May 22 18:04:06 1999 --- postgresql-6.5.3.patched/src/interfaces/libpq++/examples/testlibpq3.cc Tue Feb 29 16:04:41 2000 *************** *** 48,54 **** cout << endl << endl; // next, print out the instances ! for (int i=0; i < cData.Tuples(); i++) { for (int j=0; j < nFields; j++) cout << setiosflags(ios::right) << setw(15) << cData.GetValue(i,j); cout << endl; --- 48,54 ---- cout << endl << endl; // next, print out the instances ! for ( i=0; i < cData.Tuples(); i++) { for (int j=0; j < nFields; j++) cout << setiosflags(ios::right) << setw(15) << cData.GetValue(i,j); cout << endl; ====================================================================== The next two patches add support for a new C++ concept, 'namespaces', to libpq++. The SGI C++ compiler uses namespaces by default and, while there is a way to turn off support for namespaces (option: -LANG:namespaces=OFF) this seems to mess up support for the Standard Template Library. It was easier to add the 'use namespaces std;' line to the libpq++ include files. diff -c -r postgresql-6.5.3/src/interfaces/libpq++/libpq++.H postgresql-6.5.3.patched/src/interfaces/libpq++/libpq++.H *** postgresql-6.5.3/src/interfaces/libpq++/libpq++.H Sat May 22 18:03:58 1999 --- postgresql-6.5.3.patched/src/interfaces/libpq++/libpq++.H Tue Feb 29 15:40:31 2000 *************** *** 32,37 **** --- 32,38 ---- static char rcsid[] = "$Id: libpq++.H,v 1.4 1999/05/23 01:03:58 momjian Exp $"; + using namespace std; // **************************************************************** // diff -c -r postgresql-6.5.3/src/interfaces/libpq++/pgconnection.h postgresql-6.5.3.patched/src/interfaces/libpq++/pgconnection.h *** postgresql-6.5.3/src/interfaces/libpq++/pgconnection.h Sat May 22 18:04:00 1999 --- postgresql-6.5.3.patched/src/interfaces/libpq++/pgconnection.h Tue Feb 29 15:38:27 2000 *************** *** 27,32 **** --- 27,33 ---- #include "libpq-fe.h" } + using namespace std; // **************************************************************** // ====================================================================== The odbc interface would not compile "out of the box" simply because the libraries were not correctly specified when linking. While the names of the libraries were listed, eg -lpq -lreadline, etc, the additional library locations, eg -L/usr/local/lib, had been lost. This change fixes that problem, though I am not certain that I have followed the correct PostgreSQL Makefile conventions here... diff -c -r postgresql-6.5.3/src/interfaces/odbc/GNUmakefile.in postgresql-6.5.3.patched/src/interfaces/odbc/GNUmakefile.in *** postgresql-6.5.3/src/interfaces/odbc/GNUmakefile.in Wed Jun 30 16:57:29 1999 --- postgresql-6.5.3.patched/src/interfaces/odbc/GNUmakefile.in Tue Feb 29 12:29:13 2000 *************** *** 37,43 **** pgtypes.o psqlodbc.o qresult.o results.o socket.o parse.o statement.o \ gpps.o tuple.o tuplelist.o dlg_specific.o $(OBJX) ! SHLIB_LINK= $(LIBS) # Shared library stuff, also default 'all' target include $(SRCDIR)/Makefile.shlib --- 37,43 ---- pgtypes.o psqlodbc.o qresult.o results.o socket.o parse.o statement.o \ gpps.o tuple.o tuplelist.o dlg_specific.o $(OBJX) ! SHLIB_LINK= $(LD_FLAGS) # Shared library stuff, also default 'all' target include $(SRCDIR)/Makefile.shlib ====================================================================== This patch is for convienence. I hate the large number of error messages which appear when PostgreSQL is built. This patch turns off certain common error messages. Note, this only applies to the SGI cc compiler when using the -n32 switch; the error message numbers change for the -o32 (aka -32) switch. diff -c -r postgresql-6.5.3/src/makefiles/Makefile.irix5 postgresql-6.5.3.patched/src/makefiles/Makefile.irix5 *** postgresql-6.5.3/src/makefiles/Makefile.irix5 Mon Mar 15 07:20:52 1999 --- postgresql-6.5.3.patched/src/makefiles/Makefile.irix5 Tue Feb 29 17:22:14 2000 *************** *** 6,10 **** %.so: %.o $(LD) -G -Bdynamic -shared -o $@ $< ! CFLAGS+= -U_NO_XOPEN4 ! --- 6,10 ---- %.so: %.o $(LD) -G -Bdynamic -shared -o $@ $< ! CFLAGS+= -U_NO_XOPEN4 -woff 1164,1171,1185,1195,1552 -Wl,-woff,15 -Wl,-woff,84 ! LDFLAGS+= -woff 15,84 ====================================================================== End of Irix patch file -- Mark Dalphin email: mdalphin@amgen.com Mail Stop: 29-2-A phone: +1-805-447-4951 (work) One Amgen Center Drive +1-805-375-0680 (home) Thousand Oaks, CA 91320 fax: +1-805-499-9955 (work)
pgsql-ports by date: