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