Thread: Pl/perl broken on Windows

Pl/perl broken on Windows

From
"Dave Page"
Date:
I'm getting the following build failure in pl/perl on Win32. I'm
guessing this has something to do with the recent rehashing of
make/include files, but I don't know what exactly. This is on a fresh
checkout.

Regards, Dave.

make[3]: Entering directory `/cvs/pgsql/src/pl/plperl'
gcc -O2 -fno-strict-aliasing  -I. -I../../../src/include
-I./src/include/port/win32 -DEXEC_BACKEND
"-I../../../src/include/port/win32" -IC:/Perl/lib/CORE  -c -o plperl.o
plperl.c
In file included from C:/Perl/lib/CORE/win32thread.h:4,                from C:/Perl/lib/CORE/perl.h:2056,
from plperl.c:62: 
C:/Perl/lib/CORE/win32.h:219: conflicting types for `uid_t'
../../../src/include/pg_config_os.h:198: previous declaration of `uid_t'
C:/Perl/lib/CORE/win32.h:220: conflicting types for `gid_t'
../../../src/include/pg_config_os.h:199: previous declaration of `gid_t'
In file included from C:/Perl/lib/CORE/win32thread.h:4,                from C:/Perl/lib/CORE/perl.h:2056,
from plperl.c:62: 
C:/Perl/lib/CORE/win32.h:226:1: warning: "isnan" redefined
In file included from ../../../src/include/utils/timestamp.h:16,                from
../../../src/include/utils/nabstime.h:20,               from ../../../src/include/access/xact.h:20,                from
../../../src/include/utils/tqual.h:19,               from ../../../src/include/access/relscan.h:18,                from
../../../src/include/access/heapam.h:18,               from plperl.c:47: 
c:/mingw/include/math.h:324:1: warning: this is the location of the
previous definition
In file included from C:/Perl/lib/CORE/win32.h:549,                from C:/Perl/lib/CORE/win32thread.h:4,
from C:/Perl/lib/CORE/perl.h:2056,                from plperl.c:62: 
C:/Perl/lib/CORE/win32iop.h:239:1: warning: "rename" redefined
In file included from ../../../src/include/c.h:784,                from ../../../src/include/postgres.h:48,
  from plperl.c:40: 
../../../src/include/port.h:177:1: warning: this is the location of the
previous definition
In file included from C:/Perl/lib/CORE/win32.h:549,                from C:/Perl/lib/CORE/win32thread.h:4,
from C:/Perl/lib/CORE/perl.h:2056,                from plperl.c:62: 
C:/Perl/lib/CORE/win32iop.h:246:1: warning: "open" redefined
In file included from ../../../src/include/c.h:784,                from ../../../src/include/postgres.h:48,
  from plperl.c:40: 
../../../src/include/port.h:190:1: warning: this is the location of the
previous definition
In file included from C:/Perl/lib/CORE/win32.h:549,                from C:/Perl/lib/CORE/win32thread.h:4,
from C:/Perl/lib/CORE/perl.h:2056,                from plperl.c:62: 
C:/Perl/lib/CORE/win32iop.h:254:1: warning: "mkdir" redefined
In file included from ../../../src/include/c.h:85,                from ../../../src/include/postgres.h:48,
 from plperl.c:40: 
../../../src/include/pg_config_os.h:13:1: warning: this is the location
of the previous definition
In file included from C:/Perl/lib/CORE/win32.h:549,                from C:/Perl/lib/CORE/win32thread.h:4,
from C:/Perl/lib/CORE/perl.h:2056,                from plperl.c:62: 
C:/Perl/lib/CORE/win32iop.h:304:1: warning: "kill" redefined
In file included from ../../../src/include/c.h:784,                from ../../../src/include/postgres.h:48,
  from plperl.c:40: 
../../../src/include/port.h:148:1: warning: this is the location of the
previous definition
make[3]: *** [plperl.o] Error 1
make[3]: Leaving directory `/cvs/pgsql/src/pl/plperl'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/cvs/pgsql/src/pl'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/cvs/pgsql/src'
make: *** [all] Error 2


Re: Pl/perl broken on Windows

From
Bruce Momjian
Date:
OK, I have adjusted the code to use #define for the plperl compile.
This should prevent the conflict you are getting when perl defines uid_t
too.

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

