Add an explanation to compile errors
[gruntmaster-daemon.git] / lib / Gruntmaster / Daemon / Format.pm
index 5f503a117a534a4749294611034e2315dc8ebe93..2b60139327f827366b965b48a4854dc29021518a 100644 (file)
@@ -15,7 +15,7 @@ use POSIX qw/mkfifo/;
 use String::ShellQuote qw/shell_quote/;
 use Try::Tiny;
 
-our $VERSION = "5999.000_004";
+our $VERSION = '5999.000_004';
 our @EXPORT_OK = qw/prepare_files stopvms/;
 
 ##################################################
@@ -47,11 +47,12 @@ sub execlist {
                get_logger->trace("Running in VM $vm: $cmd");
                $vm{$vm}->send($cmd);
        } else {
-               my $ret = fork // die 'Cannot fork';
+               my $ret = fork // die "Cannot fork\n";
                if ($ret) {
                        waitpid $ret, 0;
                } else {
-                       open STDOUT, ">$er";
+                       open STDOUT, '>', $er or die "Cannot open $er\n";
+                       get_logger->trace("Running: gruntmaster-exec @args");
                        exec 'gruntmaster-exec', @args;
                }
        }
@@ -59,22 +60,9 @@ sub execlist {
        die "gruntmaster-exec died\n" if -z $er;
        my ($excode, $exmsg) = read_file $er;
        unlink $er;
-       chomp ($excode, $exmsg);
+       chomp ($excode, $exmsg); ## no critic (ProhibitParensWithBuiltins)
        get_logger->trace("Exec result: $excode $exmsg");
-       die [$excode, $exmsg] if $excode > 0;
-}
-
-sub command_and_args{
-       my ($format, $basename) = @_;
-
-       given($format) {
-               "./$basename" when [qw/C CPP GCCGO GOLANG HASKELL PASCAL/];
-               "./$basename.exe" when 'MONO';
-               java => $basename when 'JAVA';
-               perl => $basename when 'PERL';
-               python => $basename when 'PYTHON';
-               default { die "Don't know how to execute format $format\n" }
-       }
+       die [$excode, $exmsg] if $excode > 0; ## no critic (RequireCarping)
 }
 
 sub mkrun{
@@ -83,8 +71,9 @@ sub mkrun{
                local *__ANON__ = 'mkrun_runner';
                my ($name, %args) = @_;
                get_logger->trace("Running $name...");
-               my $basename = fileparse $name, qr/\.[^.]*/;
-               my @args;
+               my $basename = fileparse $name, qr/[.][^.]*/s;
+               my @args = ('--nobody');
+               push @args, '--no-close' if $ENV{TEST_VERBOSE};
                push @args, '--timeout', $args{timeout} if $args{timeout};
                push @args, '--mlimit',  $args{mlimit}  if $args{mlimit};
                push @args, '--olimit',  $args{olimit}  if $args{olimit};
@@ -93,7 +82,7 @@ sub mkrun{
                while (my ($fd, $file) = $it->()) {
                        push @args, "--fd=$fd $file";
                }
-               execlist $basename, @args, command_and_args($format, $basename);
+               execlist $basename, @args, '--', "./$basename", @{$args{args}}
        }
 }
 
@@ -104,10 +93,11 @@ sub prepare{
        try {
                execlist prog => '--fd=1 >>errors', '--fd=2 >>errors', 'gruntmaster-compile', $format, $name;
        } catch {
-               die "Compile error\n"
+               my $exmsg = $_->[1];
+               die "Compile error ($exmsg)\n"
        } finally {
                $Gruntmaster::Daemon::errors .= read_file 'errors';
-               $Gruntmaster::Daemon::errors .= "\n";
+               $Gruntmaster::Daemon::errors .= "\n" if -s 'errors';
                unlink 'errors';
        };
 }
This page took 0.011829 seconds and 4 git commands to generate.