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.

Reply via email to