From e16e61a89da047d31c12444f70efb40f86f59606 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20B=C3=B6ker?= Date: Fri, 30 Aug 2019 17:52:21 +0200 Subject: [PATCH 1/5] Implement `--perl6-home` and `--nqp-home` forwarding These options allow putting the *-home directories into arbitrary places. --- Configure.pl | 3 +++ tools/lib/NQP/Config/Rakudo.pm | 19 +++++++++++-------- tools/templates/Makefile-backend-common.in | 5 +++-- tools/templates/Makefile-common-macros.in | 2 +- tools/templates/main-version.in | 2 ++ 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/Configure.pl b/Configure.pl index bcd8f56a3f5..641f11a6229 100755 --- a/Configure.pl +++ b/Configure.pl @@ -64,6 +64,7 @@ BEGIN GetOptions( $cfg->options, 'help!', 'prefix=s', 'libdir=s', + 'perl6-home=s', 'nqp-home=s', 'sysroot=s', 'sdkroot=s', 'relocatable', 'backends=s', 'no-clean', 'with-nqp=s', @@ -153,6 +154,8 @@ sub print_help { --prefix= Install files in dir; also look for executables there --libdir= Install architecture-specific files in dir; Perl6 modules included + --nqp-home=dir Directory to install NQP files to + --perl6-home=dir Directory to install Perl 6 files to --relocatable Dynamically locate NQP and Perl6 home dirs instead of statically compiling them in. (On AIX and OpenBSD Rakudo diff --git a/tools/lib/NQP/Config/Rakudo.pm b/tools/lib/NQP/Config/Rakudo.pm index 50ccdb52047..c2f6c79de21 100644 --- a/tools/lib/NQP/Config/Rakudo.pm +++ b/tools/lib/NQP/Config/Rakudo.pm @@ -120,6 +120,7 @@ sub configure_backends { sub configure_refine_vars { my $self = shift; + my $config = $self->{config}; my $nqp_bin = $self->cfg('nqp_default'); if ($nqp_bin) { my ( $vol, $dir, undef ) = File::Spec->splitpath($nqp_bin); @@ -152,6 +153,13 @@ sub configure_refine_vars { } $self->SUPER::configure_refine_vars(@_); + + $config->{perl6_home} = $self->nfp( + File::Spec->rel2abs( + $config->{perl6_home} || + File::Spec->catdir( $config->{'prefix'}, 'share', 'perl6' ) + ) + ); } sub parse_lang_specs { @@ -340,13 +348,8 @@ sub configure_moar_backend { } else { my $qchar = $config->{quote}; - $nqp_config->{static_nqp_home} = - File::Spec->rel2abs( - File::Spec->catdir( $nqp_config->{'nqp::prefix'}, 'share', 'nqp' ) - ); - $nqp_config->{static_perl6_home} = - File::Spec->rel2abs( - File::Spec->catdir( $config->{prefix}, 'share', 'perl6' ) ); + $nqp_config->{static_nqp_home} = $nqp_config->{'nqp::nqp_home'}; + $nqp_config->{static_perl6_home} = $config->{perl6_home}; $nqp_config->{static_nqp_home_define} = '-DSTATIC_NQP_HOME=' . $qchar @@ -661,7 +664,7 @@ sub gen_nqp { # Append only the options we'd like to pass down to NQP's Configure.pl for my $opt ( qw + nqp-home relocatable ignore-errors with-moar> ) { my $opt_str = $self->make_option( $opt, no_quote => 1 ); diff --git a/tools/templates/Makefile-backend-common.in b/tools/templates/Makefile-backend-common.in index f6e97db8b43..323fffe755a 100644 --- a/tools/templates/Makefile-backend-common.in +++ b/tools/templates/Makefile-backend-common.in @@ -193,13 +193,14 @@ check_@backend_abbr@_nqp_version: @@script(check-nqp-version.pl)@@ @backend_prefix@-install:: @backend_prefix@-all @@script(install-core-dist.p6)@@@for_specs( @bsm(SETTING_@ucspec@)@)@ $(MKPATH) @nfpq($(DESTDIR)$(PREFIX)/bin)@ + $(MKPATH) @nfpq($(DESTDIR)$(PERL6_HOME))@ + $(MKPATH) @nfpq(@nop($(DESTDIR))@@bpm(LIBDIR)@)@ $(MKPATH) @nfpq(@nop($(DESTDIR))@@bpm(LIBDIR)@/Perl6)@ $(MKPATH) @nfpq(@nop($(DESTDIR))@@bpm(LIBDIR)@/Perl6/BOOTSTRAP)@ $(MKPATH) @nfpq($(DESTDIR)$(PERL6_HOME)/vendor)@ $(MKPATH) @nfpq($(DESTDIR)$(PERL6_HOME)/site)@ $(MKPATH) @nfpq($(DESTDIR)$(PERL6_HOME)/runtime)@ -@if(backend==moar $(MKPATH) @nfpq($(DESTDIR)$(PERL6_HOME)/lib)@ - $(MKPATH) @nfpq($(DESTDIR)$(PERL6_HOME)/runtime/dynext)@ +@if(backend==moar $(MKPATH) @nfpq($(DESTDIR)$(PERL6_HOME)/runtime/dynext)@ @bpm(RUN_CLEAN_TARGET_FILES)@ @bpm(PERL6_PRECOMPS)@ @nfpq(@nop($(DESTDIR))@@bpm(LIBDIR)@/Perl6)@ @bpm(RUN_CLEAN_TARGET_FILES)@ @bpm(PERL6_BOOTSTRAP_PRECOMPS)@ @nfpq(@nop($(DESTDIR))@@bpm(LIBDIR)@/Perl6/BOOTSTRAP)@ @bpm(RUN_CLEAN_TARGET_FILES)@ @for_specs($(SETTING_@ucspec@_MOAR) )@$(R_SETTING_MOAR) @nfpq($(DESTDIR)$(PERL6_HOME)/runtime)@ diff --git a/tools/templates/Makefile-common-macros.in b/tools/templates/Makefile-common-macros.in index 1c12267a678..6c9b608467a 100644 --- a/tools/templates/Makefile-common-macros.in +++ b/tools/templates/Makefile-common-macros.in @@ -14,7 +14,7 @@ SYSROOT = @nfp(@sysroot@)@ SDKROOT = @nfp(@sdkroot@)@ PREFIX = @nfp(@prefix@)@ LIBDIR = @nfp(@libdir@)@ -PERL6_HOME = $(LIBDIR)@nfp(/perl6)@ +PERL6_HOME = @nfp(@perl6_home@)@ BASE_DIR = @base_dir@ BOOTSTRAP_SOURCES = \ diff --git a/tools/templates/main-version.in b/tools/templates/main-version.in index 98c0e56f599..7978bb3d4e3 100644 --- a/tools/templates/main-version.in +++ b/tools/templates/main-version.in @@ -34,7 +34,9 @@ sub hll-config($config) { )@ ); $config := '@prefix@'; + $config := '@nqp_home@'; $config := '@libdir@'; + $config := '@perl6_home@'; $config := '@source_digest()@'; } From cdd57cd00791d8001aefb1cfcaecafdb4579d621 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20B=C3=B6ker?= Date: Fri, 30 Aug 2019 20:20:15 +0200 Subject: [PATCH 2/5] Remove support for the `--libdir` option It became conceptually broken by the introduction of the NQP/Perl6-home directories. --- Configure.pl | 6 ++---- tools/templates/Makefile-common-macros.in | 1 - tools/templates/main-version.in | 1 - tools/templates/moar/Makefile-runner_opts.in | 2 +- 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/Configure.pl b/Configure.pl index 641f11a6229..f948a454634 100755 --- a/Configure.pl +++ b/Configure.pl @@ -62,8 +62,8 @@ BEGIN $config->{$config_status} = join ' ', map { qq("$_") } @ARGV; GetOptions( - $cfg->options, 'help!', - 'prefix=s', 'libdir=s', + $cfg->options, + 'help!', 'prefix=s', 'perl6-home=s', 'nqp-home=s', 'sysroot=s', 'sdkroot=s', 'relocatable', 'backends=s', @@ -152,8 +152,6 @@ sub print_help { General Options: --help Show this text --prefix= Install files in dir; also look for executables there - --libdir= Install architecture-specific files in dir; Perl6 modules - included --nqp-home=dir Directory to install NQP files to --perl6-home=dir Directory to install Perl 6 files to --relocatable diff --git a/tools/templates/Makefile-common-macros.in b/tools/templates/Makefile-common-macros.in index 6c9b608467a..e358c5d537c 100644 --- a/tools/templates/Makefile-common-macros.in +++ b/tools/templates/Makefile-common-macros.in @@ -13,7 +13,6 @@ TEST_F = @test_f@ SYSROOT = @nfp(@sysroot@)@ SDKROOT = @nfp(@sdkroot@)@ PREFIX = @nfp(@prefix@)@ -LIBDIR = @nfp(@libdir@)@ PERL6_HOME = @nfp(@perl6_home@)@ BASE_DIR = @base_dir@ diff --git a/tools/templates/main-version.in b/tools/templates/main-version.in index 7978bb3d4e3..7039ff5c0a2 100644 --- a/tools/templates/main-version.in +++ b/tools/templates/main-version.in @@ -35,7 +35,6 @@ sub hll-config($config) { ); $config := '@prefix@'; $config := '@nqp_home@'; - $config := '@libdir@'; $config := '@perl6_home@'; $config := '@source_digest()@'; } diff --git a/tools/templates/moar/Makefile-runner_opts.in b/tools/templates/moar/Makefile-runner_opts.in index c548ca0a916..ca35ea149d4 100644 --- a/tools/templates/moar/Makefile-runner_opts.in +++ b/tools/templates/moar/Makefile-runner_opts.in @@ -1 +1 @@ -@shquot(--execname="\@envvar(EXEC)@" --libpath="\@envvar(DIR)@" --libpath="\@nfp(\@envvar(DIR)@/blib)@" --libpath="\@nfp(\@nqp_libdir@)@" --libpath="\@nfp(\@libdir@/nqp/lib)@" "\@nfp(\@envvar(DIR)@/perl6.moarvm)@" --nqp-lib="\@nfp(\@envvar(DIR)@/blib)@")@ +@shquot(--execname="\@envvar(EXEC)@" --libpath="\@envvar(DIR)@" --libpath="\@nfp(\@envvar(DIR)@/blib)@" --libpath="\@nfp(\@nqp::libdir@)@" "\@nfp(\@envvar(DIR)@/perl6.moarvm)@" --nqp-lib="\@nfp(\@envvar(DIR)@/blib)@")@ From ff9272b19295fe58d206e5d53b6ceea60470684b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20B=C3=B6ker?= Date: Fri, 30 Aug 2019 20:20:39 +0200 Subject: [PATCH 3/5] Clean up JVM runner creation script Now that we have PERL6_HOME we can make use of it! --- tools/build/create-jvm-runner.pl | 26 ++++++++++++-------------- tools/templates/jvm/Makefile.in | 6 +++--- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/tools/build/create-jvm-runner.pl b/tools/build/create-jvm-runner.pl index 88979b284e1..037d491407c 100755 --- a/tools/build/create-jvm-runner.pl +++ b/tools/build/create-jvm-runner.pl @@ -7,9 +7,9 @@ use File::Spec; use File::Copy 'cp'; -my $USAGE = "Usage: $0 \n"; +my $USAGE = "Usage: $0 \n"; -my ($type, $destdir, $prefix, $nqpprefix, $blib, $thirdpartyjars) = @ARGV +my ($type, $destdir, $prefix, $nqp_home, $perl6_home, $blib, $thirdpartyjars) = @ARGV or die $USAGE; my $debugger = 0; @@ -23,16 +23,14 @@ my $cpsep = $^O eq 'MSWin32' ? ';' : ':'; my $bat = $^O eq 'MSWin32' ? '.bat' : ''; -my $nqpdir = File::Spec->catfile($nqpprefix, 'share', 'nqp'); -my $nqplibdir = $^O eq 'MSWin32' ? File::Spec->catfile($nqpdir, 'lib') : File::Spec->catfile('${NQP_DIR}', 'lib'); -my $nqpjars = $^O eq 'MSWin32' ? $thirdpartyjars : join( $cpsep, map { $_ =~ s,$nqpdir,\${NQP_DIR},g; $_ } split($cpsep, $thirdpartyjars) ); +my $nqplibdir = $^O eq 'MSWin32' ? File::Spec->catfile($nqp_home, 'lib') : File::Spec->catfile('${NQP_HOME}', 'lib'); +my $nqpjars = $^O eq 'MSWin32' ? $thirdpartyjars : join( $cpsep, map { $_ =~ s,$nqp_home,\${NQP_HOME},g; $_ } split($cpsep, $thirdpartyjars) ); my $bindir = $type eq 'install' ? File::Spec->catfile($prefix, 'bin') : $prefix; -my $perl6dir = $type eq 'install' ? File::Spec->catfile($prefix, 'share', 'perl6') : $prefix; -my $jardir = $type eq 'install' ? File::Spec->catfile($^O eq 'MSWin32' ? $perl6dir : '${PERL6_DIR}', 'runtime') : $prefix; -my $libdir = $type eq 'install' ? File::Spec->catfile($^O eq 'MSWin32' ? $perl6dir : '${PERL6_DIR}', 'lib') : 'blib'; +my $jardir = $type eq 'install' ? File::Spec->catfile($^O eq 'MSWin32' ? $perl6_home : '${PERL6_HOME}', 'runtime') : $prefix; +my $libdir = $type eq 'install' ? File::Spec->catfile($^O eq 'MSWin32' ? $perl6_home : '${PERL6_HOME}', 'lib') : 'blib'; my $sharedir = File::Spec->catfile( - ($type eq 'install' && $^O ne 'MSWin32' ? '$DIR/..' : $prefix), - 'share', 'perl6', 'site', 'lib'); + ($type eq 'install' && $^O ne 'MSWin32' ? '${PERL6_HOME}' : File::Spec->catfile($prefix, 'share', 'perl6') ), + 'site', 'lib'); my $perl6jars = join( $cpsep, $^O eq 'MSWin32' ? $nqpjars : '${NQP_JARS}', File::Spec->catfile($jardir, 'rakudo-runtime.jar'), @@ -78,15 +76,15 @@ my $preamble = $^O eq 'MSWin32' ? '@' : $type eq 'install' -? $preamble_unix . ": \${NQP_DIR:=\"\$DIR/../share/nqp\"} +? $preamble_unix . ": \${NQP_HOME=\"\$DIR/../share/nqp\"} : \${NQP_JARS:=\"$nqpjars\"} -: \${PERL6_DIR:=\"\$DIR/../share/perl6\"} +: \${PERL6_HOME:=\"\$DIR/../share/perl6\"} : \${PERL6_JARS:=\"$perl6jars\"} exec " : $preamble_unix . "$NQP_LIB -: \${NQP_DIR:=\"$nqpdir\"} +: \${NQP_HOME:=\"$nqp_home\"} : \${NQP_JARS:=\"$nqpjars\"} -: \${PERL6_DIR:=\"$perl6dir\"} +: \${PERL6_HOME:=\"$prefix\"} : \${PERL6_JARS:=\"$perl6jars\"} exec "; my $postamble = $^O eq 'MSWin32' ? ' %*' : ' "$@"'; diff --git a/tools/templates/jvm/Makefile.in b/tools/templates/jvm/Makefile.in index 220d7a21676..4af1c5d2f28 100644 --- a/tools/templates/jvm/Makefile.in +++ b/tools/templates/jvm/Makefile.in @@ -44,14 +44,14 @@ $(RUNTIME_JAR): $(RUNTIME_JAVAS) @noecho@$(JAR) cf0 rakudo-runtime.jar -C bin@slash@ . $(J_RUNNER): @@script(create-jvm-runner.pl)@@ - $(PERL5) @shquot(@script(create-jvm-runner.pl)@)@ dev . . @q($(NQP_PREFIX))@ --nqp-lib=blib @q($(NQP_JARS))@ + $(PERL5) @shquot(@script(create-jvm-runner.pl)@)@ dev . . @q($(NQP_HOME))@ @q($(PERL6_HOME))@ --nqp-lib=blib @q($(NQP_JARS))@ j-runner-default: j-all $(CP) $(J_RUNNER) perl6$(J_BAT) $(CHMOD) 755 perl6$(J_BAT) @bpm(DEBUG_RUNNER)@: @@script(create-jvm-runner.pl)@@ @bsm(PERL6_DEBUG)@ - $(PERL5) @shquot(@script(create-jvm-runner.pl)@)@ dev-debug . . @q($(NQP_PREFIX))@ --nqp-lib=blib @q($(NQP_JARS))@ + $(PERL5) @shquot(@script(create-jvm-runner.pl)@)@ dev-debug . . @q($(NQP_HOME))@ @q($(PERL6_HOME))@ --nqp-lib=blib @q($(NQP_JARS))@ eval-client.pl: $(CP) @nfpq($(SDKROOT)$(NQP_PREFIX)/bin/eval-client.pl)@ . @@ -79,7 +79,7 @@ sometests: j-all @$(J_HARNESS5_WITH_FUDGE) $(TESTFILES) j-runner-default-install: j-install - $(PERL5) @shquot(@script(create-jvm-runner.pl)@)@ install @q($(DESTDIR))@ @q($(PREFIX))@ @q($(NQP_PREFIX))@ "" @q($(NQP_JARS))@ + $(PERL5) @shquot(@script(create-jvm-runner.pl)@)@ install @q($(DESTDIR))@ @q($(PREFIX))@ @q($(NQP_HOME))@ @q($(PERL6_HOME))@ "" @q($(NQP_JARS))@ $(CP) @nfpq($(DESTDIR)$(PREFIX)/bin/perl6-j$(J_BAT))@ @nfpq($(DESTDIR)$(PREFIX)/bin/perl6$(J_BAT))@ $(CHMOD) 755 @nfpq($(DESTDIR)$(PREFIX)/bin/perl6$(J_BAT))@ From b0c2a11726d9de6af7221ab2cf7cf40b986abdfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20B=C3=B6ker?= Date: Sun, 22 Sep 2019 14:07:35 +0200 Subject: [PATCH 4/5] Bump nqp-configure for handling of --nqp-home and --perl6-home --- 3rdparty/nqp-configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/nqp-configure b/3rdparty/nqp-configure index 9c948ec47b2..d0eed925d31 160000 --- a/3rdparty/nqp-configure +++ b/3rdparty/nqp-configure @@ -1 +1 @@ -Subproject commit 9c948ec47b23c93e3b9736debb669ee6734a41cd +Subproject commit d0eed925d31e1726b8bba23df7c8505ae4867ec1 From 960e3b2678c2772fd08566d68d2ffaea9715f372 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20B=C3=B6ker?= Date: Sun, 22 Sep 2019 14:13:45 +0200 Subject: [PATCH 5/5] Bump NQP This brings us support for the --nqp-home configure option. --- tools/templates/NQP_REVISION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/templates/NQP_REVISION b/tools/templates/NQP_REVISION index fd6b609fa10..00b87fc0fa7 100644 --- a/tools/templates/NQP_REVISION +++ b/tools/templates/NQP_REVISION @@ -1 +1 @@ -2019.07.1-101-g2ccade731 +2019.07.1-106-g9ad2c6b2f