Always compile to $basename
authorMarius Gavrilescu <marius@ieval.ro>
Fri, 30 Jan 2015 11:26:57 +0000 (13:26 +0200)
committerMarius Gavrilescu <marius@ieval.ro>
Fri, 30 Jan 2015 11:26:57 +0000 (13:26 +0200)
gruntmaster-compile
lib/Gruntmaster/Daemon/Format.pm

index 1641d35a92a095032f8b8537d9e4f6a7d2e9e203..40336515102fcad52396a40ea8b59f32c4f70507 100755 (executable)
@@ -18,15 +18,32 @@ if ($ret) {
        given ($format){
                exec 'gcc', qw/-DONLINE_JUDGE -std=gnu11 -Wall -Wextra -O2 -o/, $basename, $name when 'C';
                exec 'g++', qw/-DONLINE_JUDGE -std=gnu++11 -fabi-version=6 -Wall -Wextra -O2 -o/, $basename, $name when 'CPP';
+               when ('MONO') {
+                       system 'gmcs', '-d:ONLINE_JUDGE', $name and die "gmcs failed: errno=$! return=$?";
+                       rename "$basename.exe", $basename;
+                       chmod 0755, $basename;
+               }
                exec 'gmcs', '-d:ONLINE_JUDGE', $name when  'MONO';
-               exec 'javac', $name when 'JAVA';
+               when ('JAVA') {
+                       system 'javac', $name and die "javac failed: errno=$! return=$?";
+                       system 'jar', 'cfe', $basename, $basename, "$basename.class" and die "jar failed: errno=$! return=$?";
+                       chmod 0755, $basename;
+                       exit
+               }
                exec 'fpc', qw/-dONLINE_JUDGE -O2/, $name when 'PASCAL';
                exec 'go', qw/build -compiler gc/, $name when 'GOLANG';
                exec 'go', qw/build -compiler gccgo/, $name, when 'GCCGO';
                exec 'ghc', qw/-DONLINE_JUDGE -Wall -O2 -o/, $basename, $name when 'HASKELL';
 
                when ([qw/PERL PYTHON/]){
-                       copy $name, $basename;
+                       open IN, '<', $name;
+                       open OUT, '>', $basename;
+                       print OUT "#!/usr/bin/perl\n"   if $_ eq 'PERL';
+                       print OUT "#!/usr/bin/python\n" if $_ eq 'PYTHON';
+                       print OUT while <IN>;
+                       close OUT;
+                       close IN;
+                       chmod 0755, $basename;
                        exit
                }
        }
index 529931fbf8d88827ca8dc25abd0a746583ec29e9..cfc3cf306d25cf40aa37392fd0280f2c580488ca 100644 (file)
@@ -65,19 +65,6 @@ sub execlist {
        die [$excode, $exmsg] if $excode > 0; ## no critic (RequireCarping)
 }
 
-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" }
-       }
-}
-
 sub mkrun{
        my $format = shift;
        sub{
@@ -94,7 +81,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"
        }
 }
 
This page took 0.011543 seconds and 4 git commands to generate.