Save compile errors
authorMarius Gavrilescu <marius@ieval.ro>
Tue, 28 Jan 2014 09:34:25 +0000 (11:34 +0200)
committerMarius Gavrilescu <marius@ieval.ro>
Tue, 28 Jan 2014 09:34:25 +0000 (11:34 +0200)
lib/Gruntmaster/Daemon.pm

index ed8e405ae37f603a30f495701aa456426a056759..73610b39f98896afdc912d706fa7203fcde68c67 100644 (file)
@@ -43,15 +43,12 @@ sub safe_can {
 
 sub prepare{
   my ($name, $format) = @_;
 
 sub prepare{
   my ($name, $format) = @_;
+  our $errors;
   my $basename = fileparse $name, qr/\.[^.]*/;
   get_logger->trace("Preparing file $name...");
 
   my $basename = fileparse $name, qr/\.[^.]*/;
   get_logger->trace("Preparing file $name...");
 
-  open my $devnull, devnull;
-  open my $errors, '>>compile-error';
-  my $ret = open3 $devnull, $errors, undef, 'gruntmaster-compile', $format => $basename, $name;
-  waitpid $ret, 0;
-  close $devnull;
-  close $errors;
+  $errors .= `gruntmaster-compile $format $basename $name 2>&1`;
+  $errors .= "\n";
   die 'Compile error' if $?
 }
 
   die 'Compile error' if $?
 }
 
@@ -73,6 +70,7 @@ sub process{
   my @results;
   my @full_results = ();
   my $meta = {};
   my @results;
   my @full_results = ();
   my $meta = {};
+  our $errors = '';
   try {
        $meta = job_inmeta $job;
        if (job_problem $job) {
   try {
        $meta = job_inmeta $job;
        if (job_problem $job) {
@@ -83,6 +81,7 @@ sub process{
        }
 
        prepare_files $meta;
        }
 
        prepare_files $meta;
+       chomp $errors;
 
        my ($files, $generator, $runner, $judge, $testcnt) = map { $meta->{$_} or die "Required parameter missing: $_"} qw/files generator runner judge testcnt/;
 
 
        my ($files, $generator, $runner, $judge, $testcnt) = map { $meta->{$_} or die "Required parameter missing: $_"} qw/files generator runner judge testcnt/;
 
@@ -128,6 +127,7 @@ sub process{
   set_job_result $job, $meta->{result};
   set_job_result_text $job, $meta->{result_text};
   set_job_results $job, \@full_results if scalar @full_results;
   set_job_result $job, $meta->{result};
   set_job_result_text $job, $meta->{result_text};
   set_job_results $job, \@full_results if scalar @full_results;
+  set_job_errors $job, $errors;
 
   my $log = $meta->{contest} ? "ct/$meta->{contest}/log" : 'log';
   PUBLISH gensrc => $job;
 
   my $log = $meta->{contest} ? "ct/$meta->{contest}/log" : 'log';
   PUBLISH gensrc => $job;
This page took 0.012725 seconds and 4 git commands to generate.