Building PgSQL 7.4.2 on SGI Irix 6.19

Поиск
Список
Период
Сортировка
От David Turover
Тема Building PgSQL 7.4.2 on SGI Irix 6.19
Дата
Msg-id Pine.LNX.4.44.0403301115080.953-100000@student.santarosa.edu
обсуждение исходный текст
Список pgsql-ports
note: gmake check had a few out-of-order errors like this:
*** 1732,1739 ****
       | 6 | 6 | six   |
       | 7 | 7 | seven |
       | 8 | 8 | eight |
-      |   |   | null  |
       |   | 0 | zero  |
  (13 rows)
--- 1732,1739 ----
       | 6 | 6 | six   |
       | 7 | 7 | seven |
       | 8 | 8 | eight |
       |   | 0 | zero  |
+      |   |   | null  |
  (13 rows)

I'm not sure how serious a problem this is.
My configure&etc patches are at the end of this message.

----------------

Installing PostGreSQL 7.4.2 on SGI Irix 6.19

Summary:
    (install dependencies)
    cp *.patch postgresql-7.4.2
    cd postgresql-7.4.2
    patch -p1 < _pg_config_programs_m4.patch
    autoconf
    export PATH=/usr/freeware/bin:$PATH
    ./configure --with-whatever
    gmake
    gmake check


Patches: Copy the patches you want (READ THE DESCRIPTIONS!)
to the postgres source directory, install them and run autoconf
to generate a new configure script:

    patch -p1 < patchname.patch
    autoconf

 1) The configure.in patch just squelches a bunch of warnings
 in the config.log. It's not necessary unless you think
 you'll run into errors you'll need to debug.

 2) The config/programs.m4 patch adds -lcurses to the command line.
 If you don't use it, you'll get undefined symbol errors
 trying to compile with readline support.

 3) The template/irix5 patch adds the commands to turn on threading.
 It is untested! Don't expect your server to work if you use this.



Generic problems: Using zsh 3.0.8, configure will often quit
at a random point in the middle of running, claiming it received
a sigint. This is probably a bug in zsh. Try opening a new shell
and re-running configure from there.



Readline support: SGI Freeware's readline 4.3 package installs
the libraries to the wrong directory. You will need to move
the N32 (mips-3) readline libs from /usr/lib to /usr/lib32
or else the linker won't detect -lreadline. Use the file command
to see what ABI the libraries are using.

You will also need the programs.m4 patch to add -lcurses to the
gcc command line, or else you will get errors like this:
 189218:./conftest: rld: Error: unresolvable symbol
 in /usr/lib32/libreadline.so.4: tgetent




Java support: You'll need to install Java and ant and ant's dependencies,
which is a difficult and sparsely documented task in itself. SGI has
a java inst package available for download, or you can grab the latest
version from Sun. As for ant's dependencies, I just grabbed everything
on Apache's website since the docs say ant needs just about all of them,
sorted it all into one directory except for a few packages that were
obviously standalone and unnecessary, moved this mess into java2
so I don't have to deal with setting classpath to two dozen different
directories, set all the java PACKAGE_HOME variables to $JAVA_HOME,
and prayed. It survives configure, but is otherwise not tested.

Notes on java support:
    1) (important): Make sure that ant.jar is the full one from
    the ant package, not a stripped-down version from one of its
    dependencies which depends upon ant. You need the real thing,
    otherwise you will get java.lang.InstantiationException:
    org.apache.tools.ant.Main

    2) Ant takes upwards of a minute just to load itself.
    As far as I can tell, this is normal behaviour.
    configure may /seem/ hung on ant, but just be patient.



Perl support: Irix has two versions of Perl. SGI uses perl 5.0
in the main tree, but the newer 5.6.1 is available from freeware.
Perl 5.0's libs do not define EXTERN_C, causing gmake to break
in src/pl/plperl/plperl.c. 5.6.1 has EXTERN_C defined, but 5.6.1's
Dynaloader.a breaks on "./ldtmpa01Ns3/DynaLoader.a(DynaLoader.o).B":
Error: Invalid format revision (WHIRL::0.31:) for intermediate compiler file

