aboutsummaryrefslogtreecommitdiff
path: root/tools/build
diff options
context:
space:
mode:
Diffstat (limited to 'tools/build')
-rw-r--r--tools/build/Makefile.in6
-rw-r--r--tools/build/module-install.pl36
-rw-r--r--tools/build/modules-test.pl60
3 files changed, 77 insertions, 25 deletions
diff --git a/tools/build/Makefile.in b/tools/build/Makefile.in
index 7152691..29d5071 100644
--- a/tools/build/Makefile.in
+++ b/tools/build/Makefile.in
@@ -3,7 +3,7 @@
MOAR_DIR = moarvm
NQP_DIR = nqp
RAKUDO_DIR = rakudo
-STAR_VERSION = 2019.03
+STAR_VERSION = 2020.01
# install location
PREFIX_DIR = @prefix@
@@ -67,12 +67,12 @@ modules-install-m: rakudo-install
modules-test: @backend_modules_test@
verbose-modules-test: @backend_modules_test@
-modules-test-j: modules-install-j
+modules-test-j:
$(PERL) tools/build/modules-test.pl $(CURDIR) $(DESTDIR)$(PERL6_J_INSTALL) $(MODULES)
verbose-modules-test-j: modules-install-j
$(PERL) tools/build/modules-test.pl --verbose $(CURDIR) $(DESTDIR)$(PERL6_J_INSTALL) $(MODULES)
-modules-test-m: modules-install-m
+modules-test-m:
$(PERL) tools/build/modules-test.pl $(CURDIR) $(DESTDIR)$(PERL6_M_INSTALL) $(MODULES)
verbose-modules-test-m: modules-install-m
$(PERL) tools/build/modules-test.pl --verbose $(CURDIR) $(DESTDIR)$(PERL6_M_INSTALL) $(MODULES)
diff --git a/tools/build/module-install.pl b/tools/build/module-install.pl
index 9f7e038..eadb99e 100644
--- a/tools/build/module-install.pl
+++ b/tools/build/module-install.pl
@@ -2,21 +2,37 @@
use warnings;
use strict;
+
my $perl6bin = shift @ARGV;
my $zefbin = shift @ARGV;
+my $exit = 0;
+my $path_sep = $^O eq 'MSWin32' ? '\\' : '/';
-my $exit = 0;
+while (<>) {
+ # Skip comments
+ next if /^\s*(#|$)/;
-my $path_sep = "/";
-$path_sep = "\\" if ( $^O eq 'MSWin32' );
+ # Extract only the module name from the current line
+ my ($module) = /(\S+)/;
-while (<>) {
- next if /^\s*(#|$)/;
- my ($module) = /(\S+)/;
- $exit ||= system $perl6bin, $zefbin,
- '--/build-depends', '--/test-depends', '--/depends',
- '--/p6c', '--/metacpan', '--/cpan',
- '--force', 'install', "./modules$path_sep$module";
+ # Create the command list
+ my @cmd = (
+ $perl6bin,
+ $zefbin,
+ '--/build-depends',
+ '--/depends',
+ '--/test',
+ '--/test-depends',
+ '--force',
+ 'install',
+ "./modules$path_sep$module"
+ );
+
+ # Show the command that's going to be ran, for debugging purposes
+ printf "@cmd\n";
+
+ # Actually run the command
+ $exit ||= system "@cmd";
}
exit $exit;
diff --git a/tools/build/modules-test.pl b/tools/build/modules-test.pl
index 396f066..c4b9d00 100644
--- a/tools/build/modules-test.pl
+++ b/tools/build/modules-test.pl
@@ -1,5 +1,8 @@
#! perl
+use warnings;
+use strict;
+
use Cwd;
use Getopt::Long;
@@ -7,19 +10,52 @@ GetOptions('verbose' => \my $verbose);
my $base = shift @ARGV;
my $perl6 = shift @ARGV;
+my @failures;
while (<>) {
- next if /^\s*(#|$)/;
- my ($moduledir) = /(\S+)/;
- print "Testing modules/$moduledir with $perl6...\n";
- if (-d "$base/modules/$moduledir/t") {
- chdir("$base/modules/$moduledir");
- system('prove', $verbose ? '-v' : (), '-e', $perl6, '-r', 't');
- }
- else {
- print "...no t/ directory found.\n";
- }
- print "\n";
+ # Skip comments
+ next if /^\s*(#|$)/;
+
+ # Extract only the module name from the current line
+ my ($moduledir) = /(\S+)/;
+
+ if (! -d "$base/modules/$moduledir/t") {
+ print "[" . getcwd . "] ...no t/ directory found.\n";
+ next;
+ }
+
+ # Run the tests through prove
+ chdir("$base/modules/$moduledir");
+
+ my @cmd = (
+ 'prove',
+ $verbose ? '-v' : (),
+ '-e', $perl6,
+ '-r',
+ 't',
+ );
+
+ # Show the command that's going to be ran, for debugging purposes
+ print "[" . getcwd . "] @cmd\n";
+
+ # Actually run the command
+ my $exit = system "@cmd";
+
+ # Exit early if any errors occurred
+ if ($exit) {
+ push @failures, $_;
+ }
+
+ print "\n";
}
-0;
+# If we reach this, no errors have been found
+if (@failures) {
+ print "The following modules failed their tests:\n";
+
+ foreach (@failures) {
+ print "- $_\n";
+ }
+
+ exit 1;
+}