Dave Page wrote:
> I'm getting the following build failure in pl/perl on Win32. I'm
> guessing this has something to do with the recent rehashing of
> make/include files, but I don't know what exactly. This is on a fresh
> checkout.
>
> Regards, Dave.
>
> make[3]: Entering directory `/cvs/pgsql/src/pl/plperl'
> gcc -O2 -fno-strict-aliasing  -I. -I../../../src/include
> -I./src/include/port/win32 -DEXEC_BACKEND
> "-I../../../src/include/port/win32" -IC:/Perl/lib/CORE  -c -o plperl.o
> plperl.c
> In file included from C:/Perl/lib/CORE/win32thread.h:4,
>                  from C:/Perl/lib/CORE/perl.h:2056,
>                  from plperl.c:62:
> C:/Perl/lib/CORE/win32.h:219: conflicting types for `uid_t'
> ../../../src/include/pg_config_os.h:198: previous declaration of `uid_t'
> C:/Perl/lib/CORE/win32.h:220: conflicting types for `gid_t'
> ../../../src/include/pg_config_os.h:199: previous declaration of `gid_t'
> In file included from C:/Perl/lib/CORE/win32thread.h:4,
>                  from C:/Perl/lib/CORE/perl.h:2056,
>                  from plperl.c:62:
> C:/Perl/lib/CORE/win32.h:226:1: warning: "isnan" redefined
> In file included from ../../../src/include/utils/timestamp.h:16,
>                  from ../../../src/include/utils/nabstime.h:20,
>                  from ../../../src/include/access/xact.h:20,
>                  from ../../../src/include/utils/tqual.h:19,
>                  from ../../../src/include/access/relscan.h:18,
>                  from ../../../src/include/access/heapam.h:18,
>                  from plperl.c:47:
> c:/mingw/include/math.h:324:1: warning: this is the location of the
> previous definition
> In file included from C:/Perl/lib/CORE/win32.h:549,
>                  from C:/Perl/lib/CORE/win32thread.h:4,
>                  from C:/Perl/lib/CORE/perl.h:2056,
>                  from plperl.c:62:
> C:/Perl/lib/CORE/win32iop.h:239:1: warning: "rename" redefined
> In file included from ../../../src/include/c.h:784,
>                  from ../../../src/include/postgres.h:48,
>                  from plperl.c:40:
> ../../../src/include/port.h:177:1: warning: this is the location of the
> previous definition
> In file included from C:/Perl/lib/CORE/win32.h:549,
>                  from C:/Perl/lib/CORE/win32thread.h:4,
>                  from C:/Perl/lib/CORE/perl.h:2056,
>                  from plperl.c:62:
> C:/Perl/lib/CORE/win32iop.h:246:1: warning: "open" redefined
> In file included from ../../../src/include/c.h:784,
>                  from ../../../src/include/postgres.h:48,
>                  from plperl.c:40:
> ../../../src/include/port.h:190:1: warning: this is the location of the
> previous definition
> In file included from C:/Perl/lib/CORE/win32.h:549,
>                  from C:/Perl/lib/CORE/win32thread.h:4,
>                  from C:/Perl/lib/CORE/perl.h:2056,
>                  from plperl.c:62:
> C:/Perl/lib/CORE/win32iop.h:254:1: warning: "mkdir" redefined
> In file included from ../../../src/include/c.h:85,
>                  from ../../../src/include/postgres.h:48,
>                  from plperl.c:40:
> ../../../src/include/pg_config_os.h:13:1: warning: this is the location
> of the previous definition
> In file included from C:/Perl/lib/CORE/win32.h:549,
>                  from C:/Perl/lib/CORE/win32thread.h:4,
>                  from C:/Perl/lib/CORE/perl.h:2056,
>                  from plperl.c:62:
> C:/Perl/lib/CORE/win32iop.h:304:1: warning: "kill" redefined
> In file included from ../../../src/include/c.h:784,
>                  from ../../../src/include/postgres.h:48,
>                  from plperl.c:40:
> ../../../src/include/port.h:148:1: warning: this is the location of the
> previous definition
> make[3]: *** [plperl.o] Error 1
> make[3]: Leaving directory `/cvs/pgsql/src/pl/plperl'
> make[2]: *** [all] Error 2
> make[2]: Leaving directory `/cvs/pgsql/src/pl'
> make[1]: *** [all] Error 2
> make[1]: Leaving directory `/cvs/pgsql/src'
> make: *** [all] Error 2
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/include/port/win32.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/win32.h,v
retrieving revision 1.37
diff -c -c -r1.37 win32.h
*** src/include/port/win32.h    6 Oct 2004 09:35:23 -0000    1.37
--- src/include/port/win32.h    6 Oct 2004 16:31:20 -0000
***************
*** 194,202 ****
--- 194,210 ----

  /*
   * Supplement to <sys/types.h>.
+  *
+  * Perl already has conflicting defines for uid_t and gid_t.
   */
+ #ifndef PLPERL_HAVE_UID_GID
  typedef int uid_t;
  typedef int gid_t;
+ #else
+ /* These are redefined by perl. */
+ #define int uid_t;
+ #define int gid_t;
+ #endif
  typedef long key_t;

  /*
Index: src/pl/plperl/plperl.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/pl/plperl/plperl.c,v
retrieving revision 1.51
diff -c -c -r1.51 plperl.c
*** src/pl/plperl/plperl.c    13 Sep 2004 20:08:59 -0000    1.51
--- src/pl/plperl/plperl.c    6 Oct 2004 16:31:24 -0000
***************
*** 37,42 ****
--- 37,43 ----
   *
   **********************************************************************/

+ #define PLPERL_HAVE_UID_GID
  #include "postgres.h"

  /* system stuff */

Re: Pl/perl broken on Windows

From
"Dave Page"
Date:

> -----Original Message-----
> From: Bruce Momjian [mailto:pgman@candle.pha.pa.us]
> Sent: 06 October 2004 17:35
> To: Dave Page
> Cc: pgsql-hackers@postgresql.org
> Subject: Re: [HACKERS] Pl/perl broken on Windows
>
>
> OK, I have adjusted the code to use #define for the plperl compile.
> This should prevent the conflict you are getting when perl
> defines uid_t too.

Hi Bruce,

It looks good now - thanks.

Regards, Dave.