Andrew Dougherty <[EMAIL PROTECTED]> writes: >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:
The worry might be that adding -lrt may have other side effects. Alan? > >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.