Re: perl 5.10.0 / osx 10.5.2 'make' dies at error: redefinition of 'union semun'

2008-03-05 Thread Edward Moy

When I build 5.10.0, I don't have this problem.  In config.h, I have:

#define HAS_UNION_SEMUN /**/

Did you run Configure and does your config.h define HAS_UNION_SEMUN?
--
Edward Moy
Apple Inc.
[EMAIL PROTECTED]

On Mar 5, 2008, at 10:20 AM, snowcrash+perl wrote:


i'm building perl 5.10.0 on

Darwin Kernel Version 9.2.0: Tue Feb  5 16:15:19 PST 2008;
root:xnu-1228.3.13~1/RELEASE_PPC
powerpc-apple-darwin9-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5531)


currently,

make

dies @ redef of 'union semun'


cd /build/perl-5.10.0
make
...
In file included from miniperlmain.c:36:
perl.h:5431: error: redefinition of 'union semun'
make: *** [miniperlmain.o] Error 1


looking @ perl.h:5427
...
#ifdef HAS_SEM
#   include sys/ipc.h
#   include sys/sem.h
#   ifndef HAS_UNION_SEMUN  /* Provide the union semun. */
   union semun {
   int val;
   struct semid_ds *buf;
   unsigned short  *array;
   };
#   endif
#   ifdef USE_SEMCTL_SEMUN
#   ifdef IRIX32_SEMUN_BROKEN_BY_GCC
   union gccbug_semun {
   int val;
   struct semid_ds *buf;
   unsigned short  *array;
   char__dummy[5];
   };
#   define semun gccbug_semun
#   endif
#   define Semctl(id, num, cmd, semun) semctl(id, num, cmd, semun)
#   else
#   ifdef USE_SEMCTL_SEMID_DS
#   ifdef EXTRA_F_IN_SEMUN_BUF
#   define Semctl(id, num, cmd, semun) semctl(id, num,
cmd, semun.buff)
#   else
#   define Semctl(id, num, cmd, semun) semctl(id, num,
cmd, semun.buf)
#   endif
#   endif
#   endif
#endif
...


it looks like a HAS_UNION_SEMUN or HAS_SEM needs to be undef'd?

i don't see this issue w/ 5.8.8, so it might be perl-src ...

before I blindly undef/def symbols, can anyone comment/hint on this?

thanks.





Re: perl 5.10.0 / osx 10.5.2 'make' dies at error: redefinition of 'union semun'

2008-03-05 Thread snowcrash+perl
hi edward,

On Wed, Mar 5, 2008 at 10:34 AM, Edward Moy [EMAIL PROTECTED] wrote:
 When I build 5.10.0, I don't have this problem.  In config.h, I have:


 #define HAS_UNION_SEMUN /**/

 Did you run Configure

yes

 and does your config.h define HAS_UNION_SEMUN?

if i

  ./Configure -Dfirstmakefile='GNUmakefile' ...

as usual,

 grep HAS_UNION_SEMUN config.h
  /* HAS_UNION_SEMUN:
  /*#define HAS_UNION_SEMUN / **/

after digging abt in perl src, i note that if i *ADD*

  ./Configure -Dfirstmakefile='GNUmakefile' ... -Dd_union_semun

then,

  grep HAS_UNION_SEMUN config.h
   /* HAS_UNION_SEMUN:
   #define HAS_UNION_SEMUN  /**/

and, subsequent

   make

seems happy with that.

so, the question is -- why's it need to be defined on my system, and
not on yours?

did _you_ run Configure? or the default install?

thanks.


Re: perl 5.10.0 / osx 10.5.2 'make' dies at error: redefinition of 'union semun'

2008-03-05 Thread Edward Moy


On Mar 5, 2008, at 11:02 AM, snowcrash+perl wrote:


hi edward,

On Wed, Mar 5, 2008 at 10:34 AM, Edward Moy [EMAIL PROTECTED] wrote:

When I build 5.10.0, I don't have this problem.  In config.h, I have:


#define HAS_UNION_SEMUN /**/

Did you run Configure


yes


and does your config.h define HAS_UNION_SEMUN?


if i

 ./Configure -Dfirstmakefile='GNUmakefile' ...

as usual,

grep HAS_UNION_SEMUN config.h
 /* HAS_UNION_SEMUN:
 /*#define HAS_UNION_SEMUN  / **/

after digging abt in perl src, i note that if i *ADD*

 ./Configure -Dfirstmakefile='GNUmakefile' ... -Dd_union_semun

then,

 grep HAS_UNION_SEMUN config.h
  /* HAS_UNION_SEMUN:
  #define HAS_UNION_SEMUN   /**/

and, subsequent

  make

seems happy with that.

so, the question is -- why's it need to be defined on my system, and
not on yours?

