Re: [HACKERS] list_head naming conflict gcc 4.2/perl/solaris
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
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
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
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
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
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