Re: CPAN Upload: A/AB/ABERGMAN/ponie-2.tar.gz - Ponie Development Release 2
[email protected] (Nicholas Clark) Tue, 23 Mar 2004 14:03:48 +0000
| Newsgroups | perl.ponie.dev |
|---|---|
| Message-ID | <[email protected]> |
On Tue, Mar 23, 2004 at 12:42:41PM +0000, Steve Hay wrote:
> Sadly win32 doesn't start out with a config.h (neither parrot's one, nor
> perl's one (which actually resides in win32/ on Win32)).
So how does win32 make a config.h?
> I can't build parrot first because it requires a perl with which to run
> parrot's Configure.pl (which creates parrot's config.h);
> and I can't build perl first because it #includes various parrot header
> files and complains that parrot/config.h doesn't (yet) exist!
Aha, I don't think I was clear - ponie's Configure.PL uses the perl that
ran it to run parrot's Configure.PL, not the "perl" it is about to build.
So you're actually doing just what Unix does.
> I'm sad enough to recognise that the error code there represents an
> "access violation". I rebuilt in debug mode and ran it through the VC++
> debugger. Here's a backtrace of where it crashed:
>
> pmc_new_noinit(Parrot_Interp * 0x00d24af8, long 0) line 179 + 12 bytes
> Parrot_PMC_new(Parrot_Interp * 0x00d24af8, long 0) line 465 + 13 bytes
> S_new_xpvhv(interpreter * 0x00d23dd8) line 992 + 19 bytes
> Perl_sv_upgrade(interpreter * 0x00d23dd8, sv * 0x00d958d0, unsigned long
> 11) line 1765 + 9 bytes
> Perl_newHV(interpreter * 0x00d23dd8) line 1615 + 15 bytes
> perl_construct(interpreter * 0x00d23dd8) line 199 + 9 bytes
> main(int 1, char * * 0x00d22bf0, char * * 0x00d22ef0) line 80 + 11 bytes
> MINIPERL! mainCRTStartup + 227 bytes
> KERNEL32! 77e814c7()
>
> The line on which it crashed is this:
>
> if (Parrot_base_vtables[base_type]->flags & VTABLE_PMC_IS_SINGLETON) {
>
> but the debugger is showing Parrot_base_vtables[base_type] is
> 0x00000000, hence the access violation.
>
> Any ideas where to go next? Is this a genuine flaw, or a symptom of my
> having used the wrong perl to run parrot's Configure.pl?
I think it means that the 3 PMC classes supplied with ponie didn't get
built into parrot.
If you look at ponie's Configure.pl currently it symlinks these in
(the lines
system('ln','-s','../../src/pmc/perl5lv.pmc') && die "error";
)
I can see why symlinks are useful here (to make it clear that these PMCs
injected into the parrot source tree don't belong there) but I guess that
for Win32 that's going to need to be a copy.
Nicholas Clark