did _you_ run Configure? or the default install?


Yes, I run Configure, and it prints:

You have union semun in sys/sem.h.

Configure determines this by trying to compile:

--- try.c ---
#include sys/types.h
#include sys/ipc.h
#include sys/sem.h
int main () { union semun semun; semun.buf = 0; }
--

What happens when you try to compile the above program?

I forgot to mention that I'm still using the 4.0.1 compiler, while it  
looks like you're using the 4.2 compiler.  If the above fails to  
compile with 4.2, you might try compiling try.c with 4.0.1 just to see  
if 4.2 has a bug (though I would think this unlikely).


--
Edward Moy
Apple Inc.
[EMAIL PROTECTED]



Re: perl 5.10.0 / osx 10.5.2 'make' dies at error: redefinition of 'union semun'

2008-03-05 Thread snowcrash+perl
hi,

On Wed, Mar 5, 2008 at 11:17 AM, Edward Moy [EMAIL PROTECTED] wrote:
 Configure determines this by trying to compile:

 --- try.c ---
 #include sys/types.h
 #include sys/ipc.h
 #include sys/sem.h
 int main () { union semun semun; semun.buf = 0; }
 --

 What happens when you try to compile the above program?

with

gcc --version
powerpc-apple-darwin9-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 
5531)
gcc -v try.c

looks ok to me,


Using built-in specs.
Target: powerpc-apple-darwin9
Configured with:
/usr/ports/gcc_42-5531/gcc_42-5531/build/obj/src/configure
--disable-checking -enable-werror --prefix=/usr
--mandir=/usr/share/man --enable-languages=c,objc,c++,obj-c++
--program-transform-name=/^[cg][^.-]*$/s/$/-4.2/
--with-gxx-include-dir=/usr/include/c++/4.0.0 --with-slibdir=/usr/lib
--build=powerpc-apple-darwin9 --host=powerpc-apple-darwin9
--target=powerpc-apple-darwin9
Thread model: posix
gcc version 4.2.1 (Apple Inc. build 5531)
 /usr/libexec/gcc/powerpc-apple-darwin9/4.2.1/cc1 -quiet -v
-D__DYNAMIC__ try.c -fPIC -quiet -dumpbase try.c
-mmacosx-version-min=10.5 -auxbase try -version -o
/var/folders/fi/fi+R69XvFXyPa7H6QIvBUk+++TI/-Tmp-//ccDnzd3s.s
ignoring nonexistent directory
/usr/lib/gcc/powerpc-apple-darwin9/4.2.1/../../../../powerpc-apple-darwin9/include
#include ... search starts here:
#include ... search starts here:
 /usr/local/include
 /usr/lib/gcc/powerpc-apple-darwin9/4.2.1/include
 /usr/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.
GNU C version 4.2.1 (Apple Inc. build 5531) (powerpc-apple-darwin9)
compiled by GNU C version 4.2.1 (Apple Inc. build 5531).
GGC heuristics: --param ggc-min-expand=100 --param 
ggc-min-heapsize=131072
Compiler executable checksum: 31bffcb05d987b0795677d6c6078
 /usr/libexec/gcc/powerpc-apple-darwin9/4.2.1/as -arch ppc -o
/var/folders/fi/fi+R69XvFXyPa7H6QIvBUk+++TI/-Tmp-//ccTS1Z3j.o
/var/folders/fi/fi+R69XvFXyPa7H6QIvBUk+++TI/-Tmp-//ccDnzd3s.s
 /usr/libexec/gcc/powerpc-apple-darwin9/4.2.1/collect2 -dynamic -arch
ppc -macosx_version_min 10.5 -weak_reference_mismatches non-weak -o
a.out -lcrt1.10.5.o -L/usr/lib/gcc/powerpc-apple-darwin9/4.2.1
-L/usr/lib/gcc/powerpc-apple-darwin9/4.2.1
-L/usr/lib/gcc/powerpc-apple-darwin9/4.2.1/../../..
/var/folders/fi/fi+R69XvFXyPa7H6QIvBUk+++TI/-Tmp-//ccTS1Z3j.o
-lgcc_s.10.5 -lgcc -lSystemStubs -lSystem

 I forgot to mention that I'm still using the 4.0.1 compiler, while it looks
 like you're using the 4.2 compiler.  If the above fails to compile with 4.2,
 you might try compiling try.c with 4.0.1 just to see if 4.2 has a bug
 (though I would think this unlikely).

gcc_select 4.0
Default compiler has been set to:
gcc version 4.0.1 (Apple Inc. build 5465)
gcc -v try.c

