perl build/brew_build.pl
####
perl build/brew_build.pl --reload 1 --count 3
####
perl build/brew_build.pl -d 1 -c -1
####
perl build/brew_build.pl -v 5.20.1
####
% perl build/brew_build.pl
perl-5.23.7
perl-5.22.1
perl-5.20.3
perl-5.18.4
perl-5.14.4
perl-5.12.5
perl-5.12.5 :: PASS
perl-5.14.4 :: PASS
perl-5.18.4 :: PASS
perl-5.20.3 :: PASS
perl-5.22.1 :: PASS
perl-5.23.7 :: PASS
####
#!/usr/bin/perl
use warnings;
use strict;
use Cwd;
use Getopt::Long;
my ($debug, $count, $reload, $version, $help);
GetOptions(
"debug=i" => \$debug,
"count=i" => \$count,
"reload=i" => \$reload,
"version=s" => \$version,
"help" => \$help,
);
if ($help){
print < 0){
push @new_installs, $perls_available[rand @perls_available];
$count--;
}
}
}
if (@new_installs){
for (@new_installs){
print "\ninstalling $_...\n";
`$install_cmd $_`;
}
}
else {
print "\nusing existing versions only\n" if $debug;
}
}
sub results {
my $exec_cmd = $is_win
? "berrybrew exec perl $cwd\\build\\test.pl"
: "perlbrew exec perl $cwd/build/test.pl 2>/dev/null";
my $debug_exec_cmd = $is_win
? "berrybrew exec perl $cwd\\build\\test.pl"
: "perlbrew exec perl $cwd/build/test.pl";
my $result;
print "\n...executing\n" if $debug;
if ($is_win){
$result = `$exec_cmd`;
}
else {
if ($debug){
$result = `$debug_exec_cmd`;
}
else {
$result = `$exec_cmd`;
}
}
my @ver_results = split /\n\n\n/, $result;
print "\n\n";
for (@ver_results){
my $ver;
if (/^([Pp]erl-\d\.\d+\.\d+)/){
$ver = $1;
}
my $res;
if (/Result:\s+(PASS)/){
$res = $1;
}
else {
print $_;
exit;
}
print "$ver :: $res\n";
}
}
sub run {
my $count = shift // 0;
my $brew_info = $is_win
? `berrybrew available`
: `perlbrew available`;
my @perls_available = perls_available($brew_info);
$count = scalar @perls_available if $count < 0;
my @perls_installed = perls_installed($brew_info);
print "$_\n" for @perls_installed;
if ($debug){
print "$_ installed\n" for @perls_installed;
print "\n";
}
my %perl_vers;
instance_remove(@perls_installed) if $reload;
instance_install($count, @perls_available);
results();
}
####
#!/usr/bin/perl
use warnings;
use strict;
use Cwd;
my $cwd = getcwd();
if ($^O ne 'MSWin32'){
system "cpanm --installdeps . && make && make test";
}
else {
system "cpanm --installdeps . && dmake && dmake test";
}