Re: Lessons learned on how to build 7.0.2 on AIX 4.x

From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: Richard Sand <rsand(at)vgalleries(dot)com>
Cc: PostgreSQL Development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Lessons learned on how to build 7.0.2 on AIX 4.x
Date: 2000-07-07 19:27:24
Message-ID: Pine.LNX.4.21.0007071920210.587-100000@localhost.localdomain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Richard Sand writes:

> >> ./configure --with-template=aix_gcc

> It hung up on line 1226. I just tested this again and can confirm, it will
> not find gcc unless I explicitly use this switch.

I see. The template matching logic preempts the choice of compiler. We'll
need to ponder a fix for that.

> >> Making postgres.imp
> >> ./backend/port/aix/mkldexport.sh postgres /usr/local/bin > postgres.imp
> nm: postgres: 0654-200 Cannot open the specified file.
> >> nm: A file or directory in the path name does not exist.

> So its got to be a simple bug in the makefile for ./src that works
> when you build postgres.imp in another directory.

Let's see: The rule that invokes this is

src/backend/Makefile:

all: postgres $(POSTGRES_IMP) ...

The commands are in src/makefiles/Makefile.aix:

$(POSTGRES_IMP):
@echo Making $@
$(MKLDEXPORT) postgres $(BINDIR) > $@
$(CC) -Wl,-bE:$(SRCDIR)/backend/$@ -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)

Now the error message seems to imply that it can't find the `postgres'
executable, but the postgres executable should exist before this rule
runs. Now you seems to be saying that you have to moving postgres.imp to
the src/ directory corrected this problem, but sorry, this doesn't make
sense to me. :-( You could maybe help rebuilding completely from scratch
and showing the complete make output so we can see what is being invoked
in what order.

> BUT, since I do have g++ installed and working, why can't the C++ code
> be built in the first place?

C++ is so wonderfully incompatible to itself, and the libpq++ interface is
not used so much that few people bother fixing it. Be our guest.

> gmake[2]: Entering directory `/usr/src/postgresql-7.0.2/src/pl/plpgsql'
> gmake -C src all
> gmake[3]: Entering directory `/usr/src/postgresql-7.0.2/src/pl/plpgsql/src'
> ../../../backend/port/aix/mkldexport.sh libplpgsql.a /usr/local/pgsql/lib >
> libp
> lpgsql.exp
> ld -H512 -bM:SRE -bI:../../../backend/postgres.imp -bE:libplpgsql.exp -o
> libplpg
> sql.so libplpgsql.a -lPW -lcrypt -lld -lnsl -ldl -lm -lcurses -lc
> ld: 0711-327 WARNING: Entry point not found: __start
> ld: 0711-317 ERROR: Undefined symbol: CurrentMemoryContext
> ld: 0711-317 ERROR: Undefined symbol: .MemoryContextAlloc
> ld: 0711-317 ERROR: Undefined symbol: .MemoryContextFree
[more of that]

Well, yes, these symbols are undefined within plpgsql. They are supposed
to be resolved when you load plpgsql into the server at runtime. Now I am
venturing a guess here that this postgres.imp file is supposed to contain
a list of symbols that are defined by the postmaster and that the
dynamically loadable modules such as plpgsql should not worry about, but
as we saw, this file is not being created correctly. (Perhaps you should
try to move it back to src/backend for the purposes of building plpgsql.
That would at least give it a chance of finding the file.)

--
Peter Eisentraut Sernanders väg 10:115
peter_e(at)gmx(dot)net 75262 Uppsala
http://yi.org/peter-e/ Sweden

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Darren King 2000-07-07 19:42:30 RE: Lessons learned on how to build 7.0.2 on AIX 4.x
Previous Message Peter Eisentraut 2000-07-07 19:27:19 Re: fcntl(SETLK) [was Re: 2nd update on TOAST]