Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

74 lines (54 sloc) 2.135 kb
#!/usr/bin/env perl
use strict;
use warnings;
use File::Spec;
use File::Copy;
my $inst_path = File::Spec->rel2abs(shift(@ARGV) || 'build');
print "Installing to '$inst_path'\n";
if ($inst_path =~ /\s/) {
warn "Path names with whitspace are known to cause trouble\n"
. "You would be on the safer side without them - set with $^X $0 'inst_path'\n";
chdir('rakudo') or die "Can't chdir to rakudo: $!";
print "Building parrot and Rakudo...\n";
system($^X, '', '--gen-parrot', "--gen-parrot-prefix=$inst_path") == 0
or die "Can't run $^x ($?): $!";
my %config = read_parrot_config();
my $make = $config{make};
system($make, 'install') == 0
or die "Can't run 'make install' for Rakudo: ($?): $!";
chdir('..') or die "Can't chdir back to .., something's seriously wrong!\n";
print "Rakudo build was successful. \\o/\n";
my $path_var_sep = $^O =~ /mswin32/i ? ';' : ':';
$ENV{PATH} = join '', "$inst_path/bin", $path_var_sep, $ENV{PATH};
my $res = qx/perl6 -e 'say "sanity";'/;
chomp $res;
if ($res ne 'sanity') {
die "Sanity check for running Rakudo Perl 6 failed. Got '$res', Expected: 'sanity'\n"
. "Aborting.\n";
print "Things look good so far, executing a very simple Perl 6 program worked!\n";
copy('ufo/ufo', "$inst_path/bin/") or die "Can't copy ufo/ufo to $inst_path/bin: $!";
print "We now have alien technology that lets us install more modules...\n";
use Cwd;
my $proto_lib = getcwd() . '/proto/lib';
$ENV{PERL6LIB} = $proto_lib;
chdir 'proto' or die "Can't chdir to 'proto': $!";
# TODO: find a better way to determine which modules to install in this step.
# Likely derive from @modules or so.
for (qw(zavolaj xml-writer svg svg-plot Math-RungeKutta Math-Model)) {
print "Installing $_...\n";
system('perl6', 'proof-of-concept', $_) == 0
or die "Can't run poc $_ ($?): $!";
sub read_parrot_config {
my %config = ();
if (open my $CFG, "parrot/config_lib.pir") {
while (<$CFG>) {
if (/P0\["(.*?)"], "(.*?)"/) { $config{$1} = $2 }
close $CFG;
Jump to Line
Something went wrong with that request. Please try again.