Temporary Solution 1 (using perl 5.0):
    1: export CFLAGS="-DEXTERN_C=extern $CFLAGS"

Temporary solution 2 (using perl 5.6.1) (theoretical, haven't tried):
    1: Rebuild perl 5.6.1 from source, without -IPA
    2: Copy over the Dynaloader.a
    3: Put /usr/freeware/bin before /usr/sbin in path
    and export it before running configure. Easiest way,
    in zsh: export PATH=/usr/freeware/bin:$PATH
    4: Add to your configure command:
    --with-libraries=/usr/freeware/lib/perl5/5.6.1/irix-n32/CORE/libperl.so
    --with-includes=/usr/freeware/lib/perl5/5.6.1/CORE



Python support: As long as the freeware python packages do not install
shared libraries, you cannot get python support without compiling
python yourself. I haven't tried this, so I'm not sure if it will work.



GNU Tar support:

Irix uses an old, b0rked version of tar which breaks on long pathnames.
If you have GNU Tar installed, you need to put /usr/freeware/bin
at the front of your path before running configure. I don't know
when or where Postgres uses tar, but it's in the Makefile.global file,
so it's worth mentioning.



XML Support:

First, install libxml2 from freeware. Then in contrib/xml/Makefile:
CFLAGS := -I/usr/freeware/include/libxml2 -L/usr/freeware/lib32
gmake, su, gmake install.

where "test" is the name of your database:
psql -f ~pgsql/share/contrib/pgxml_dom.sql test



PostGIS Support (as of .8.1):

Find and install Geos and Proj from source. Find and untar PostGIS source
in contrib. In Makefile, set USE_PROJ=1 and USE_GEOS=1 if they aren't already.

*important!* manually run, since the makefile doesn't catch this:
gcc -c postgis_geos_wrapper.cpp -I/usr/local/include/geos

gmake, su, gmake install.

where "test" is the name of your database:
~pgsql/bin/createlang plpgsql test
psql -f ~pgsql/share/contrib/postgis.sql -d test
psql -f ~pgsql/share/contrib/spatial_ref_sys.sql -d test


PostGIS JDBC:

Add your postgres installation's share/java directory to $CLASSPATH,
or add the files therein to an existing $CLASSPATH directory.
Find your postgres's share/java/postgis.jar file and unzip it.
cd contrib/postgis/jdbc. Edit Makefile, change $CLASSPATH
to the location of the unzipped jar file plus the current directory:
On my system, this is: CLASSPATH = /usr/java2/lib:.

in jdbc/examples/TestServer.java, find these lines:
((org.postgresql.Connection)conn).addDataType("geometry","org.postgis.PGgeometry");
((org.postgresql.Connection)conn).addDataType("box3d","org.postgis.PGbox3d");
and replace them with:
((org.postgresql.PGConnection)conn).addDataType("geometry","org.postgis.PGgeometry");
((org.postgresql.PGConnection)conn).addDataType("box3d","org.postgis.PGbox3d");

then find these lines:
               String dbname = "tb";
               String dbuser = "dblasby";
               String dbpass = "";
               String dbhost = "ox";
               String dbport = "5555";
And replace this with the correct information to your server.
Make sure that you have created a test database and a user for this,
that you are using the correct port (usually 5432, not 5555),
that postmaster is running with -i to allow TCP connections,
and that your host-based authentication (data/pg_hba.conf) is set
to allow connections from your system.

gmake, gmake test, gmake jtest

You'll have to install postgis-jdbc manually by copying it to your $CLASSPATH:
cd org, su, cp -R postgis /usr/java2/lib/org





-------------
Appendix 1: dmt's configure script (It compiles, ship it):
./configure --with-ssl=/usr/freeware/lib/openssl --enable-thread-safety    \
--enable-integer-datetimes --enable-debug --enable-depend --enable-cassert \
--with-tcl --with-perl --with-java  \
--with-tclconfig=/usr/freeware/lib --with-tkconfig=/usr/freeware/lib


-------------
Appendix 2: dmt's patches to PostgreSQL 7.4.2

--- a/config/programs.m4      Tue Mar 16 08:04:54 2004
+++ b/config/programs.m4        Thu Mar 11 11:11:02 2004
@@ -87,9 +87,9 @@
     pgac_save_LIBS=$LIBS
     LIBS="${pgac_rllib}${pgac_lib} $LIBS"
     AC_TRY_LINK_FUNC([readline], [[
-      # NetBSD and OpenBSD have a broken linker that does not
+      # Irix, NetBSD, and OpenBSD have a broken linker that does not
       # recognize dependent libraries
-      case $host_os in netbsd* | openbsd* )
+      case $host_os in netbsd* | openbsd* | irix* )
         case $pgac_lib in
           *curses*) ;;
           *) pgac_lib=" -lcurses" ;;
