Re: CPAN Upload: A/AB/ABERGMAN/ponie-2.tar.gz - Ponie Development Release 2
[email protected] (Steve Hay) Tue, 23 Mar 2004 12:42:41 +0000
| Newsgroups | perl.ponie.dev |
|---|---|
| Message-ID | <[email protected]> |
Nicholas Clark wrote:
>On Mon, Mar 22, 2004 at 06:03:01PM +0000, Steve Hay wrote:
>
>
>>So I guess the question is: What do I need to do to win32/Makefile to
>>have perl built with parrot?
>>
>>
>
>I don't know for sure, but the reason for the "two" Configure runs on unix
>is
>
>Run 1: Extract config.h so that the p5 PMCs in the parrot tree can be built
> (they #include config.h)
>
>Run 2: Generate a Makefile that contains -Is so that the perl tree picks up
> headers from the parrot tree, and -Ls and -lparrot so that the perl
> is also linked against the libparrot.a in the parrot tree.
>
>So if win32 starts out with a config.h, I think that you can avoid emulating
>that first Configure run, so just build parrot first, then build perl second,
>with the win32 Makefile edited to include include and link paths into
>../parrot/include and ../parrot/blib (or whatever it is)
>
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)).
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!
So instead, I tried cheating by using an existing perl installation
(5.9.1 in the same (default) configuration as I'll build ponie in) to
run parrot's Configure.pl, then building parrot (cvs version), then
building perl.
Parrot built OK -- here's the test results:
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t\op\string.t 1 256 130 1 0.77% 123
t\pmc\perlnum.t 1 256 36 1 2.78% 36
t\pmc\perlstring.t 1 256 33 1 3.03% 30
2 tests and 71 subtests skipped.
Failed 3/97 test scripts, 96.91% okay. 3/1450 subtests failed, 99.79% okay.
So far so good. When I now try to build perl I have to hack
win32/Makefile as you suggested in your reply above -- I've appended
-I..\..\parrot\include to the INCLUDES, and
..\..\parrot\blib\lib\libparrot_s.lib to the LIBBASEFILES.
Running "nmake" now gets as far as creating miniperl.exe (which it does
successfully), but then falls over at the next step:
miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
NMAKE : fatal error U1077: 'miniperl' : return code '0xc0000005'
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?
- Steve
------------------------------------------------
Radan Computational Ltd.
The information contained in this message and any files transmitted with it are confidential and intended for the addressee(s) only. If you have received this message in error or there are any problems, please notify the sender immediately. The unauthorized use, disclosure, copying or alteration of this message is strictly forbidden. Note that any views or opinions presented in this email are solely those of the author and do not necessarily represent those of Radan Computational Ltd. The recipient(s) of this message should check it and any attached files for viruses: Radan Computational will accept no liability for any damage caused by any virus transmitted by this email.