Hi,
I'm trying to build rakudo with an installed parrot. This means
that the `parrot_config build_dir` points to a directory that
doesn't exist.
After patching the Makefile and gen_objectref_pmc.pl the build
works. Are there any plans to make this a supported build
method?
(Also, Rakudo currently uses Parrot's dynpmc.pl and dynoplibs.pl.
Both scripts seem to be deprecated.)
(Plus, I had to do some Parrot patching as well. See my mail
on the parrot-dev list.)
Cheers,
Michael.
--
Michael Schroeder [email protected]
SUSE LINUX Products GmbH, GF Markus Rex, HRB 16746 AG Nuernberg
main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);}
--- ./build/Makefile.in.orig 2009-04-07 14:50:47.000000000 +0000
+++ ./build/Makefile.in 2009-04-08 12:54:26.000000000 +0000
@@ -5,7 +5,7 @@
PARROT_ARGS =
# values from parrot_config
-BUILD_DIR = @build_dir@
+BUILD_DIR = $(shell parrot_config libdir)$(shell parrot_config versiondir)
LOAD_EXT = @load_ext@
O = @o@
EXE = @exe@
@@ -15,22 +15,22 @@ RM_F = @rm_f@
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
+PARROT_DYNEXT = $(shell pwd)/dynext
+PERL6GRAMMAR = $(BUILD_DIR)/library/PGE/Perl6Grammar.pbc
+NQP = $(BUILD_DIR)/languages/nqp/nqp.pbc
+PCT = $(BUILD_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 = /usr/bin/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)
+PBC_TO_EXE = pbc_to_exe$(EXE)
SOURCES = perl6.pir \
src/gen_grammar.pir \
@@ -171,6 +171,7 @@ xmas: perl6$(EXE)
## targets for building a standalone perl6.
perl6$(EXE): perl6.pbc
$(PBC_TO_EXE) perl6.pbc
+ $(PBC_TO_EXE) perl6.pbc --install
@win32_libparrot_copy@
# the Perl 6 compiler
@@ -208,16 +209,18 @@ $(PERL6_GROUP): $(PARROT) $(PMC_SOURCES)
cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+ mkdir -p $(PARROT_DYNEXT)
cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
src/ops/perl6_ops$(LOAD_EXT) : $(PARROT) $(OPS_FILE)
@cd $(OPSDIR) && $(BUILD_DYNOPS) generate $(OPSLIB)
@cd $(OPSDIR) && $(BUILD_DYNOPS) compile $(OPSLIB)
@cd $(OPSDIR) && $(BUILD_DYNOPS) linklibs $(OPSLIB)
+ @mkdir -p $(PARROT_DYNEXT)
@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$(BUILD_DIR)/tools/lib build/gen_objectref_pmc.pl $(PMC_DIR)/objectref_pmc.template \
$(PMC_DIR)/objectref.pmc
--- ./build/gen_objectref_pmc.pl.orig 2009-04-07 15:04:14.000000000 +0000
+++ ./build/gen_objectref_pmc.pl 2009-04-08 10:41:16.000000000 +0000
@@ -38,7 +38,7 @@ 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_list = slurp($PConfig{libdir}.$PConfig{versiondir}.'/src/vtable.tbl');
my @all_vtables = extract_matches($vtable_list, '(\w+)\\(');
# Find v-table methods defined in the ObjectRef template and exclude