Please let me know if I'm being too dense or too, er, flippant here, I've
just gotten sucked, er, just joined the parrot world (dang O'Reilly books
;-) and I'm not sure how formal this list is or how much detail you'll
want off the bat. If these issues are too picayune at this point, I'll
desist. I can give the full perl/OS details too but don't know if that's
(pthreads oops aside) necessary yet. Most of the msgs I've seen so far
are a little higher level than this, though the archives do have some
similar sort of nigglings so ... I can help w/ the Sol x86 test beds, as
I've got 2.5.1 2.7 and 2.8 available. Too much junk below but I've got
the msg written. Sorry.
>> I managed to finagle past the asctime_r errors by sticking:
>> print OUT <<'END';
>> #define _POSIX_PTHREAD_SEMANTICS
>> END
>> in:
>> parrot/config/gen/config_h/feature_h.in
> Does it harm, if we unconditionally include this define or should it be
> defined just for this solaris version?
I've since tried the compile on Sol x86 2.7 and that ifdef was unneeded -
thinking harder, the 2.5.1 box in question has pthreads installed (PTHREAD
- D'oh!) which seems to say Configure is recognizing that but not setting
this obscure ifdef?
>> if ( $libs !~ /-lrt\b/ ) {
>> $libs .= ' -lrt';
>>}
> ... obviously have to follow the scheme used in perl/hints/solaris_2.sh,
> i.e.:
> add -lrt for solaris >= 2.7 and remove it for lower versions.
I did have to comment that out for 2.7 also.
My understanding is that < Sol 2.7 you don't get a snprintf. That's where
the next attempt failed on the 2.5.1 box along w/:
: blib/lib/libparrot.a
gcc -o parrot -L/usr/local/lib -L/usr2/local/lib -g imcc/main.o
blib/lib/libparrot.a -lsocket -lnsl -ldl -lm -lposix4 -lpthread -lcrypt
-lsec
Undefined first referenced
symbol in file
inet_pton blib/lib/libparrot.a(io_unix.o)
ld: fatal: Symbol referencing errors. No output written to parrot
io_unix.c has:
STRING *
PIO_sockaddr_in(theINTERP, unsigned short port, STRING * addr)
{
struct sockaddr_in sa;
/* Hard coded to IPv4 for now */
int family = AF_INET;
char * s = string_to_cstring(interpreter, addr);
#ifdef PARROT_DEF_INET_ATON
if(inet_aton(s, &sa.sin_addr) != 0) {
#else
if(inet_pton(family, s, &sa.sin_addr) != 0) {
#endif
As it happens, 2.5.1 has neither inet_aton or inet_pton
comment in the above:
XXX: We can probably just write our own routines (C<htons()>,
C<inet_aton()>, etc.) and take this out of platform specific compilation
parrot/config/auto/snprintf/test.in
The 2.7 doesn't have Sun's cc/CC (too expensive) and so
(config/init/hints/solaris.pl):
my $link = Configure::Data->get('link');
# Going to assume Sun's compiler
# In which case we need to link with the C++ compiler (CC) rather than the
# C compiler (cc)
$link =~ s/\bcc\b/CC/;
Configure::Data->set('link', $link);
...
choked early on:
Determining what C compiler and linker to
use.........................done.
Determining if your C compiler is actually gcc......Linker failed (see
test.ldo)
test.ldo
Can't exec "CC": No such file or directory at lib/Parrot/Configure/Step.pm
line 279.
which seems to say its not doing whatever that link stuff is doing, its
not working for the CC/g++ switch. Changing that subst:
# C compiler (cc)
#$link =~ s/\bcc\b/CC/;
# YAassumption - g++
$link =~ s/\bcc\b/g++/;
Configure::Data->set('link', $link);
whch gets us as far as:
: blib/lib/libparrot.a
g++ -o parrot -L/usr/local/lib -g imcc/main.o blib/lib/libparrot.a
blib/lib/libicuuc.a blib/lib/libicudata.a -lsocket -lnsl -ldl -lm
-lpthread -lsched
Undefined first referenced
symbol in file
sched_yield blib/lib/libparrot.a(thread.o)
ld: fatal: Symbol referencing errors. No output written to parrot
2.7 (Sol. native threads?) does have sched_yield (in sched.h) but I dunno
how to best tell it which to use (posix or sun) or which is better.
a
Andy Bach, Sys. Mangler
Internet: [EMAIL PROTECTED]
VOICE: (608) 261-5738 FAX 264-5932
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!