Nicholas Clark: # On Sat, Mar 30, 2002 at 02:12:46AM -0800, Brent Dax wrote: # # > If you have a Unix box and ten spare minutes, please apply this to a # > fresh checkout of Parrot, run 'make test', and tell me how well it # > works. # # FreeBSD did not enjoy it: # # 0 Patch did not apply cleanly: # # Patching file Makefile.in using Plan A... # Hunk #1 succeeded at 112. # Hunk #2 failed at 143.
Weird. Line endings, perhaps. # I thought I managed to apply that bit by hand # # 1: use warnings; is not 5.005_03 safe: # # $ make test # /usr/bin/perl vtable_h.pl # /usr/bin/perl make_vtable_ops.pl > vtable.ops # /usr/bin/perl pccw.pl --args="C" core_ops.c core.ops io.ops # rx.ops vtable.ops # Can't locate warnings.pm in @INC (@INC contains: # /usr/libdata/perl/5.00503/mach /usr/libdata/perl/5.00503 # /usr/local/lib/perl5/site_perl/5.005/i386-freebsd # /usr/local/lib/perl5/site_perl/5.005 .) at pccw.pl line 8. # BEGIN failed--compilation aborted at pccw.pl line 8. # *** Error code 2 D'oh! Fortunately, that is the only 5.6-ism (AFAIK). # So I stopped using 5.005_03 and switched to 5.7.3. After a # reconfigure: # # $ make test # /usr/local/bin/perl5.7.3 vtable_h.pl # /usr/local/bin/perl5.7.3 pccw.pl --args="C" core_ops.c # core.ops io.ops rx.ops vtable.ops # Use of uninitialized value in hash element at pccw.pl line 35. # cc -o --args=C -Wl,-E -L/usr/local/lib core_ops.c core.ops # io.ops rx.ops vtable.ops # cc: core_ops.c: No such file or directory # /usr/local/bin/perl5.7.3 pccw.pl --args="CPrederef" # core_ops_prederef.c core.ops io.ops rx.ops vtable.ops # Use of uninitialized value in hash element at pccw.pl line 35. # cc: core_ops_prederef.c: No such file or directory # # cc -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing # -I/usr/local/include -Wall -Wstrict-prototypes # -Wmissing-prototypes -Winline -Wshadow -Wpointer-arith # -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion # -Waggregate-return -Winline -W -Wno-unused -Wsign-compare # -I./include -o interpreter.o -c interpreter.c # interpreter.c:15: parrot/oplib/core_ops.h: No such file or directory # # <more errors about core_ops.c being missing, but the build # doesn't fail. Why?) A misunderstading about system()--apparently it doesn't set $?. # cc -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing # -I/usr/local/include -Wall -Wstrict-prototypes # -Wmissing-prototypes -Winline -Wshadow -Wpointer-arith # -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion # -Waggregate-return -Winline -W -Wno-unused -Wsign-compare # -I./include -o jit.o -c jit.c # In file included from jit.c:8: # include/parrot/jit.h:30: syntax error before `build_asm' # include/parrot/jit.h:30: warning: type defaults to `int' in # declaration of `build_asm' # include/parrot/jit.h:30: warning: data definition has no type # or storage class # jit.c:31: syntax error before `build_asm' # jit.c:33: warning: return-type defaults to `int' # jit.c: In function `build_asm': # jit.c:230: warning: cast discards qualifiers from pointer target type # jit.c:233: warning: cast discards qualifiers from pointer target type # jit.c:510: `jit_f' undeclared (first use in this function) # jit.c:510: (Each undeclared identifier is reported only once # jit.c:510: for each function it appears in.) # jit.c:510: syntax error before `arena_start' # jit.c:511: warning: control reaches end of non-void function # # cc -o parrot -Wl,-E -L/usr/local/lib exceptions.o # global_setup.o interpreter.o parrot.o register.o core_ops.o # core_ops_prederef.o memory.o packfile.o stacks.o string.o # encoding.o chartype.o runops_cores.o trace.o pmc.o key.o # platform.o jit.o resources.o rx.o rxstacks.o embed.o # warnings.o misc.o io/io.o io/io_stdio.o io/io_unix.o # io/io_win32.o classes/default.o classes/array.o # classes/perlint.o classes/perlstring.o classes/perlnum.o # classes/perlarray.o classes/perlundef.o classes/perlhash.o # classes/parrotpointer.o classes/intqueue.o # encodings/singlebyte.o encodings/utf8.o encodings/utf16.o # encodings/utf32.o chartypes/unicode.o chartypes/usascii.o # test_main.o -lm -lc -lcrypt -lutil # cc: interpreter.o: No such file or directory # cc: core_ops.o: No such file or directory # cc: core_ops_prederef.o: No such file or directory # cc: jit.o: No such file or directory # /usr/local/bin/perl5.7.3 t/harness # # the tests start bad: # # t/op/basic..........NOK 2# Failed test (t/op/basic.t at # line 11) # # got: '' # # expected: '1' # t/op/basic..........NOK 3# Failed test (t/op/basic.t at # line 16) # # got: '' # # expected: 'Parrot flies' # t/op/basic..........NOK 4# Failed test (t/op/basic.t at # line 21) # # got: '' # # expected: 'Parrot flies' # t/op/basic..........NOK 5# Failed test (t/op/basic.t at # line 26) # # got: '' # # expected: 'Parrot flies' # t/op/basic..........NOK 6# Failed test (t/op/basic.t at # line 31) # # got: '' # # expected: '42' # t/op/basic..........NOK 7# Failed test (t/op/basic.t at # line 40) # # got: '' # # expected: '42 # # 1234 # # ' # t/op/basic..........NOK 8# Failed test (t/op/basic.t at # line 72) # # got: '' # # expected: 'start # # lab 1 # # done # # ' # # Looks like you failed 7 tests of 8. # t/op/basic..........dubious # # Test returned status 7 (wstat 1792, 0x700) # DIED. FAILED tests 2-8 # Failed 7/8 tests, 12.50% okay # # # Not sure what wstat 0x700 is. # # $ kill -l # 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL # 5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE # 9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS # 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG # 17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD # 21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU # 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH # 29) SIGINFO 30) SIGUSR1 31) SIGUSR2 # # so is that an exit on signal 7? No, that means that seven tests failed. # The summary is: # # Failed Test Stat Wstat Total Fail Failed List of Failed # -------------------------------------------------------------- # ----------------- # t/op/basic.t 7 1792 8 7 87.50% 2-8 # t/op/bitwise.t 15 3840 15 15 100.00% 1-15 # t/op/debuginfo.t 4 1024 4 4 100.00% 1-4 # t/op/hacks.t 1 256 1 1 100.00% 1 # t/op/ifunless.t 6 1536 6 6 100.00% 1-6 # t/op/integer.t 32 8192 32 32 100.00% 1-32 # t/op/interp.t 1 256 1 1 100.00% 1 # t/op/macro.t 8 2048 9 8 88.89% 1-4 6-9 # t/op/number.t 31 7936 31 31 100.00% 1-31 # t/op/rx.t 25 6400 27 25 92.59% 1-16 18-26 # t/op/stacks.t 17 4352 18 17 94.44% 1-17 # t/op/string.t 64 16384 64 64 100.00% 1-64 # t/op/time.t 4 1024 4 4 100.00% 1-4 # t/op/trans.t 18 4608 18 18 100.00% 1-18 # t/pmc/perlstring.t 7 1792 8 7 87.50% 1-4 6-8 # t/pmc/pmc.t 55 14080 56 55 98.21% 1-32 34-56 # 20 subtests skipped. # Failed 16/19 test scripts, 15.79% okay. 295/316 subtests # failed, 6.65% okay. # # # So some tests passed :-) # But most seemed to fail by crashing. Argh. I've attached a new version of pccw.pl; let me know if it works better. --Brent Dax <[EMAIL PROTECTED]> @roles=map {"Parrot $_"} qw(embedding regexen Configure) #define private public --Spotted in a C++ program just before a #include
#!perl -w #Parrot C Compiler Wrapper #Initial version by Brent Dax ([EMAIL PROTECTED]) #Usage: # perl pccw.pl --args="(args)" (destfile) (sourcefiles) use strict; use lib 'lib'; use Parrot::Config; my($args, $destfile, @sourcefiles); if($ARGV[0] =~ /--args="(.*)"/) { $args=$1; shift; } else { $args=""; } ($destfile, @sourcefiles)=@ARGV; my %destmap=( $PConfig{o} => sub { System("$PConfig{cc} $PConfig{ccflags} $PConfig{cc_warn} $PConfig{cc_inc} $args $PConfig{cc_o_out}$destfile -c @sourcefiles") }, $PConfig{exe}||'' => sub { System("$PConfig{ld} $PConfig{ld_out}$destfile $PConfig{ldflags} $args @sourcefiles") }, $PConfig{a}||'.a' => \&handle_library, $PConfig{so}||'.so' => \&handle_shared_lib, '.c' => \&handle_generated_files ); eval { my($extension)=$destfile =~ /(\.\w+)$/; $extension ||= ''; $destmap{$extension}->(); }; if($@) { if($@ =~ /Undefined subroutine/) { print "Don't know how to convert '$sourcefiles[0]' to '$destfile'!\n"; } else { die $@, "\n"; } exit(-1); } exit($?); sub handle_generated_files { if($sourcefiles[0] =~ /ops$/) { system("$^X ops2c.pl $args @sourcefiles"); } elsif($sourcefiles[0] =~ /pmc$/) { system("$^X classes/pmc2c.pl $args @sourcefiles"); } else { print "Don't know how to convert '$sourcefiles[0]' to '$destfile'!\n"; } } sub handle_shared_lib { print "NYI"; } sub handle_library { print "NYI"; } sub System { print "$_[0]\n"; $?=system(@_); }