--- a/configure.in      Thu Mar 11 08:42:19 2004
+++ b/configure.in      Thu Mar 18 09:04:46 2004
@@ -651,11 +651,21 @@
 then
        AC_CHECK_LIB(bsd,      main)
 fi
+# Irix has nsl, socket, gen, and sun in its libc, but also
+# keeps separate libs around for backwords compatibility.
+# Using them creates warnings in config.log. This test quiets that.
+# See also: http://freeware.sgi.com/howto.html
+# Also consider changing the portname, since I'm doing this on irix 6.19
+if test "$PORTNAME" != "irix5"
+then
+AC_CHECK_LIB(nsl,      main)
+AC_CHECK_LIB(socket,   main)
+AC_CHECK_LIB(gen,      main)
+fi
+
 AC_CHECK_LIB(util,     setproctitle)
 AC_CHECK_LIB(m,        main)
 AC_CHECK_LIB(dl,       main)
-AC_CHECK_LIB(nsl,      main)
-AC_CHECK_LIB(socket,   main)
 AC_CHECK_LIB(ipc,      main)
 AC_CHECK_LIB(IPC,      main)
 AC_CHECK_LIB(lc,       main)
@@ -663,7 +673,6 @@
 AC_CHECK_LIB(ld,       main)
 AC_CHECK_LIB(compat,   main)
 AC_CHECK_LIB(BSD,      main)
-AC_CHECK_LIB(gen,      main)
 AC_CHECK_LIB(PW,       main)
 AC_CHECK_LIB(resolv,   main)
 AC_SEARCH_LIBS(getopt_long, [getopt gnugetopt])
--- a/src/template/irix5        Thu Mar 18 09:06:08 2004
+++ b/src/template/irix5        Tue Mar 16 10:49:22 2004
@@ -0,0 +1,3 @@
+THREAD_SUPPORT=yes
+NEED_REENTRANT_FUNCS=yes
+THREAD_LIBS="-lpthread"


-------------
Appendix 3: dmt's patches to PostGIS 0.8.1
--- a/jdbc/examples/TestServer.java     Fri Apr 19 08:14:17 2002
+++ b/jdbc/examples/TestServer.java     Thu Mar 25 10:55:00 2004
@@ -32,8 +32,8 @@
            String url = "jdbc:postgresql://" + dbhost + ":" + dbport + "/" + dbname;
            conn = DriverManager.getConnection(url, dbuser, dbpass);
            System.out.println("Adding geometric type entries...");
-            ((org.postgresql.Connection)conn).addDataType("geometry","org.postgis.PGgeometry");
-            ((org.postgresql.Connection)conn).addDataType("box3d","org.postgis.PGbox3d");
+            ((org.postgresql.PGConnection)conn).addDataType("geometry","org.postgis.PGgeometry");
+            ((org.postgresql.PGConnection)conn).addDataType("box3d","org.postgis.PGbox3d");
            Statement s = conn.createStatement();
            System.out.println("Creating table with geometric types...");
            //table might not yet exist


В списке pgsql-ports по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Buggy make files for Solaris 9 64bit builds: version 7.4.1 and 7.4.2
Следующее
От: Jose' Cruanyes
Дата:
Сообщение: invalid input syntax for type tid: "(,)"