Skip to content

Commit

Permalink
Merge pull request #3193 from patzim/home-config-option
Browse files Browse the repository at this point in the history
Process the `perl6-home` and `nqp-home` parameters. Also drop support for `--libdir` which the previous option should replace. Depends on nqp-configure PR#10 and nqp PR#579. This fixes #3093
  • Loading branch information
patrickbkr committed Sep 22, 2019
2 parents c1e0e38 + 960e3b2 commit c4e8048
Show file tree
Hide file tree
Showing 10 changed files with 40 additions and 37 deletions.
2 changes: 1 addition & 1 deletion 3rdparty/nqp-configure
9 changes: 5 additions & 4 deletions Configure.pl
Expand Up @@ -62,8 +62,9 @@ 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',
'no-clean', 'with-nqp=s',
Expand Down Expand Up @@ -151,8 +152,8 @@ sub print_help {
General Options:
--help Show this text
--prefix=<path> Install files in dir; also look for executables there
--libdir=<path> 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
Expand Down
26 changes: 12 additions & 14 deletions tools/build/create-jvm-runner.pl
Expand Up @@ -7,9 +7,9 @@
use File::Spec;
use File::Copy 'cp';

my $USAGE = "Usage: $0 <type> <destdir> <prefix> <nqp prefix> <blib> <third party jars>\n";
my $USAGE = "Usage: $0 <type> <destdir> <prefix> <nqp-home> <perl6-home> <blib> <third party jars>\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;
Expand All @@ -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'),
Expand Down Expand Up @@ -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' ? ' %*' : ' "$@"';
Expand Down
19 changes: 11 additions & 8 deletions tools/lib/NQP/Config/Rakudo.pm
Expand Up @@ -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);
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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<git-depth git-reference github-user nqp-repo moar-repo
relocatable ignore-errors with-moar>
nqp-home relocatable ignore-errors with-moar>
)
{
my $opt_str = $self->make_option( $opt, no_quote => 1 );
Expand Down
5 changes: 3 additions & 2 deletions tools/templates/Makefile-backend-common.in
Expand Up @@ -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)@
Expand Down
3 changes: 1 addition & 2 deletions tools/templates/Makefile-common-macros.in
Expand Up @@ -13,8 +13,7 @@ TEST_F = @test_f@
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 = \
Expand Down
2 changes: 1 addition & 1 deletion tools/templates/NQP_REVISION
@@ -1 +1 @@
2019.07.1-101-g2ccade731
2019.07.1-106-g9ad2c6b2f
6 changes: 3 additions & 3 deletions tools/templates/jvm/Makefile.in
Expand Up @@ -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)@ .
Expand Down Expand Up @@ -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))@

Expand Down
3 changes: 2 additions & 1 deletion tools/templates/main-version.in
Expand Up @@ -34,7 +34,8 @@ sub hll-config($config) {
)@
);
$config<prefix> := '@prefix@';
$config<libdir> := '@libdir@';
$config<nqp-home> := '@nqp_home@';
$config<perl6-home> := '@perl6_home@';
$config<source-digest> := '@source_digest()@';
}

2 changes: 1 addition & 1 deletion 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)@")@

0 comments on commit c4e8048

Please sign in to comment.