On Tue, 9 Jan 2007, Will Coleda via RT wrote:

> The test file mentioned in the original report no longer exists: the 
> structure of punie has changed somewhat in the last 11 months.
> 
> Can you please retest, and if you still have a problem, please open a 
> new ticket.

I have no problem with closing the ticket, as I doubt the problem was
ever specific to punie anyway -- it's just punie and pge tended to
trigger it.

I'll pass along the results of my attempts to re-test, not because it
helps much, but just because it illustrates the sorts of frustrations I
kept running into whenever I tried to do anything with parrot.

For starters, it no longer even builds for me.  The build dies with

    perl5.6 tools/build/vtable_extend.pl
    "./include/parrot/parrot.h", line 150: missing operand
    "./include/parrot/parrot.h", line 168: missing operand
    "config/gen/platform/generic/math.h", line 11: missing operand
    "./include/parrot/platform_interface.h", line 17: missing operand
    "./include/parrot/exceptions.h", line 155: syntax error before or at: 
Parrot_jump_buff
    "./include/parrot/exceptions.h", line 155: cannot recover from previous 
errors
    cc: acomp failed for src/ops/core_ops.c
    src/ops/core_ops.c
    *** Error code 2
    make: Fatal error: Command failed for target `src/ops/core_ops.o'

After poking around quite a while, I think this is a perl-5.6 problem.
Earlier in the process, Configure.pl reported:

    Determining whether make is installed...
    step inter::make died during execution: Unknown open() mode '>&' at 
lib/Parrot/Configure/Step.pm line 584.

    at Configure.pl line 540

Although Configure.pl happily kept chugging away, even though it should
have detected that there was a fatal problem of some sort and bailed
out.  In similar situations, perl5's Configure script dies with a message

    I can't compile the test program.
    You have a BIG problem.  Shall I abort Configure? [y]

Without excessive looking through the 5.6.x, 5.8.x, and parrot ChangeLogs, it 
looks like 
Configure.pl is now using a form of the 3-arg open that doesn't work in 5.6.

So I thought I'd clean up and retry with 5.8.8.

    $ make distclean
    mksh: Fatal error in reader: Loop detected when expanding macro value
    `$(PERL) -e 'chdir shift @ARGV; system q{$(MAKE)}, @ARGV; exit $$? >> 8;''

Sigh.  I didn't even bother to try to fix this one.  Time to remove the
whole directory and unpack a fresh distribution.  Retry with perl-5.8.8.

Nope, that fails 10 minutes later with

    src/inter_call.c
    "./include/parrot/sub.h", line 90: warning: integer overflow detected: op 
"<<"
    "src/inter_call.c", line 255: void function cannot return value
    "src/inter_call.c", line 285: void function cannot return value
    "src/inter_call.c", line 1077: warning: statement not reached
    cc: acomp failed for src/inter_call.c
    *** Error code 2
    make: Fatal error: Command failed for target `src/inter_call.o'

Guessing that the following is probably what was intendend (though the
"documentation" of all the relevant function calls makes this less than
obvious):

--- parrot-current/src/inter_call.c     Mon Jan  8 19:15:19 2007
+++ parrot-andy/src/inter_call.c        Tue Jan  9 11:06:05 2007
@@ -251,8 +251,10 @@
             else
                 UVal_pmc(st->val) = va_arg(*ap, PMC*);
 
-            if (st->src.sig & PARROT_ARG_FLATTEN)
-                return make_flattened(interp, st, UVal_pmc(st->val));
+            if (st->src.sig & PARROT_ARG_FLATTEN) {
+               make_flattened(interp, st, UVal_pmc(st->val));
+               return;
+           }
             break;
     }
     st->src.mode |= CALL_STATE_NEXT_ARG;
@@ -281,8 +283,10 @@
             UVal_pmc(st->val) = constant ? st->src.ctx->constants[idx]->u.key
                 : CTX_REG_PMC(st->src.ctx, idx);
 
-            if (st->src.sig & PARROT_ARG_FLATTEN)
-                return make_flattened(interp, st, UVal_pmc(st->val));
+            if (st->src.sig & PARROT_ARG_FLATTEN) {
+               make_flattened(interp, st, UVal_pmc(st->val));
+               return;
+           }
             break;
     }
     st->src.mode |= CALL_STATE_NEXT_ARG;

I then proceed to type 'make' again.  Eventually, it dies with

../../parrot pgc.pir  --output=PGE/builtins_gen.pir PGE/builtins.pg
set_string_keyed() not implemented in class 'Integer'
current instr.: 'parrot;PGE::P6Regex;parse_subrule' pc 8442 
(compilers/pge/PGE/P6Regex.pir:678)
called from Sub 'parrot;PGE::OPTable;parse' pc 2252 
(compilers/pge/PGE/OPTable.pir:519)
called from Sub 'parrot;PGE::Grammar;regex' pc 6554 
(compilers/pge/PGE/P6Regex.pir:143)
called from Sub 'parrot;PGE::P6Regex;compile_p6regex' pc 6463 
(compilers/pge/PGE/P6Regex.pir:95)
called from Sub 'parrot;PGE::P6Grammar::Compiler;__onload' pc 45 
(runtime/parrot/library/PGE/P6Grammar.pir:80)
called from Sub 'main' pc 3 (pgc.pir:48)
*** Error code 1
make: Fatal error: Command failed for target `PGE.pbc'
Current working directory /home/doughera/src/parrot/parrot-andy/compilers/pge
*** Error code 1
make: Fatal error: Command failed for target `compilers.dummy'

Not surprisingly, punie doesn't work:

    $ cd languages/punie; make
    ../../parrot ../../compilers/pge/pgc.pir --output=lib/punie_grammar_gen.pir 
lib/punie.pg
    Couldn't find file 'PGE.pbc'
    current instr.: 'parrot;PGE::P6Grammar::Compiler;__onload' pc 22 
(runtime/parrot/library/PGE/P6Grammar.pir:71)
    called from Sub 'main' pc 3 (../../compilers/pge/pgc.pir:48)
    *** Error code 1
    make: Fatal error: Command failed for target `lib/PunieGrammar.pbc'

All of which looks vaguely similar to the last time I tried to get
anywhere with parrot, though I could have guessed wrong in the patch
above.

So anyway, go ahead and close the ticket.

-- 
    Andy Dougherty              [EMAIL PROTECTED]

Reply via email to