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.