Announce: Rakudo Perl 6 development release #19 ("Chicago")

Reini Urban rurban at x-ray.at
Thu Jul 23 14:15:16 UTC 2009


Following up on the parrot-1.4.0 release check on cygwin the release errors are
still not being touched.

rakudo is still not being able to be built without a parrot build_dir.
Building with installed parrot is unsupported, which means creating a
package which is reproducible is
impossible. Distros which do not have the policy to be reproducible to
create binary packages from the src might have more luck.

parrot's dynpmc.pl still does not work being installed as it relies on
the build_dir
($PMC2C, compile_cmd)
...
but wait, time passes,
...
pmc2c.pl is so horribly broken that I give up now.

The updates to the early patches I posted on 2009-03 and 2009-04 are below:

Remark: parrot still decides to leave the installed vtable.tbl at
/usr/src/parrot/1.4.0/vtable.tbl and not in
/usr/lib/parrot/1.4.0/src/vtable.tbl the
gen_objectref_pmc.pl logic is ugly.

$ make
cd src/pmc && /usr/bin/perl
/usr/lib/parrot/1.4.0/tools/build/dynpmc.pl generate perl6str
objectref perl6scalar mutablevar perl6multisub p6invocation p6opaque
p6role
/usr/bin/perl /usr/lib/parrot/1.4.0/tools/build/pmc2c.pl --dump perl6str.pmc
 at /usr/lib/parrot/1.4.0/tools/build/../lib/Parrot/Pmc2c/Parser.pm line 63
        Parrot::Pmc2c::Parser::parse_pmc('Parrot::Pmc2c::Pmc2cMain=HASH(0x101910f0)',
'default.pmc') called at
/usr/lib/parrot/1.4.0/tools/build/../lib/Parrot/Pmc2c/Dumper.pm line
47
        Parrot::Pmc2c::Dumper::dump_pmc('Parrot::Pmc2c::Pmc2cMain=HASH(0x101910f0)')
called at /usr/lib/parrot/1.4.0/tools/build/pmc2c.pl line 51
cannot find file 'default.pmc' in path '.',
'/usr/lib/parrot/1.4.0/tools/build/../..',
'/usr/lib/parrot/1.4.0/tools/build/../../src/pmc',
'/usr/lib/parrot/1.4.0/tools/build/../../src/dynpmc' at
/usr/lib/parrot/1.4.0/tools/build/../lib/Parrot/Pmc2c/Pmc2cMain.pm
line 244.
pmc2c dump failed (512)
make: *** [src/pmc/perl6_group.dll] Error 2

This would work in my previous layout suggestion for srcdir.

--- origsrc/rakudo-2009-07/Configure.pl	2009-06-19 14:43:58.000000000 +0200
+++ src/rakudo-2009-07/Configure.pl	2009-07-23 15:15:03.468750000 +0200
@@ -107,6 +107,16 @@ sub read_parrot_config {
             last if %config;
         }
     }
+    # installed logic:
+    my $installed = $config{build_dir} ne $config{prefix};
+    $config{parrotlib_dir} = $installed ? $config{libdir}.$config{versiondir}
+                                        : $config{build_dir}.'/runtime/parrot';
+    $config{parrotbin_dir} = $installed ? $config{bindir}
+                                        : $config{build_dir};
+    $config{compilers_dir} = $installed ? $config{parrotlib_dir}.'/languages'
+                                        : $config{parrotlib_dir}.'/compilers';
+    $config{perl5lib_dir}  = $installed ? $config{parrotlib_dir}.'/tools'
+                                        : $config{parrotlib_dir};
     return %config;
 }

