Re: [HACKERS] list_head naming conflict gcc 4.2/perl/solaris

2009-06-03 Thread Zdenek Kotala

Zdenek Kotala píše v po 01. 06. 2009 v 22:45 +0200:
 Tom Lane píše v po 01. 06. 2009 v 16:09 -0400:
  Zdenek Kotala zdenek.kot...@sun.com writes:
 
 
  What is sys/list.h, and why is it being imported by the Perl headers?
 
 It seems that problem is with Perl. It includes sys/mode.h. The new
 change for gcc 4.2 is that mode.h includes vnode.h and it finally
 sys/list.h which is generic list for kernel structures. 
 
  Can we do something like #define list_head solaris_list_head around 
  the problematic #include?  (Which one is that, anyway?)
 
 I will try it. There is following hack:
 
 CFLAGS=-D_SYS_VNODE_H 
 
 which disable vnode.h and breaks include chain.

 I need to install fresh nightly build of Solaris to test it on live
 system.

Perl includes sys/mode.h which is probably not necessary (it look likes
that it is something for AIX), but it seems that sys/*.h headers
modifications break more than only PostgreSQL. And kernel guys should
fix it. Which means no change for PostgreSQL. Only who will use
opensolaris devel builds 116 could have a problem. I will skip these
build(s) on my buildfarm animals.

Zdenek




-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[HACKERS] list_head naming conflict gcc 4.2/perl/solaris

2009-06-01 Thread Zdenek Kotala
During integration gcc4.2 into Solaris. My colleague hit a following
problem with PostgreSQL compilation:

http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6845982

cd 
/builds/sfw-fixes/usr/src/cmd/postgres/postgresql-8.2/postgresql-8.2.13/src/pl/plperl
+ /ws/onnv-tools/SUNWspro/SS12/bin/cc -xO3 -m32 -xchip=pentium -xspace -Xa 
-xildoff -xc99=all -xc99=none -xCC -KPIC -I. -I../../../src/include 
-I/builds/sfw-fixes/proto/root_i386/usr/include 
-I/builds/sfw-fixes/proto/root_i386/usr/sfw/include -I/usr/sfw/include 
-I/usr/include/kerberosv5 -I/usr/perl5/5.8.4/lib/i86pc-solaris-64int/CORE -c -o 
plperl.o plperl.c
/usr/include/sys/list.h, line 52: identifier redeclared: list_head
current : function(pointer to struct list {unsigned int list_size, 
unsigned int list_offset, struct list_node {..} list_head}) returning pointer 
to void
previous: function(pointer to struct List {enum NodeTag 
{T_TIDBitmap(902), (blah blah)

At this moment there is no clear conclusion how to fix it in solaris system 
headers to satisfy all side.  :(

My idea is to rename list_head to pg_list_head (and other functions 
analogously) to avoid name conflict.

Comments, better ideas?

Thanks Zdenek






-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] list_head naming conflict gcc 4.2/perl/solaris

2009-06-01 Thread Robert Haas
On Mon, Jun 1, 2009 at 3:57 PM, Zdenek Kotala zdenek.kot...@sun.com wrote:
 During integration gcc4.2 into Solaris. My colleague hit a following
 problem with PostgreSQL compilation:

 http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6845982

 cd 
 /builds/sfw-fixes/usr/src/cmd/postgres/postgresql-8.2/postgresql-8.2.13/src/pl/plperl
 + /ws/onnv-tools/SUNWspro/SS12/bin/cc -xO3 -m32 -xchip=pentium -xspace -Xa 
 -xildoff -xc99=all -xc99=none -xCC -KPIC -I. -I../../../src/include 
 -I/builds/sfw-fixes/proto/root_i386/usr/include 
 -I/builds/sfw-fixes/proto/root_i386/usr/sfw/include -I/usr/sfw/include 
 -I/usr/include/kerberosv5 -I/usr/perl5/5.8.4/lib/i86pc-solaris-64int/CORE -c 
 -o plperl.o plperl.c
 /usr/include/sys/list.h, line 52: identifier redeclared: list_head
        current : function(pointer to struct list {unsigned int list_size, 
 unsigned int list_offset, struct list_node {..} list_head}) returning pointer 
 to void
        previous: function(pointer to struct List {enum NodeTag 
 {T_TIDBitmap(902), (blah blah)

 At this moment there is no clear conclusion how to fix it in solaris system 
 headers to satisfy all side.  :(

 My idea is to rename list_head to pg_list_head (and other functions 
 analogously) to avoid name conflict.

        Comments, better ideas?

Uh... isn't it rather bad form for the operating system headers to be
defining commonly used type names like list?  I'd be very surprised
if PostgreSQL is the only application that is going to break on this.

...Robert

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] list_head naming conflict gcc 4.2/perl/solaris

2009-06-01 Thread Tom Lane
Zdenek Kotala zdenek.kot...@sun.com writes:
 My idea is to rename list_head to pg_list_head (and other functions 
 analogously) to avoid name conflict.

There is zero chance of that happening.  We have thousands of references
to those functions in the core code, and who knows how many more in
third-party code we don't control.

What is sys/list.h, and why is it being imported by the Perl headers?
Can we do something like #define list_head solaris_list_head around
the problematic #include?  (Which one is that, anyway?)

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] list_head naming conflict gcc 4.2/perl/solaris

2009-06-01 Thread Zdenek Kotala

Robert Haas píše v po 01. 06. 2009 v 16:03 -0400:
 On Mon, Jun 1, 2009 at 3:57 PM, Zdenek Kotala zdenek.kot...@sun.com wrote:
  During integration gcc4.2 into Solaris. My colleague hit a following
  problem with PostgreSQL compilation:
 
  http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6845982
 
  cd 
  /builds/sfw-fixes/usr/src/cmd/postgres/postgresql-8.2/postgresql-8.2.13/src/pl/plperl
  + /ws/onnv-tools/SUNWspro/SS12/bin/cc -xO3 -m32 -xchip=pentium -xspace -Xa 
  -xildoff -xc99=all -xc99=none -xCC -KPIC -I. -I../../../src/include 
  -I/builds/sfw-fixes/proto/root_i386/usr/include 
  -I/builds/sfw-fixes/proto/root_i386/usr/sfw/include -I/usr/sfw/include 
  -I/usr/include/kerberosv5 -I/usr/perl5/5.8.4/lib/i86pc-solaris-64int/CORE 
  -c -o plperl.o plperl.c
  /usr/include/sys/list.h, line 52: identifier redeclared: list_head
 current : function(pointer to struct list {unsigned int list_size, 
  unsigned int list_offset, struct list_node {..} list_head}) returning 
  pointer to void
 previous: function(pointer to struct List {enum NodeTag 
  {T_TIDBitmap(902), (blah blah)
 
  At this moment there is no clear conclusion how to fix it in solaris system 
  headers to satisfy all side.  :(
 
  My idea is to rename list_head to pg_list_head (and other functions 
  analogously) to avoid name conflict.
 
 Comments, better ideas?
 
 Uh... isn't it rather bad form for the operating system headers to be
 defining commonly used type names like list?  

It is in solaris since 2003 for kernel structure linked list. When I
look on it closer, it seems that problem is more in perl which includes
some sys/ headers which is probably not good practice. :(

 I'd be very surprised
 if PostgreSQL is the only application that is going to break on this.

At this moment I know only about PostgreSQL. How I understand it now, it
appears only when source is compiling with Perl. 

I will look more on it tomorrow.

thanks Zdenek



-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] list_head naming conflict gcc 4.2/perl/solaris

2009-06-01 Thread Zdenek Kotala

Tom Lane píše v po 01. 06. 2009 v 16:09 -0400:
 Zdenek Kotala zdenek.kot...@sun.com writes:


 What is sys/list.h, and why is it being imported by the Perl headers?

It seems that problem is with Perl. It includes sys/mode.h. The new
change for gcc 4.2 is that mode.h includes vnode.h and it finally
sys/list.h which is generic list for kernel structures. 

 Can we do something like #define list_head solaris_list_head around 
 the problematic #include?  (Which one is that, anyway?)

I will try it. There is following hack:

CFLAGS=-D_SYS_VNODE_H 

which disable vnode.h and breaks include chain.

I need to install fresh nightly build of Solaris to test it on live
system.

Thanks Zdenek


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers