The included patch modifies Parrot::Assembler to open the Parrot::OpLib directory and collect operations from the files in that directory, instead of being hardwired to use only Parrot::OpLib::core. Unfortunately relative paths can't be used because the assembler script runs from different directories.
-- --Jeff <[EMAIL PROTECTED]>
diff -ru parrot/Parrot/Assembler.pm parrot_orig/Parrot/Assembler.pm --- parrot/Parrot/Assembler.pm Sat Nov 3 19:04:08 2001 +++ parrot_orig/Parrot/Assembler.pm Sat Nov 3 22:50:04 2001 @@ -33,7 +33,6 @@ use Getopt::Long; use Parrot::Op; -use Parrot::OpLib::core; #use Parrot::Opcode; @@ -290,10 +289,25 @@ my %opcodes; -foreach my $op (@$Parrot::OpLib::core::ops) { - $opcodes{$op->full_name} = $op; +use Cwd; +cwd()=~m,^(.*)/parrot,; +my $oplib_path = "$1/parrot/Parrot/OpLib"; + +opendir DIR,$oplib_path or + die "Couldn't open $oplib_path"; +my @op_packages = grep { -f "$oplib_path/$_" and !/^\./ } + readdir DIR; +closedir DIR; +s/\.pm// for @op_packages; + +{ no strict 'refs'; + for(@op_packages) { + require "$oplib_path/$_.pm"; + for(@${'Parrot::OpLib::'.$_.'::ops'}) { + $opcodes{$_->full_name}=$_; + } + } } -