This repository was archived by the owner on Oct 23, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathjava.py
More file actions
31 lines (24 loc) · 1.04 KB
/
java.py
File metadata and controls
31 lines (24 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from typing import List
import os
from task_maker.args import Arch
from task_maker.languages import CompiledLanguage, CommandType, LanguageManager
class LanguageJava(CompiledLanguage):
@property
def name(self):
return "Java"
@property
def source_extensions(self):
return [".java"]
def get_compilation_command(self, source_filenames: List[str],
exe_name: str, unit_name: str,
for_evaluation: bool,
target_arch: Arch) -> (CommandType, List[str]):
GRAAL_PATH = os.getenv("TM_GRAAL_PATH") or "/usr/lib/jvm/java-8-graal/bin/"
main_class = "grader" if "grader.java" in source_filenames else unit_name
commands = [
"{}javac {}".format(GRAAL_PATH, " ".join(source_filenames)),
"{}native-image {} {}".format(GRAAL_PATH, main_class, exe_name),
]
return CommandType.SYSTEM, ["sh", "-c", "&&".join(commands)]
def register():
LanguageManager.register_language(LanguageJava())