Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

FAQ_Irix

Blame
  • FAQ_Irix 13.49 KiB
    <PRE>
    ======================================================
    Frequently Asked Questions (FAQ) for PostgreSQL >=V6.1
    IRIX Specific
    TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
    ======================================================
    last updated:           Mon Dec 04 10:20:00 GMT 1997
    
    current maintainer:     Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
    original author:        Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
    
    
    Changes in this version (* = modified, + = new, - = removed):
    +1.9)   Why does IRIX5 lex fail with PostgreSQL 6.2.1?
    
    This file is divided approximately as follows:
    1.*)    Installing PostgreSQL
    2.*)    Uninstalling PostgreSQL
    3.*)    Extending PostgreSQL
    
    
    Questions answered:
    1.1)    What extra items do I need to install PostgreSQL under Irix?
    1.2)    What changes do I need to make to src/Makefile.global?
    1.3)    What are the references in X11_LIB to libsocket and libnsl in
            src/Makefile.global?
    1.4)    Are there any other changes I should make?
    1.5)    Can I install PostgreSQL under Irix 6.x?
    1.6)    The make fails with the following message:
            ld32: ERROR 4: Conflicting flag setting: -call_shared
    1.7)    Why won't it link? (Problems with lorder)
    1.8)    I have major problems with IRIX 6!
    1.9)    Why does lex fail with PostgreSQL 6.2.1?
    2.1)    Why can't I move the executable files?
    3.1)    How do I compile a C program to create a function for extending
            PostgreSQL
    
    ----------------------------------------------------------------------
    Section 1:      Installing PostgreSQL
    ----------------------------------------------------------------------
    
    1.1)    What extra items do I need to install PostgreSQL under Irix?
    
            You *must* have the following installed:
            a) Gnu make (installed as gmake)
    
            You are recommended to install the following:
            a) GNU install (installed as ginstall)
               (This is part of the GNU fileutils package)
    
            You may choose to install the following:
            a) GNU readline library (if you wish psql to have readline
               support).
            b) tcl/tk (if you wish to compile pgtclsh)
    
    1.2)    What changes do I need to make to src/Makefile.global or
            src/Makefile.custom?
    
            The easiest way to do this is to use the customize script in
            the src directory.
    
            You *must* set the following variables:
                    PORTNAME=       irix5
    
            You will also need to change the following to match your own
            installation:
                    POSTGRESDIR
    
            If you switch on the USE_TCL option, you will need to set these:
                    TCL_INCDIR= 
                    TCL_LIBDIR= 
                    TCL_LIB = 
                    TK_INCDIR=
                    TK_LIBDIR=
                    TK_LIB =
    
            You may also make any other changes you need as documented in
            the INSTALL file and in Makefile.global
    
    1.3)    What are the references in X11_LIB to libsocket and libnsl in
            src/Makefile.global?
    
            This was a problem in 1.08 (they are Sun Solaris specific). 
            It is fixed in 1.09 and above.
    
    1.4)    Are there any other changes I should make?
    
            If you have installed the GNU install program (ginstall), you
            should add the following line to src/Makefile.custom:
                    CUSTOM_INSTALL=ginstall
    
            For an explanation as to why this is a good idea, see Question 2.1
            Ginstall is part of the GNU fileutils package.
    
    
    1.5)    Can I install PostgreSQL under Irix 6.x?
    
            Irix 6.2-6.4 has a bug in ld which mishandles the addresses of
            static procedures when object files are assembled into
            larger object files using 'ld -r'. This bug has been reported
            to Silicon Graphics. 
    
            One option is to use the Gnu version of ld. Alternatively,
            the following patch should be applied as a workaround. 
            (Supplied by Bob Bruccoleri <bruc@bms.com>)
    
    *** ./backend/Makefile.orig     Thu May 22 00:00:15 1997
    --- ./backend/Makefile  Thu Jun  5 16:47:27 1997
    ***************
    *** 54,60 ****
      all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
      
      postgres: $(OBJS) ../utils/version.o
    !       $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
      
      $(OBJS): $(DIRS:%=%.dir)
      
    --- 54,64 ----
      all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
      
      postgres: $(OBJS) ../utils/version.o
    ! #     $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
    !       -rm -f *.o
    !       find . -name "*.o" -exec cp \{\} . \;
    !       rm -f SUBSYS.o
    !       $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS)
      
      $(OBJS): $(DIRS:%=%.dir)
    
    
    
    
    1.6)    The make fails with the following message:
            ld32: ERROR 4: Conflicting flag setting: -call_shared
    
            If gmake fails in .../src/backend while building obj/ACCESS.o
            with a message from ld32, you can work around this by using
            ld for the LD environment variable rather than cc.
    
            The problem has been observed under Irix 5.3 when compiling both
            Postgres95-1.09 and PostgreSQL-6.2Beta6, but on some systems
            these appear to compile with no such problems.
    
            Fix supplied by Brian Sanders (bsanders@netcom.com,
            brian@fresnelsoft.com)
    
    
    1.7)    Why won't it link? (Problems with lorder)
    
            According to the IRIX man pages, lorder is useless, but harmless
            under IRIX. However, it has caused problems for some people
            using both IRIX 6.2.
    
            The solution is to add the following line to 
            .../src/makefiles/Makefile.irix5
    
            MK_NO_LORDER=true
    
    
    1.8)    I have major problems with IRIX 6!
    
            The following is quoted directly from Bob Bruccoleri <bruc@bms.com>
    
    There is a really nasty loader bug in the compiler system (7.1)
    on Irix 6.x, and the error that Lasse Petersen is the result of it.
    Here is the original message. I don't know if all the changes have been
    folded into the current release.
    
    Date: Fri, 06 Jun 1997 17:12:20 -0400 (EDT)
    From: bruc@bms.com (Robert Bruccoleri)
    Subject: [PORTS] Patches for Irix 6.4
    
    I have worked out how to compile PostgreSQL on Irix 6.4 using the -n32 compiler
    mode and version 7.1 of the C compiler. (The n32 compiler use 32 bits addressing,
    but allows access to all the instructions in the MIPS4 instruction set.)
    There were several problems:
    
    1) The ld command is not referenced as a macro in all the Makefiles. On
    this platform, you have to include -n32 on all the ld commands. Makefiles
    were changed as needed.
    
    2) There is a bug in "ld" which mishandles the addresses of static procedures
    when object files are assembled into larger object files using "ld -r".
    Because of this, I put a hack into src/backend/Makefile to avoid all the
    SUBSYS.o files and just link all the objects. I have contacted SGI about the
    problem, and hopefully, it will be fixed in the near future.
    
    3) Lots of warnings are generated from the compiler. Since the regression
    tests worked OK, I didn't attempt to fix them. If anyone wants the compilation
    log, please let me know, and I'll email it to you.
    
    The version of postgresql was 970602. Here is Makefile.custom:
    
    CUSTOM_COPT = -O2 -n32
    MK_NO_LORDER = 1
    LD = ld -n32
    CC += -n32
    
    Here are the patches:
    
    *** ./backend/access/Makefile.orig      Sun Nov 10 00:00:15 1996
    - --- ./backend/access/Makefile Tue Jun  3 10:22:32 1997
    ***************
    *** 8,13 ****
    - --- 8,16 ----
      #
      #-------------------------------------------------------------------------
    
    + SRCDIR = ../..
    + include ../../Makefile.global
    +
      OBJS = common/SUBSYS.o gist/SUBSYS.o hash/SUBSYS.o heap/SUBSYS.o \
             index/SUBSYS.o rtree/SUBSYS.o nbtree/SUBSYS.o transam/SUBSYS.o
    
    
    *** ./backend/bootstrap/Makefile.orig   Fri Apr 18 06:00:23 1997
    - --- ./backend/bootstrap/Makefile      Tue Jun  3 10:23:59 1997
    ***************
    *** 38,44 ****
      all: SUBSYS.o
    
      SUBSYS.o: $(OBJS)
    !       ld -r -o SUBSYS.o $(OBJS)
    
      # bootstrap.o's dependency on bootstrap_tokens.h is computed by the
      # make depend, but we state it here explicitly anyway because
    - --- 38,44 ----
      all: SUBSYS.o
    
      SUBSYS.o: $(OBJS)
    !       $(LD) -r -o SUBSYS.o $(OBJS)
    
      # bootstrap.o's dependency on bootstrap_tokens.h is computed by the
      # make depend, but we state it here explicitly anyway because
    
    *** ./backend/Makefile.orig     Thu May 22 00:00:15 1997
    - --- ./backend/Makefile        Thu Jun  5 16:47:27 1997
    ***************
    *** 54,60 ****
      all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
    
      postgres: $(OBJS) ../utils/version.o
    !       $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
    
      $(OBJS): $(DIRS:%=%.dir)
    
    - --- 54,64 ----
      all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
    
      postgres: $(OBJS) ../utils/version.o
    ! #     $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
    !       -rm -f *.o
    !       find . -name "*.o" -exec cp \{\} . \;
    !       rm -f SUBSYS.o
    !       $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS)
    
      $(OBJS): $(DIRS:%=%.dir)
    
    ***************
    *** 116,122 ****
      install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h\
               global1.bki.source local1_template1.bki.source \
               libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample
    !
            $(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres
      ifeq ($(MAKE_EXPORTS), true)
            $(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP)
    - --- 120,126 ----
      install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h\
               global1.bki.source local1_template1.bki.source \
               libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample
    !
            $(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres
      ifeq ($(MAKE_EXPORTS), true)
            $(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP)
    
    *** ./backend/optimizer/Makefile.orig   Wed Feb 19 12:00:34 1997
    - --- ./backend/optimizer/Makefile      Tue Jun  3 10:39:47 1997
    ***************
    *** 8,13 ****
    - --- 8,16 ----
      #
      #-------------------------------------------------------------------------
    
    + SRCDIR= ../..
    + include ../../Makefile.global
    +
      all: submake SUBSYS.o
    
      OBJS = path/SUBSYS.o plan/SUBSYS.o prep/SUBSYS.o util/SUBSYS.o geqo/SUBSYS.o
    
    *** ./backend/libpq/pqcomprim.c.orig    Mon May 26 00:00:23 1997
    - --- ./backend/libpq/pqcomprim.c       Fri Jun  6 16:02:24 1997
    ***************
    *** 32,40 ****
      #    define hton_l(n) (ntoh_l(n))
      #  else       /* BYTE_ORDER != BIG_ENDIAN */
      #    if BYTE_ORDER == PDP_ENDIAN
    ! #      #error PDP_ENDIAN macros not written yet
      #    else     /* BYTE_ORDER !=  anything known */
    ! #      #error BYTE_ORDER not defined as anything understood
      #    endif    /* BYTE_ORDER == PDP_ENDIAN */
      #  endif      /* BYTE_ORDER == BIG_ENDIAN */
      #endif                /* BYTE_ORDER == LITTLE_ENDIAN */
    - --- 32,40 ----
      #    define hton_l(n) (ntoh_l(n))
      #  else       /* BYTE_ORDER != BIG_ENDIAN */
      #    if BYTE_ORDER == PDP_ENDIAN
    ! #      error PDP_ENDIAN macros not written yet
      #    else     /* BYTE_ORDER !=  anything known */
    ! #      error BYTE_ORDER not defined as anything understood
      #    endif    /* BYTE_ORDER == PDP_ENDIAN */
      #  endif      /* BYTE_ORDER == BIG_ENDIAN */
      #endif                /* BYTE_ORDER == LITTLE_ENDIAN */
    
    *** ./backend/storage/Makefile.orig     Sun Nov 10 00:01:06 1996
    - --- ./backend/storage/Makefile        Tue Jun  3 10:41:29 1997
    ***************
    *** 8,13 ****
    - --- 8,16 ----
      #
      #-------------------------------------------------------------------------
    
    + SRCDIR= ../..
    + include ../../Makefile.global
    +
      all: submake SUBSYS.o
    
      OBJS = buffer/SUBSYS.o file/SUBSYS.o ipc/SUBSYS.o large_object/SUBSYS.o \
    
    
    
    
    1.9)    Why does lex fail with PostgreSQL 6.2.1?
    
            IRIX 5.3 lex has been reported to fail in 
            postgresql-6.2.1/src/backend/parser with the error:
    
            lex scan.l
            "scan.l":line 86: Error: Invalid request %x xc
            gmake[2]: *** [scan.c] Error 1
    
            The answer is to use GNU flex 2.5.4 or later. Use the command
               flex --version
            to check you have a new enough version of flex
    
    
    ----------------------------------------------------------------------
    Section 2:      Deinstalling PostgreSQL
    ----------------------------------------------------------------------
    
    2.1)    Why can't I move the executable files?
    
            By default, the IRIX port uses the BSD compatible version of
            install from /usr/bin/X11. If you read the man page for this
            version of install, you will see that it is not meant for
            end-user use; it has the interesting side-effect of chowning
            files it installs to root.
    
            You should still be able to delete the files as you (the
            postgres user) will own the directory in which they are
            stored.
    
            The normal IRIX install program cannot be used easily as it
            takes its arguments in the reverse order. It is therefore
            recommended to use the GNU version of install (ginstall).
            See Question 1.4
    
    
    ----------------------------------------------------------------------
    Section 3:      Extending PostgreSQL
    ----------------------------------------------------------------------
    3.1)    How do I compile a C program to create a function for extending
            PostgreSQL
    
            Here is a sample command line:
    
            cc -I/usr/local/PostgreSQL/include/ -I/usr/local/PostgreSQL/src/backend 
                    -shared -o funcs.so funcs.c
    
    
    ----------------------------------------------------------------------------
    Dr. Andrew C.R. Martin                             University College London
    EMAIL: (Work) martin@biochem.ucl.ac.uk    (Home) andrew@stagleys.demon.co.uk
    URL:   http://www.biochem.ucl.ac.uk/~martin
    Tel:   (Work) +44(0)171 419 3890                    (Home) +44(0)1372 275775
    </PRE>