Skip to content

评测系统使用与实验提交说明

wufeng15226 edited this page Jun 1, 2023 · 10 revisions

实验源码提交

在打包前需要将验报告按照要求放在对应目录下一起打包,需要使用以下命令得到tar.gz文件

cd SYsU-lang
cmake --build $HOME/sysu/build -t package_source

打包好的源码包在 $HOME/sysu/build 目录下,在打包完成后请尝试使用以下命令是否可以完成解包

python3 -m tarfile -e SYsU-lang-*-Source.tar.gz

最终提交到超算习堂

批改脚本

lexer 实验与 parser 实验不需要在线评测。如需检查学生提交作业的正确性,可通过如下脚本自动批改。

import glob
import sys
import subprocess
import tarfile


def main(*argv):
    files = glob.glob("*.gz")
    files.sort()
    for filename in files:
        print(filename)
        tar = tarfile.open(filename)
        filename = filename[0:8] # 提取前八个字符,通常不包含全角字符
        tar.extractall(path=filename)
        tar.close()
        source = glob.glob(filename+"/SYsU-lang-*-Source")[0]

        # extract parser.y
        # subprocess.run(["cp", source+"/parser/parser.y", "[YOUR PATH]"+filename+".y"])

        # customized test
        # subprocess.run(["cp", "[YOUR PATH]"+"sysu-compiler", source+"/compiler/sysu-compiler"])
        
        # unify the test set
        subprocess.run(["cp", "-r", "../SYsU-lang/tester", source+"/"])

        llvm_prefix_path = subprocess.run(
            ["llvm-config", "--cmakedir"], stdout=subprocess.PIPE).stdout
        subprocess.run(["cmake", "-GNinja", "-DCMAKE_BUILD_TYPE=RelWithDebInfo",
                        "-DCMAKE_C_COMPILER=clang",
                        "-DCMAKE_CXX_COMPILER=clang++",
                        "-DCMAKE_INSTALL_PREFIX="+filename+'/sysu',
                        "-DCMAKE_PREFIX_PATH="+str(llvm_prefix_path),
                        "-DCPACK_SOURCE_IGNORE_FILES=.git/;tester/third_party/",
                        "-S"+source,
                        "-B"+filename+'/sysu/build'])
        subprocess.run(["cmake", "--build", filename+'/sysu/build'])
        subprocess.run(["cmake", "--build", filename +
                        '/sysu/build', "-t", "test"])
    return 0


if __name__ == '__main__':
    sys.exit(main(*sys.argv))

只需检查对应学生目录下 sysu/build/Testing/Temporary 中的 LastTestsFailed.log 文件和 LastTest.log 两个日志即可。

在线评测

除超算习堂上的提交页面外,generator 实验和 optimizer 实验还要求通过在线评测。本页面将介绍如何使用我们搭建的基于 Docker 的评测系统.

访问评测系统, 使用 GitHub 授权登陆, 将会使用你的 GitHub 用户名以及邮箱作为系统的用户信息.

image

登陆后, 点击右上角账户设置, 添加你的学号.

image

Clone this wiki locally