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