@@ -117,7 +127,7 @@ sub create_makefile {

     my $maketext = slurp( 'build/Makefile.in' );

-    $config{'win32_libparrot_copy'} = $^O eq 'MSWin32' ? 'copy
$(BUILD_DIR)\libparrot.dll .' : '';
+    $config{'win32_libparrot_copy'} = $^O eq 'MSWin32' ? 'copy
$(BUILD_DIR)\libparrot.dll .' : '@echo ""';
     $maketext =~ s/@(\w+)@/$config{$1}/g;
     if ($^O eq 'MSWin32') {
         $maketext =~ s{/}{\\}g;
--- origsrc/rakudo-2009-07/build/Makefile.in	2009-07-23 09:03:29.000000000 +0200
+++ src/rakudo-2009-07/build/Makefile.in	2009-07-23 15:19:46.906250000 +0200
@@ -11,25 +11,35 @@ O             = @o@
 EXE           = @exe@
 PERL          = @perl@
 RM_F          = @rm_f@
+MKPATH        = @mkpath@
+CP            = @cp@
 HAS_ICU       = @has_icu@

 # Various paths
-PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
-PERL6GRAMMAR  = $(BUILD_DIR)/runtime/parrot/library/PGE/Perl6Grammar.pbc
-NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+LIB_DIR       = @parrotlib_dir@
+BIN_DIR       = @parrotbin_dir@
+COMPILERS_DIR = @compilers_dir@
+PERL5LIB_DIR  = @perl5lib_dir@
+MANDIR        = @mandir@
+DOC_DIR       = @doc_dir@
+
+PARROT_DYNEXT = $(LIB_DIR)/dynext
+PERL6GRAMMAR  = $(LIB_DIR)/library/PGE/Perl6Grammar.pbc
+NQP           = $(COMPILERS_DIR)/nqp/nqp.pbc
+PCT           = $(LIB_DIR)/library/PCT.pbc
 PMC_DIR       = src/pmc
 OPSDIR        = src/ops
 OPSLIB        = perl6
 OPS_FILE      = src/ops/perl6.ops

 # Setup some commands
-PARROT        = $(BUILD_DIR)/parrot$(EXE)
+PARROT        = $(BIN_DIR)/parrot$(EXE)
 CAT           = $(PERL) -MExtUtils::Command -e cat
-BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
-BUILD_DYNOPS  = $(PERL) $(BUILD_DIR)/tools/build/dynoplibs.pl
-RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
-PBC_TO_EXE    = $(BUILD_DIR)/pbc_to_exe$(EXE)
+BUILD_DYNPMC  = $(PERL) $(LIB_DIR)/tools/build/dynpmc.pl
+BUILD_DYNOPS  = $(PERL) $(LIB_DIR)/tools/build/dynoplibs.pl
+RECONFIGURE   = $(PERL) $(LIB_DIR)/tools/dev/reconfigure.pl
+PBC_TO_EXE    = $(BIN_DIR)/pbc_to_exe$(EXE)
+POD2MAN       = @pod2man@

 SOURCES = perl6.pir \
   src/gen_grammar.pir \
@@ -142,6 +152,8 @@ PMC_SOURCES = $(PMC_DIR)/perl6str.pmc $(

 PERL6_GROUP = $(PMC_DIR)/perl6_group$(LOAD_EXT)

+DOCS = README CREDITS LICENSE docs/*
+
 CLEANUPS = \
   perl6.pbc \
   perl6.c \
@@ -235,7 +247,7 @@ src/ops/perl6_ops$(LOAD_EXT) : $(PARROT)
 	@cd $(OPSDIR) && $(BUILD_DYNOPS) copy
"--destination=$(PARROT_DYNEXT)" $(OPSLIB)

 $(PMC_DIR)/objectref.pmc : $(PMC_DIR)/objectref_pmc.template
build/gen_objectref_pmc.pl
-	$(PERL) -I$(BUILD_DIR)/lib build/gen_objectref_pmc.pl
$(PMC_DIR)/objectref_pmc.template \
+	$(PERL) -I$(PERL5LIB_DIR)/lib build/gen_objectref_pmc.pl
$(PMC_DIR)/objectref_pmc.template \
 		$(PMC_DIR)/objectref.pmc


@@ -298,6 +310,30 @@ realclean: clean

 testclean:

+# install
+installable_perl6$(EXE): perl6.pbc
+	$(PBC_TO_EXE) perl6.pbc --install
+
+installable : installable_perl6 at exe@ $(PERL6_GROUP) perl6.pbc
+	$(MKPATH) $(COMPILERS_DIR)/perl6
+	$(CP) perl6.pbc $(COMPILERS_DIR)/perl6/perl6.pbc
+	@cd $(PMC_DIR) && $(BUILD_DYNPMC) copy
"--destination=$(PARROT_DYNEXT)" $(PMCS)
+	@cd $(OPSDIR)  && $(BUILD_DYNOPS) copy
"--destination=$(PARROT_DYNEXT)" $(OPSLIB)
+
+install : installable
+	$(MKPATH) $(DESTDIR)$(BIN_DIR)
+	$(CP) installable_perl6 at exe@ $(DESTDIR)$(BIN_DIR)/rakudo at exe@
+	cd $(DESTDIR)$(BIN_DIR) && ln -s rakudo at exe@ parrot-perl6 && ln -s
rakudo at exe@ perl6
+	$(MKPATH) $(DESTDIR)$(COMPILERS_DIR)/perl6
+	$(CP) perl6.pbc $(DESTDIR)$(COMPILERS_DIR)/perl6/perl6.pbc
+	$(MKPATH) $(DESTDIR)$(LIB_DIR)/dynext
+	@cd $(PMC_DIR) && $(BUILD_DYNPMC) copy
"--destination=$(DESTDIR)$(LIB_DIR)/dynext" $(PMCS)
+	@cd $(OPSDIR)  && $(BUILD_DYNOPS) copy
"--destination=$(DESTDIR)$(LIB_DIR)/dynext" $(OPSLIB)
+	$(MKPATH) $(DESTDIR)$(DOC_DIR)/rakudo
+	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/rakudo
+	$(MKPATH) $(DESTDIR)$(MANDIR)/man1
+	$(POD2MAN) docs/running.pod > $(DESTDIR)$(MANDIR)/man1/perl6.1
+	$(POD2MAN) docs/running.pod > $(DESTDIR)$(MANDIR)/man1/rakudo.1

 ##  miscellaneous targets
 # a listing of all targets meant to be called by users
@@ -341,7 +377,6 @@ Makefile: build/Makefile.in build/PARROT

 config:
 	$(PERL) Configure.pl
-	

 ##  Parrot targets
 parrot: build/PARROT_REVISION build/gen_parrot.pl
--- origsrc/rakudo-2009-07/build/gen_objectref_pmc.pl	2009-03-27
15:04:39.000000000 +0100
+++ src/rakudo-2009-07/build/gen_objectref_pmc.pl	2009-07-23
15:24:50.515625000 +0200
@@ -38,7 +38,14 @@ unless (-e $template) {
 my $template_contents = slurp($template);

 # Read v-tables list and get list of functions from it.
-my $vtable_list = slurp($PConfig{build_dir}.'/src/vtable.tbl');
+my $vtable_tbl;
+if ($PConfig{build_dir} ne $PConfig{prefix}) {
+  $PConfig{build_dir} = $PConfig{libdir}.$PConfig{versiondir};
+  $vtable_tbl = $PConfig{build_dir}.'/vtable.tbl';
+} else {
+  $vtable_tbl = $PConfig{build_dir}.'/src/vtable.tbl';
+}
+my $vtable_list = slurp($vtable_tbl);
 my @all_vtables = extract_matches($vtable_list, '(\w+)\\(');

 # Find v-table methods defined in the ObjectRef template and exclude





2009/7/23 Moritz Lenz <moritz at casella.faui2k3.org>:
> On behalf of the Rakudo development team, I'm pleased to announce
> the July 2009 development release of Rakudo Perl #19 "Chicago".
> Rakudo is an implementation of Perl 6 on the Parrot Virtual Machine [1].
...


-- 
Reini Urban
http://phpwiki.org/           http://murbreak.at/


More information about the parrot-dev mailing list