Re: Configure fix
[email protected] (Nicholas Clark) Sat, 24 Apr 2004 15:13:31 +0100
| Newsgroups | perl.ponie.dev |
|---|---|
| Message-ID | <[email protected]> |
On Fri, Apr 23, 2004 at 03:58:05PM -0400, Aaron Sherman wrote:
> Attached is a small fix for the case where, instead of checking out
> parrot in the ponie directory, the user creates a symlink to an existing
> parrot checkout.
>
> Without this fix, Configure makes symlinks inside the parrot tree that
> point to somewhere other than the ponie tree.
Thanks applied (with a couple of tweaks - Configure.pl was already using
Cwd; and storing the start directory)
>
> What this patch does NOT fix is the following error:
>
> gcc -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/home/ajs/src/ponie/perl -g -Dan_Sugalski -Larry -Wall -Wstrict-prototypes -Wmissing-prototypes -Winline -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Waggregate-return -Winline -W -Wno-unused -Wsign-compare -Wformat-nonliteral -Wformat-security -Wpacked -Wdisabled-optimization -mno-accumulate-outgoing-args -Wno-shadow -I../include -o perl5av.o -c perl5av.c
> perl5av.c: In function `Parrot_Perl5AV_get_string':
> perl5av.c:169: warning: passing arg 4 of `string_make' from incompatible pointer type
> perl5av.c:169: error: too few arguments to function `string_make'
> make[1]: *** [perl5av.o] Error 1
> make[1]: Leaving directory `/home/ajs/src/parrot/classes'
> make: *** [classes/perl5av.o] Error 2
>
> Any clue why that would happen?
Parrot changed a lot of the string functions when they switched to using ICU
a week or so ago. I thought that this patch fixed that specific problem
http://www.nntp.perl.org/group/perl.ponie.changes/69
However, things now fail for me on the miniperl link:
cache gcc -L/Users/nick/Ponie/ponie09/parrot/blib/lib -force_flat_namespace -o miniperl \
miniperlmain.o opmini.o libperl.a -ldl -lm -lc -lparrot -licuuc -licudata
ld: Undefined symbols:
___gxx_personality_v0
vtable for __cxxabiv1::__class_type_info
vtable for __cxxabiv1::__si_class_type_info
vtable for __cxxabiv1::__vmi_class_type_info
operator delete(void*)
___cxa_pure_virtual
std::terminate()
make[1]: *** [miniperl] Error 1
make: *** [perl/perl] Error 2
and I don't know the best way to fix this. The cause is ICU (again) - it
needs to be linked with the C++ runtime libraries. The problem comes because
currently Perl's Makefile is constructed in such a way that the same command
is used for both compiling and linking, so the "obvious" solution of link
with the C++ compiler doesn't work. Trying to compile Perl with the C++
compiler fell over because parrot's internals weren't valid C++
Nicholas Clark