Compile

Stage for language-agnostic compilation to ready execuable for grading.

This does not apply to all languages, e.g. interpreted languages do not need to use this stage.

Config

compile:
  input: [String]                   # full set of files needed for compilation
  output: String?                   # name of the compiled target executable
  flags: [String]?                  # flags used for compilation. These will be fed into specific compilation commands of the language. [default: <according to specific langauges>]
  additional_packages: [String]?    # any additional package to install as dependency to the container [default: []]
  • output:

    • cpp: [default: a.out]

    • java: Output does not need to be specified; javac will compile the input file(s) and all dependent files automatically

  • flags:

    • cpp: [default: ["-std=c++11", "-pedantic", "-Wall", "-Wextra", "-g"]]

    • java: [default: ["-d", "."]]

  • additionalPackages mostly work with Debian-based images.

  • The available language (distros) are also limited currently. This will be extended in the future.

Report

compile:
  - isSuccess: Boolean    # whether the execution was successful, i.e. zero exit code
    stderr: [String]      # the standard errors generated during execution
    toolName: String?     # optional compilation tool used to generate the stderr, for potential UI parsing, categorizing into info/warn/error, and rendering