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                                   m...@suse.de
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

Reply via email to