Whilst trying to build ponie-2 on Solaris 8, I came across the following issue: In order to use threads, both perl-5.[89].x and parrot need to call some sort of yield() function.
In parrot, sched_yield is used; this function is available in the -lrt library, so the solaris hints file adds that in. There appears to be no way to override this from the Configure.pl command line. In perl, the plain yield() function is used; this function is available in the standard C library, so -lrt is not used. (Indeed, it's not even mentioned in Configure.) The hints/solaris_2.sh file unconditionally sets sched_yield='yield' (bad hints file! I'll supply a patch for that separately.) Underneath it all, it doesn't matter -- both functions are the same on Solaris -- but leaving things the way they are gives the following error message for ponie-2: cc -L/usr/lib -L/usr/ccs/lib -L/opt/SUNWspro/SC4.2/lib -L/home/doughera/src/parrot/ponie-andy/parrot/blib/lib -o miniperl \ miniperlmain.o opmini.o libperl.a -lsocket -lnsl -ldl -lm -lpthread -lc -lparrot Undefined first referenced symbol in file sched_yield /home/doughera/src/parrot/ponie-andy/parrot/blib/lib/libparrot.a(thread.o) One fix for ponie may be to add rt to the $libswanted when it calls perl's Configure (adding -A prepend:libswanted=rt should do the trick, but I haven't tested it). Longer term, it'd probably be good for parrot to have yield() vs. sched_yield() set by some Configure.pl-time variable. For now, it would likely be sufficient to simply key off of perl5's $Config{sched_yield}. Similarly, perl's Configure/hints combination ought to be a bit more flexible about yield() vs. sched_yield(). This would help make perl slightly more flexible in adapting to being extended or embedded. -- Andy Dougherty [EMAIL PROTECTED]