Skip to content

Commit

Permalink
BUILD: Fix RUN_RAKUDO to use the dummy Rakudo home
Browse files Browse the repository at this point in the history
The command to execute Rakudo during the early stages of the build process
needs to have a Rakudo home set to an empty dummy directory to make sure it
does not try to access the installation directory. If it would, it would
create directories out side of the build directory during the compilation
phase and result in failures if a previous installation is already located
in the install dir. The `--rakudo-home` Configure parameter doesn't exist
(any more?). Replace it with a perl one-liner that sets the Rakudo home via
an environment variable.
  • Loading branch information
patrickbkr authored and PatZim committed Sep 19, 2020
1 parent d40586d commit a56ce83
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 9 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Expand Up @@ -147,3 +147,6 @@ t/03-jvm/*.class
/zef
.DS_Store
node_modules/*
rakudo-m-early-build
rakudo-js-build
rakudo-j-build
2 changes: 1 addition & 1 deletion tools/templates/Makefile-backend-common.in
Expand Up @@ -195,7 +195,7 @@ check_@backend_abbr@_nqp_version: @@script(check-nqp-version.pl)@@

@comp_rr(@bsm(RAKUDO_BOOTSTRAP_@ucspec@)@: @use_prereqs(@nfp(@bpm(BUILD_DIR)@/BOOTSTRAP/v6@lcspec@.nqp)@)@ @bsm(RAKUDO_M)@)@

@bsm(SETTING_@ucspec@)@: @bsm(RAKUDO)@ @bsm(RAKUDO_BOOTSTRAP_@ucspec@)@ @bpm(CORE_@ucspec@_SOURCES)@
@bsm(SETTING_@ucspec@)@: @bsm(RAKUDO)@ @bsm(RAKUDO_BOOTSTRAP_@ucspec@)@ @bpm(CORE_@ucspec@_SOURCES)@ @bpm(RUN_RAKUDO_SCRIPT)@
@echo(+++ Compiling $@)@
$(NOECHO)$(CONFIGURE) --expand @shquot(@ctx_template(core_sources)@)@ \
--out @nfpq(@bpm(BUILD_DIR)@/core_sources.@lcspec@)@ \
Expand Down
19 changes: 15 additions & 4 deletions tools/templates/js/Makefile.in
@@ -1,13 +1,15 @@

@bpv(NQP)@ = @js_nqp@
@bpv(RUNTIME)@ = @nqp::libdir@@nfp(/nqp-js-on-js/node_modules/nqp-runtime)@
@bpv(NQP_BASE_FLAGS)@ = --nqp-runtime @bpm(RUNTIME)@ --perl6-runtime @perl6_runtime@ --libpath "@bpm(BLIB)@|||@nqp::libdir@@nfp(/nqp-js-on-js/)@"
@bpv(NQP_FLAGS)@ = @bpm(NQP_BASE_FLAGS)@ --substagestats --stagestats --source-map
@bpv(NQP_RUNTIME)@ = @nfp(@nqp::libdir@/nqp-js-on-js/node_modules/nqp-runtime)@
@bpv(PERL6_RUNTIME)@ = @perl6_runtime@
@bpv(NQP_FLAGS)@ = --nqp-runtime @bpm(RUNTIME)@ --perl6-runtime @perl6_runtime@ --libpath "@bpm(BLIB)@|||@nqp::libdir@@nfp(/nqp-js-on-js/)@" --source-map --substagestats --stagestats
@bpv(NQP_FLAGS_EXTRA)@ = --execname @bpm(RUNNER)@ --shebang
@bpv(RUN_RAKUDO)@ = node --max-old-space-size=8192 rakudo.js @bpm(NQP_BASE_FLAGS)@ --source-map --rakudo-home=@nfpq($(BASE_DIR)/gen/build_rakudo_home)@
@bpv(RUN_RAKUDO_SCRIPT)@ = rakudo-js-build
@bpv(RUN_RAKUDO)@ = @shquot(@perl@)@ @bpm(RUN_RAKUDO_SCRIPT)@

@bpv(CLEANUPS)@ = \
@bsm(RAKUDO)@ \
@bpm(RUN_RAKUDO_SCRIPT)@ \
@nfp(@base_dir@/*.js.map)@ \
@nfp(@bpm(BLIB)@/*.js.map)@ \
@bpm(BLIB_RAKUDO)@/load-compiler.js \
Expand All @@ -27,6 +29,15 @@
@nfp(@bpm(BLIB)@/load-compiler.js)@: @nfp(src/vm/js/load-compiler.nqp)@ @bsm(RAKUDO_G)@ @bsm(RAKUDO_A)@ @bsm(RAKUDO_C)@ @bsm(RAKUDO_P)@
@$(JS_NQP) $(JS_NQP_FLAGS) --target=js --output=$@ $<

@bpm(RUN_RAKUDO_SCRIPT)@: @@nfp(@template(@backend_subdir@/rakudo-js-build.in)@)@@
$(NOECHO)$(RM_F) @q(@bpm(RUN_RAKUDO_SCRIPT)@)@
$(NOECHO)$(CONFIGURE) --expand @nfpq(@backend_subdir@/@bpm(RUN_RAKUDO_SCRIPT)@)@ --out @bpm(RUN_RAKUDO_SCRIPT)@ \
--set-var=base_dir=@q(@base_dir@)@ \
--set-var=nqp_runtime=@q(@bpm(NQP_RUNTIME)@)@ \
--set-var=perl6_runtime=@q(@bpm(PERL6_RUNTIME)@)@ \
--set-var=libpath=@q(@bpm(BLIB)@|||@nfp(@nqp::libdir@/nqp-js-on-js/)@)@ \
--set-var=nqp_base_flags=@sh_quot(@bpm(NQP_BASE_FLAGS)@)@

@bpm(RUNNER)@:
@echo(+++ Creating JS runner)@
@noehcho@$(PERL5) @script(create-js-runner.pl)@
Expand Down
5 changes: 5 additions & 0 deletions tools/templates/js/rakudo-js-build.in
@@ -0,0 +1,5 @@
$ENV{RAKUDO_HOME} = '@sq_escape(@base_dir@/gen/build_rakudo_home)@';

my $exit = system {'node'} ('node', '--max-old-space-size=8192', 'rakudo.js', '--nqp-runtime', '@sq_escape(@nqp_runtime@)@', '--perl6-runtime', '@sq_escape(@perl6_runtime@)@', '--libpath', '@sq_escape(@libpath@)@', '--source-map', @ARGV);

exit($exit >> 8);
11 changes: 10 additions & 1 deletion tools/templates/jvm/Makefile.in
Expand Up @@ -5,7 +5,8 @@ JAR = jar
NQP_PREFIX = @nqp_prefix@
@bpv(NQP)@ = @shquot(@j_nqp@)@
@bpv(NQP_RR)@ = $(JAVA) -Xss1m -Xms500m -Xmx3000m -cp @q(@nfp(./blib)@@cpsep@@nop($(BLD_NQP_JARS))@@cpsep@rakudo-runtime.jar@cpsep@@nop($(SYSROOT))@@abs2rel(@nqp_classpath@)@)@ nqp
@bpv(RUN_RAKUDO)@ = $(JAVA) -Xss1m -Xms500m -Xmx3000m -cp @q(@nfp(./blib)@@cpsep@@nop($(BLD_NQP_JARS))@@cpsep@rakudo-runtime.jar@cpsep@rakudo.jar@cpsep@@nop($(SYSROOT))@@abs2rel(@nqp_classpath@)@)@ perl6 --rakudo-home=@nfpq($(BASE_DIR)/gen/build_rakudo_home)@
@bpv(RUN_RAKUDO_SCRIPT)@ = rakudo-j-build
@bpv(RUN_RAKUDO)@ = @shquot(@perl@)@ @bpm(RUN_RAKUDO_SCRIPT)@

@bpv(DEBUG_RUNNER)@ = rakudo-debug-@backend_abbr@@bpm(RUNNER_SUFFIX)@

Expand All @@ -24,6 +25,7 @@ RUNTIME_JAR = rakudo-runtime.jar

@bpv(CLEANUPS)@ = \
$(RUNTIME_JAR) \
@bpm(RUN_RAKUDO_SCRIPT)@ \
rakudo-eval-server \
perl6-eval-server \
rakudo-jdb-server \
Expand All @@ -47,6 +49,13 @@ $(RUNTIME_JAR): $(RUNTIME_JAVAS)
$(NOECHO)$(JAVAC) --release 9 -cp @q($(BLD_NQP_JARS))@ -g -d bin -encoding UTF8 $(RUNTIME_JAVAS)
$(NOECHO)$(JAR) cf0 rakudo-runtime.jar -C bin@slash@ .

@bpm(RUN_RAKUDO_SCRIPT)@: @@nfp(@template(@backend_subdir@/rakudo-j-build.in)@)@@
$(NOECHO)$(RM_F) @q(@bpm(RUN_RAKUDO_SCRIPT)@)@
$(NOECHO)$(CONFIGURE) --expand @nfpq(@backend_subdir@/@bpm(RUN_RAKUDO_SCRIPT)@)@ --out @bpm(RUN_RAKUDO_SCRIPT)@ \
--set-var=base_dir=@q($(BASE_DIR))@ \
--set-var=java=$(JAVA) \
--set-var=classpath=@q(@nfp(./blib)@@cpsep@@nop($(BLD_NQP_JARS))@@cpsep@rakudo-runtime.jar@cpsep@rakudo.jar@cpsep@@nop($(SYSROOT))@@abs2rel(@nqp_classpath@)@)@

$(J_RUNNER): @@script(create-jvm-runner.pl)@@
@echo(+++ Setting up $@)@
$(NOECHO)$(PERL5) @shquot(@script(create-jvm-runner.pl)@)@ dev @q($(BASE_DIR))@ . . @q(@nqp_home@)@ @q(@static_nqp_home@)@ @q(@static_rakudo_home@)@ @q($(NQP_JARS))@
Expand Down
5 changes: 5 additions & 0 deletions tools/templates/jvm/rakudo-j-build.in
@@ -0,0 +1,5 @@
$ENV{RAKUDO_HOME} = '@sq_escape(@base_dir@/gen/build_rakudo_home)@';

my $exit = system {'@java@'} ('@java@', '-Xss1m', '-Xms500m', '-Xmx3000m', '-cp', '@sq_escape(@classpath@)@', 'perl6', @ARGV);

exit($exit >> 8);
16 changes: 13 additions & 3 deletions tools/templates/moar/Makefile.in
Expand Up @@ -11,7 +11,8 @@ MOAR_PREFIX = @nfp(@moar::prefix@)@
MOAR = @nfpq(@moar::bindir@/moar@moar::exe@)@
@bpv(NQP)@ = @nfpq(@m_nqp@)@
@bpv(NQP_RR)@ = @bpm(NQP)@
@bpv(RUN_RAKUDO)@ = $(MOAR) --libpath=@nfpq($(BASE_DIR)/blib)@ --libpath=@q(@bpm(NQP_LIBDIR)@)@ @bsm(RAKUDO)@ --rakudo-home=@nfpq($(BASE_DIR)/gen/build_rakudo_home)@
@bpv(RUN_RAKUDO_SCRIPT)@ = rakudo-m-early-build
@bpv(RUN_RAKUDO)@ = @shquot(@perl@)@ @bpm(RUN_RAKUDO_SCRIPT)@

@bpv(RUNNER_SUFFIX)@ = @moar::exe@

Expand Down Expand Up @@ -60,6 +61,7 @@ R_SETTING_MOAR = RESTRICTED.setting.moarvm

@bpv(CLEANUPS)@ = \
$(R_SETTING_MOAR) \
@bpm(RUN_RAKUDO_SCRIPT)@ \
inst-rakudo-m@moar::obj@ \
inst-rakudo-debug-m@moar::obj@ \
inst-rakudo@moar::obj@ \
Expand Down Expand Up @@ -99,7 +101,7 @@ R_SETTING_MOAR = RESTRICTED.setting.moarvm
$(NOECHO)@bpm(CC)@ @moar::ccswitch@ @moar::ccshared@ @bpm(CFLAGS)@ @bpm(MOAR_INC_PATHS)@ @moar::ccout@@bpm(RAKUDO_OPS_OBJ)@ @bpm(RAKUDO_OPS_DLL_SRC)@
$(NOECHO)@bpm(LD)@ @moar::ldswitch@ @moar::lddir@"@moar::libdir@" @moar::ldshared@ @bpm(LDFLAGS)@ @bpm(LDLIBS)@ @moar::ldout@@bpm(RAKUDO_OPS_DLL)@ @bpm(RAKUDO_OPS_OBJ)@ @moar_lib@

$(R_SETTING_MOAR): @bsm(RAKUDO)@@for_specs( @bsm(SETTING_@ucspec@)@)@ $(R_SETTING_SRC)
$(R_SETTING_MOAR): @bsm(RAKUDO)@@for_specs( @bsm(SETTING_@ucspec@)@)@ $(R_SETTING_SRC) @bpm(RUN_RAKUDO_SCRIPT)@
$(NOECHO)@bpm(RUN_RAKUDO)@ --target=@btarget@ --ll-exception --output=$(R_SETTING_MOAR) $(R_SETTING_SRC)

@backend_prefix@-runner-default: @bpm(INST_RAKUDO)@ @bpm(INST_RAKUDO_DEBUG)@
Expand All @@ -115,6 +117,14 @@ $(R_SETTING_MOAR): @bsm(RAKUDO)@@for_specs( @bsm(SETTING_@ucspec@)@)@ $(R_SETTIN
-$(NOECHO)$(CHMOD) 755 $@
)@)@)@

@bpm(RUN_RAKUDO_SCRIPT)@: @@nfp(@template(@backend_subdir@/rakudo-m-early-build.in)@)@@
$(NOECHO)$(RM_F) @q(@bpm(RUN_RAKUDO_SCRIPT)@)@
$(NOECHO)$(CONFIGURE) --expand @nfpq(@backend_subdir@/@bpm(RUN_RAKUDO_SCRIPT)@)@ --out @bpm(RUN_RAKUDO_SCRIPT)@ \
--set-var=base_dir=@nfpq(@base_dir@)@ \
--set-var=moar=$(MOAR) \
--set-var=nqp_libdir=@nfpq(@nqp::libdir@)@ \
--set-var=rakudo=@bsm(RAKUDO)@

@bpm(RUNNER)@: @@configure_script@@ @bsm(RAKUDO)@@for_specs( @bsm(SETTING_@ucspec@)@)@ @@nfp(@template(@backend_subdir@/rakudo-m-build.c.in)@)@@ @@nfp(@template(@backend_subdir@/rakudo-m-build.c.windows)@)@@
@echo(+++ Generating $@)@
$(NOECHO)$(RM_F) @q(@bpm(RUNNER)@)@
Expand Down Expand Up @@ -244,7 +254,7 @@ manifest:
@nowcho@find @nfp(t/spec)@ -type f | grep -v '\.git' >>MANIFEST
@nowcho@sort -u -o MANIFEST MANIFEST

release: manifest
release: manifest @bpm(RUN_RAKUDO_SCRIPT)@
$(NOECHO)[ -n "$(VERSION)" ] || ( echo "\nTry 'make release VERSION=yyyy.mm'\n\n"; exit 1 )
@echo(+++ Releasing $(VERSION))@
$(NOECHO)bash -c '[ "$$(cat VERSION)" == "$(VERSION)" ] || ( echo -e "\nVersion on command line and in VERSION file differ\n"; exit 1 )'
Expand Down
5 changes: 5 additions & 0 deletions tools/templates/moar/rakudo-m-early-build.in
@@ -0,0 +1,5 @@
$ENV{RAKUDO_HOME} = '@sq_escape(@base_dir@/gen/build_rakudo_home)@';

my $exit = system {'@sq_escape(@moar@)@'} ('@sq_escape(@moar@)@', '--libpath=@sq_escape(@base_dir@/blib)@', '--libpath=@sq_escape(@nqp_libdir@)@', '@sq_escape(@rakudo@)@', @ARGV);

exit($exit >> 8);

0 comments on commit a56ce83

Please sign in to comment.