Thread: Re: Make-Problem Postgres on Cygwin

Re: Make-Problem Postgres on Cygwin

From
Jason Tishler
Date:
Manuel,

Please post instead of sending private email.  However, your timing is
impeccable.  I just got around (yesterday) to building PostgreSQL under
the latest Cygwin gcc2 and gcc packages.

On Fri, Nov 22, 2002 at 01:23:48PM +0100, Tarabas wrote:
> I read your thread abut problems installing Postgresql on Cygwin as
> source-distribution. I got exactly the same problems with that!
>
> Before you ask:
> I HAVE TO use the source-build because I need to patch the maximum arguments
> for a function on postgresql for my application, so installing binary is not
> an option!
>
> I first got the Problem that the IPC-lib was not found in the configure
> which was solved by configuring with
>
> $ LDFLAGS=-L/usr/local/lib ./configure
> instead of the simple "./configure" ...
>
> Also the IPC-Daemon is installed an running! (ps -aef|grep ipc show's it!)
>
> Now i get an error when calling the make:
>
> <-snip->
> make[4]: Entering directory '/postgresql-7.2.3/src/backend/storage/ipc'
> gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../../src/include -I/usr/local/include
-DBUILDING_DLL=1-c -o -ipc.o ipc.c 
> cc1: warning: changing search order for system directory "/usr/local/include"
> cc1: warning: as it has already been specified as a non-system-directory

The "-I/usr/local/include" is causing configure to get confused and
mis-configure PostgreSQL which causes the following (and other)
problems:

> ipc.c: In function 'InternalIpcSemaphoreCreate':
> ipc.c:271: warning: implicit declaration of function `semget'
> ipc.c:271: `IPC_CREAT' undeclared (first use in this function)
> ipc.c:271: (Each undeclared identifier is reported only once
> ipc.c:271: for each function it appears in.)
> <-snip->
>
> any ideas how to fix that ?!

Yes.

To build PostgreSQL 7.2.3 under gcc2, use the following procedure:

    1. apply attached postgresql-7.2.3-gcc2.patch
       $ patch -p1 <postgresql-7.2.3-gcc2.patch

    2. define CC and LDFLAGS as appropriate on configure command line:
       $ CC=gcc-2 LDFLAGS=-L/usr/local/lib configure ...

To build PostgreSQL 7.2.3 under gcc (i.e gcc 3.2), use the following
procedure:

    1. apply attached postgresql-7.2.3-gcc3.patch
       $ patch -p1 <postgresql-7.2.3-gcc3.patch

    2. define LDFLAGS as appropriate on configure command line:
       $ LDFLAGS=-L/usr/local/lib configure ...

Note:

    1. PostgreSQL CVS (i.e., 7.3) builds OOTB under Cygwin CVS (i.e.,
       1.3.16) and Perl 5.8.0.
    2. PostgreSQL 7.2.3's plperl fails to build (against Perl 5.6.1)
       with either the latest gcc2 or gcc.  I do not intend to track
       this issue down.

Jason

--
PGP/GPG Key: http://www.tishler.net/jason/pubkey.asc or key servers
Fingerprint: 7A73 1405 7F2B E669 C19D  8784 1AFD E4CC ECF4 8EF6

Attachment

Re: Make-Problem Postgres on Cygwin

From
"Norman Vine"
Date:
Jason Tishler writes:
>
> Please post instead of sending private email.  However, your timing is
> impeccable.  I just got around (yesterday) to building PostgreSQL under
> the latest Cygwin gcc2 and gcc packages.

< snip >

> To build PostgreSQL 7.2.3 under gcc (i.e gcc 3.2), use the following
> procedure:
>
>     1. apply attached postgresql-7.2.3-gcc3.patch
>        $ patch -p1 <postgresql-7.2.3-gcc3.patch
>
>     2. define LDFLAGS as appropriate on configure command line:
>        $ LDFLAGS=-L/usr/local/lib configure ...


Ahhh... Thanks this patch gets me a lot further building my extension but ...

I still am getting a couple of undefined references

dlltool --export-all --output-def postgis.def postgis_debug.o postgis_ops.o postgis_fn.o postgis_inout.o postgis_proj.o
postgis_chip.o postgis_transform.o postgis_gist_72.o postgis_estimate.o
dllwrap -o postgis.dll --dllname postgis.dll --def postgis.def postgis_debug.o postgis_ops.o postgis_fn.o
postgis_inout.o
postgis_proj.o postgis_chip.o postgis_transform.o postgis_gist_72.o postgis_estimate.o
./../src/utils/dllinit.o  -L../../src/backend -lpostgres -L/usr/local/lib -lcygipc -lcrypt -L/usr/local/lib
-L/usr/local/lib-L/usr/ 
local/lib -L/usr/local/lib -lproj

fu000019.o(.idata$3+0xc): undefined reference to `_libpostgres_a_iname'
nmth000018.o(.idata$4+0x0): undefined reference to `__nm__cpu_index_tuple_cost'

$ gcc --version
gcc (GCC) 3.2 20020927 (prerelease).

$ ld --version
GNU ld version 2.13.90 20021118

a nm dump of libpostgres.a yields

dt.o:
00000000 b .bss
00000000 d .data
00000000 i .idata$4
00000000 i .idata$5
00000000 i .idata$7
00000000 t .text
00000000 I __libpostgres_a_iname


ds01498.o:
00000000 b .bss
00000000 d .data
00000000 i .idata$4
00000000 i .idata$5
00000000 i .idata$6
00000000 i .idata$7
00000000 t .text
         U __head_libpostgres_a
00000000 I __imp__cpu_index_tuple_cost

but no reference to  'fu000019.o'  or 'nmth000018.o'
which are where the complaints are apparently originating

Anyone got any ideas ??

Norman


Re: Make-Problem Postgres on Cygwin

From
Jason Tishler
Date:
Norman,

On Fri, Nov 22, 2002 at 11:39:55AM -0500, Norman Vine wrote:
> I still am getting a couple of undefined references
>
> dlltool --export-all --output-def postgis.def postgis_debug.o postgis_ops.o postgis_fn.o postgis_inout.o
postgis_proj.o
> postgis_chip.o postgis_transform.o postgis_gist_72.o postgis_estimate.o
> dllwrap -o postgis.dll --dllname postgis.dll --def postgis.def postgis_debug.o postgis_ops.o postgis_fn.o
postgis_inout.o
> postgis_proj.o postgis_chip.o postgis_transform.o postgis_gist_72.o postgis_estimate.o
> ./../src/utils/dllinit.o  -L../../src/backend -lpostgres -L/usr/local/lib -lcygipc -lcrypt -L/usr/local/lib
-L/usr/local/lib-L/usr/ 
> local/lib -L/usr/local/lib -lproj
>
> fu000019.o(.idata$3+0xc): undefined reference to `_libpostgres_a_iname'

Sorry, I'm not sure what to do about the above.

> nmth000018.o(.idata$4+0x0): undefined reference to `__nm__cpu_index_tuple_cost'

I believe that adding a DLLIMPORT to src/include/optimizer/cost.h:

    extern DLLIMPORT double cpu_index_tuple_cost;

should fix this one.

> a nm dump of libpostgres.a yields
>
> [snip]
>
> but no reference to  'fu000019.o'  or 'nmth000018.o'
> which are where the complaints are apparently originating

BTW, the fu000019.o and nmth000018.o are from "dllwrap -o postgis.dll..."
not from libpostgres.a.

Jason

--
PGP/GPG Key: http://www.tishler.net/jason/pubkey.asc or key servers
Fingerprint: 7A73 1405 7F2B E669 C19D  8784 1AFD E4CC ECF4 8EF6

Re: Make-Problem Postgres on Cygwin

From
"Norman Vine"
Date:
Jason Tishler writes:
>
> On Fri, Nov 22, 2002 at 11:39:55AM -0500, Norman Vine wrote:
>>
> > I still am getting a couple of undefined references
> >
> > nmth000018.o(.idata$4+0x0): undefined reference to `__nm__cpu_index_tuple_cost'
>
> I believe that adding a DLLIMPORT to src/include/optimizer/cost.h:
>
>     extern DLLIMPORT double cpu_index_tuple_cost;
>
> should fix this one.

**BINGO **

With this change the DLL compiles and works !

What do we need todo to get this into the Postgres source ?

Many Thanks

Norman


Re: Make-Problem Postgres on Cygwin

From
Jason Tishler
Date:
Norman,

On Fri, Nov 22, 2002 at 01:04:40PM -0500, Norman Vine wrote:
> Jason Tishler writes:
> > On Fri, Nov 22, 2002 at 11:39:55AM -0500, Norman Vine wrote:
> >>
> > > I still am getting a couple of undefined references
> > >
> > > nmth000018.o(.idata$4+0x0): undefined reference to `__nm__cpu_index_tuple_cost'
> >
> > I believe that adding a DLLIMPORT to src/include/optimizer/cost.h:
> >
> >     extern DLLIMPORT double cpu_index_tuple_cost;
> >
> > should fix this one.
>
> **BINGO **
>
> With this change the DLL compiles and works !
>
> What do we need todo to get this into the Postgres source ?

Please send a patch (against CVS) to pgsql-patches@.

Thanks,
Jason

--
PGP/GPG Key: http://www.tishler.net/jason/pubkey.asc or key servers
Fingerprint: 7A73 1405 7F2B E669 C19D  8784 1AFD E4CC ECF4 8EF6

Re: Make-Problem Postgres on Cygwin

From
Jason Tishler
Date:
Manuel,

Sigh...

Repeat after me:

    Post instead of sending private email.

    Keep replies on-list.

    Post instead of sending private email.

    Keep replies on-list.

    ...

On Fri, Nov 22, 2002 at 06:48:39PM +0100, Tarabas wrote:
> Thanks a lot for your help! The "make" and "make install" worked fine
> after the patch BUT I sadly have to bother you again.
>
> After I did the ./initdb /usr/local/pgsql/data
> and the ./postmaster -D /usr/local/pgsql/data -i &
>
> and then tried to do ANYTHING on the DB (either connecting via pgAdmin
> oder createdb or createuser), I get the Message:
>
> "FATAL 1: IndexSupportInitialize: bogus pg_index tuple"
>
> Any suggestions ?!

No.  I just ran a gcc3 postmaster (i.e., postgres.exe) against a
previously initialized database without any problems.  From posts to
pgsql-cygwin@, I'm under the impression that others have successfully
built, initialized (i.e., ran initdb), and ran postmaster with my
supplied patches.

> I used the gcc3-patch to compile postgres. Initdb ran fine without any
> errors and the postmaster started fine too. Could this still be
> related to that patch ?!

I don't think so.

Jason

--
PGP/GPG Key: http://www.tishler.net/jason/pubkey.asc or key servers
Fingerprint: 7A73 1405 7F2B E669 C19D  8784 1AFD E4CC ECF4 8EF6

Re: Make-Problem Postgres on Cygwin

From
"Godson Retna"
Date:
Hi

The problem persists and I get the following error using make...even after
applying the patch.

Help me see where I am missing it.

Awaiting your input.

Thanks.

Godson R.

==============[begin
quote]===========================================================
make[3]: `SUBSYS.o' is up to date.
make[3]: Leaving directory
`/cygdrive/e/postgresql-7.2.1/src/backend/storage/fre
espace'
make -C ipc SUBSYS.o
make[3]: Entering directory
`/cygdrive/e/postgresql-7.2.1/src/backend/storage/ip
c'
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../../src/
incl
ude -I/usr/local/include -DBUILDING_DLL=1  -c -o ipc.o ipc.c
cc1: warning: changing search order for system directory
"/usr/local/include"
cc1: warning:   as it has already been specified as a non-system directory
ipc.c: In function `InternalIpcSemaphoreCreate':
ipc.c:271: warning: implicit declaration of function `semget'
ipc.c:271: `IPC_CREAT' undeclared (first use in this function)
ipc.c:271: (Each undeclared identifier is reported only once
ipc.c:271: for each function it appears in.)
ipc.c:271: `IPC_EXCL' undeclared (first use in this function)
ipc.c:318: warning: implicit declaration of function `semctl'
ipc.c:318: `SETALL' undeclared (first use in this function)
ipc.c: In function `IpcSemaphoreKill':
ipc.c:351: `IPC_RMID' undeclared (first use in this function)
ipc.c: In function `IpcSemaphoreLock':
ipc.c:378: storage size of `sops' isn't known
ipc.c:422: warning: implicit declaration of function `semop'
ipc.c:378: warning: unused variable `sops'
ipc.c: In function `IpcSemaphoreUnlock':
ipc.c:441: storage size of `sops' isn't known
ipc.c:441: warning: unused variable `sops'
ipc.c: In function `IpcSemaphoreTryLock':
ipc.c:475: storage size of `sops' isn't known
ipc.c:478: `IPC_NOWAIT' undeclared (first use in this function)
ipc.c:475: warning: unused variable `sops'
ipc.c: In function `IpcSemaphoreGetValue':
ipc.c:519: `GETVAL' undeclared (first use in this function)
ipc.c: In function `IpcSemaphoreGetLastPID':
ipc.c:530: `GETPID' undeclared (first use in this function)
ipc.c: In function `InternalIpcMemoryCreate':
ipc.c:561: warning: implicit declaration of function `shmget'
ipc.c:561: `IPC_CREAT' undeclared (first use in this function)
ipc.c:561: `IPC_EXCL' undeclared (first use in this function)
ipc.c:638: warning: implicit declaration of function `shmat'
ipc.c:638: warning: assignment makes pointer from integer without a cast
ipc.c: In function `IpcMemoryDetach':
ipc.c:664: warning: implicit declaration of function `shmdt'
ipc.c: In function `IpcMemoryDelete':
ipc.c:681: warning: implicit declaration of function `shmctl'
ipc.c:681: `IPC_RMID' undeclared (first use in this function)
ipc.c: In function `SharedMemoryIsInUse':
ipc.c:697: storage size of `shmStat' isn't known
ipc.c:707: `IPC_STAT' undeclared (first use in this function)
ipc.c:697: warning: unused variable `shmStat'
ipc.c: In function `IpcMemoryCreate':
ipc.c:818: warning: assignment makes pointer from integer without a cast
ipc.c:850: `IPC_RMID' undeclared (first use in this function)
ipc.c: In function `IpcSemaphoreCreate':
ipc.c:940: `IPC_RMID' undeclared (first use in this function)
ipc.c:966: `SETVAL' undeclared (first use in this function)
make[3]: *** [ipc.o] Error 1
make[3]: Leaving directory
`/cygdrive/e/postgresql-7.2.1/src/backend/storage/ipc
'
make[2]: *** [ipc-recursive] Error 2
make[2]: Leaving directory
`/cygdrive/e/postgresql-7.2.1/src/backend/storage'
make[1]: *** [storage-recursive] Error 2
make[1]: Leaving directory `/cygdrive/e/postgresql-7.2.1/src/backend'
make: *** [all] Error 2

Administrator@WEBLOGIC /cygdrive/e/postgresql-7.2.1/src
$
================[end
quote]==================================================================


-----Original Message-----
From: cygwin-owner@cygwin.com [mailto:cygwin-owner@cygwin.com]On Behalf
Of Jason Tishler
Sent: Friday, November 22, 2002 7:51 PM
To: Tarabas
Cc: Cygwin; Pgsql-Cygwin
Subject: Re: Make-Problem Postgres on Cygwin


Manuel,

Please post instead of sending private email.  However, your timing is
impeccable.  I just got around (yesterday) to building PostgreSQL under
the latest Cygwin gcc2 and gcc packages.

On Fri, Nov 22, 2002 at 01:23:48PM +0100, Tarabas wrote:
> I read your thread abut problems installing Postgresql on Cygwin as
> source-distribution. I got exactly the same problems with that!
>
> Before you ask:
> I HAVE TO use the source-build because I need to patch the maximum
arguments
> for a function on postgresql for my application, so installing binary is
not
> an option!
>
> I first got the Problem that the IPC-lib was not found in the configure
> which was solved by configuring with
>
> $ LDFLAGS=-L/usr/local/lib ./configure
> instead of the simple "./configure" ...
>
> Also the IPC-Daemon is installed an running! (ps -aef|grep ipc show's it!)
>
> Now i get an error when calling the make:
>
> <-snip->
> make[4]: Entering directory '/postgresql-7.2.3/src/backend/storage/ipc'
>
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../../src/
include -I/usr/local/include -DBUILDING_DLL=1 -c -o -ipc.o ipc.c
> cc1: warning: changing search order for system directory
"/usr/local/include"
> cc1: warning: as it has already been specified as a non-system-directory

The "-I/usr/local/include" is causing configure to get confused and
mis-configure PostgreSQL which causes the following (and other)
problems:

> ipc.c: In function 'InternalIpcSemaphoreCreate':
> ipc.c:271: warning: implicit declaration of function `semget'
> ipc.c:271: `IPC_CREAT' undeclared (first use in this function)
> ipc.c:271: (Each undeclared identifier is reported only once
> ipc.c:271: for each function it appears in.)
> <-snip->
>
> any ideas how to fix that ?!

Yes.

To build PostgreSQL 7.2.3 under gcc2, use the following procedure:

    1. apply attached postgresql-7.2.3-gcc2.patch
       $ patch -p1 <postgresql-7.2.3-gcc2.patch

    2. define CC and LDFLAGS as appropriate on configure command line:
       $ CC=gcc-2 LDFLAGS=-L/usr/local/lib configure ...

To build PostgreSQL 7.2.3 under gcc (i.e gcc 3.2), use the following
procedure:

    1. apply attached postgresql-7.2.3-gcc3.patch
       $ patch -p1 <postgresql-7.2.3-gcc3.patch

    2. define LDFLAGS as appropriate on configure command line:
       $ LDFLAGS=-L/usr/local/lib configure ...

Note:

    1. PostgreSQL CVS (i.e., 7.3) builds OOTB under Cygwin CVS (i.e.,
       1.3.16) and Perl 5.8.0.
    2. PostgreSQL 7.2.3's plperl fails to build (against Perl 5.6.1)
       with either the latest gcc2 or gcc.  I do not intend to track
       this issue down.

Jason

--
PGP/GPG Key: http://www.tishler.net/jason/pubkey.asc or key servers
Fingerprint: 7A73 1405 7F2B E669 C19D  8784 1AFD E4CC ECF4 8EF6


Re: Make-Problem Postgres on Cygwin

From
Jason Tishler
Date:
Godson,

On Tue, Nov 26, 2002 at 02:10:45PM +0530, Godson Retna wrote:
> gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../../src/include -I/usr/local/include
-DBUILDING_DLL=1 -c -o ipc.o ipc.c 
> cc1: warning: changing search order for system directory "/usr/local/include"
> cc1: warning:   as it has already been specified as a non-system directory

The above implies that you either did not successfully apply my patch or
you forgot to reconfigure after doing so.  My WAG is the latter.

Jason

--
PGP/GPG Key: http://www.tishler.net/jason/pubkey.asc or key servers
Fingerprint: 7A73 1405 7F2B E669 C19D  8784 1AFD E4CC ECF4 8EF6

Re: Make-Problem Postgres on Cygwin

From
"Godson Retna"
Date:
Jason

Thanks for all your valuable input.  The installation has been completed
successfully.  I downloaded PostgreSQL 7.2.3. and followed your posts on
this line.

Best Regards.

Godson R.

-----Original Message-----
From: Jason Tishler [mailto:jason@tishler.net]
Sent: Wednesday, November 27, 2002 6:26 PM
To: Godson Retna
Cc: Cygwin; Pgsql-Cygwin
Subject: Re: Make-Problem Postgres on Cygwin


Godson,

On Tue, Nov 26, 2002 at 02:10:45PM +0530, Godson Retna wrote:
>
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../../src/
include -I/usr/local/include -DBUILDING_DLL=1  -c -o ipc.o ipc.c
> cc1: warning: changing search order for system directory
"/usr/local/include"
> cc1: warning:   as it has already been specified as a non-system directory

The above implies that you either did not successfully apply my patch or
you forgot to reconfigure after doing so.  My WAG is the latter.

Jason

--
PGP/GPG Key: http://www.tishler.net/jason/pubkey.asc or key servers
Fingerprint: 7A73 1405 7F2B E669 C19D  8784 1AFD E4CC ECF4 8EF6