Using built-in specs.
Target: powerpc-apple-darwin9
Configured with: /var/tmp/gcc/gcc-5465~16/src/configure
--disable-checking -enable-werror --prefix=/usr --mandir=/share/man
--enable-languages=c,objc,c++,obj-c++
--program-transform-name=/^[cg][^.-]*$/s/$/-4.0/
--with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib
--build=i686-apple-darwin9 --program-prefix=
--host=powerpc-apple-darwin9 --target=powerpc-apple-darwin9
Thread model: posix
gcc version 4.0.1 (Apple Inc. build 5465)
 /usr/libexec/gcc/powerpc-apple-darwin9/4.0.1/cc1 -quiet -v
-D__DYNAMIC__ try.c -fPIC -quiet -dumpbase try.c
-mmacosx-version-min=10.5 -auxbase try -version -o
/var/folders/fi/fi+R69XvFXyPa7H6QIvBUk+++TI/-Tmp-//ccNmRTyR.s
ignoring nonexistent directory
/usr/lib/gcc/powerpc-apple-darwin9/4.0.1/../../../../powerpc-apple-darwin9/include
#include ... search starts here:
#include ... search starts here:
 /usr/local/include
 /usr/lib/gcc/powerpc-apple-darwin9/4.0.1/include
 /usr/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.
GNU C version 4.0.1 (Apple Inc. build 5465) (powerpc-apple-darwin9)
compiled by GNU C version 4.0.1 (Apple Inc. build 5465).
GGC heuristics: --param ggc-min-expand=100 --param 
ggc-min-heapsize=131072
Compiler executable checksum: 9f5f0a20bb36a9596f05e3c117ac5032
 /usr/libexec/gcc/powerpc-apple-darwin9/4.0.1/as -arch ppc -o
/var/folders/fi/fi+R69XvFXyPa7H6QIvBUk+++TI/-Tmp-//ccvNbScg.o
/var/folders/fi/fi+R69XvFXyPa7H6QIvBUk+++TI/-Tmp-//ccNmRTyR.s
 /usr/libexec/gcc/powerpc-apple-darwin9/4.0.1/collect2 -dynamic -arch
ppc -macosx_version_min 10.5 -weak_reference_mismatches non-weak -o
a.out -lcrt1.10.5.o -L/usr/lib/powerpc-apple-darwin9/4.0.1

Re: perl 5.10.0 / osx 10.5.2 'make' dies at error: redefinition of 'union semun'

2008-03-05 Thread Edward Moy

On Mar 5, 2008, at 11:38 AM, snowcrash+perl wrote:


On Wed, Mar 5, 2008 at 11:17 AM, Edward Moy [EMAIL PROTECTED] wrote:

Configure determines this by trying to compile:

--- try.c ---
#include sys/types.h
#include sys/ipc.h
#include sys/sem.h
int main () { union semun semun; semun.buf = 0; }
--

What happens when you try to compile the above program?


with

gcc --version
powerpc-apple-darwin9-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 
5531)
gcc -v try.c

looks ok to me,


(snip)

I forgot to mention that I'm still using the 4.0.1 compiler, while  
it looks
like you're using the 4.2 compiler.  If the above fails to compile  
with 4.2,

you might try compiling try.c with 4.0.1 just to see if 4.2 has a bug
(though I would think this unlikely).


(snip)


looks effectively the same; only diff is:

GCC 4.2 - ... --build=powerpc-apple-darwin9
--host=powerpc-apple-darwin9 --target=powerpc-apple-darwin9
GCC 4.0 - ... --build=i686-apple-darwin9 ..
--host=powerpc-apple-darwin9 --target=powerpc-apple-darwin9


Well, it's a mystery.  The only other thing I can think of is if  
somehow _POSIX_C_SOURCE or _XOPEN_SOURCE are being defined when  
Configure compiles try.c (and union semun would not be defined in sys/ 
sem.h as per POSIX), but when miniperlmain.c compiles, those macros  
aren't defined, so union semun is visible in sys/sem.h, but by that  
time HAS_UNION_SEMUN has been define, so union semun gets redefined.

--
Edward Moy
Apple Inc.
[EMAIL PROTECTED]



Re: perl 5.10.0 / osx 10.5.2 'make' dies at error: redefinition of 'union semun'

2008-03-05 Thread snowcrash+perl
 Well, it's a mystery.

:-)

 The only other thing I can think of is if somehow
 _POSIX_C_SOURCE or _XOPEN_SOURCE are being defined when Configure compiles
 try.c (and union semun would not be defined in sys/sem.h as per POSIX), but
 when miniperlmain.c compiles, those macros aren't defined, so union semun is
 visible in sys/sem.h, but by that time HAS_UNION_SEMUN has been define, so
 union semun gets redefined.

possibly ... checking, neither _POSIX_C_SOURCE or _XOPEN_SOURCE are
def'd in perl's config.h

either way, for now, my workaround (adding the option to config) seems
to work -- and, afaict, causes no harm.

thanks for the help.