脚本只在全新安装的 Ubuntu 22.04 上经过测试。
在所有步骤之前,推荐提前更新软件包,并设置 git username 和 email。
如有需要,可以提前自行更换 ubuntu 软件源镜像,设置代理等。
注意:这一步不是必须执行的,理论上来说,只要你的系统具备所有的工具依赖,不需要本脚本配置环境,也不需要特定发行版。后续步骤也可以顺利执行。但这种情况未测试,不保证能正常工作。
在 Ubuntu 22.04 上安装所有需要的包和工具:
setup.sh env
具体而言,脚本进行如下工作:
- 更新软件包列表,并更新所有软件包
- 检查 git email 和 username,若未设置则要求设置
- 安装所有需要的软件包,并修复 riscv32 编译错误
- 检查 verilator,若未安装则从 gitee 克隆源码并编译安装
setup.sh repo ysyx_23060203
具体而言,脚本进行如下工作:
- 将该同学通过 ci 的代码,克隆到工作目录下
ysyx-workbench目录中,关闭 tracer - 在工作目录下生成
activate.sh文件,用于应用环境变量 - 下载所有框架代码,对 rtt 和 soc 应用 patch,执行 rtt init
- 安装 mill 到工作目录下
bin文件夹中,并生成 soc verilog
source activate.sh
这样就可以在 ysyx-workbench 中调试运行学员的代码了。
activate.sh 使用绝对路径定位 bin/mill 和 ysyx-workbench。
此时,你可以先按照规定,看能否正常运行学员代码,如果可以,则开始注入错误。
如果不能正常运行,请先进行初步检查,如果不能解决,则需要和学员直接沟通,不符合标准的则需要驳回学员申请,需要重新提交CI代码。
在错误注入后,使用打包命令即可打包
setup.sh pack
将生成两个压缩包:
学生学号-ysyx-workbench.tar.bz2: 包含VCS记录,不加密。供存档。- 供留档使用;
学生学号-ysyx-b-exam.tar.bz2: 不包含VCS记录,使用随机产生的密钥加密,发给学员使用。 完成后,可将目录打包上传到系统中。 加密密码会输出到屏幕上,同时,也会存储到ysyx-b-exam-key.txt中 由于使用绝对路径,接收者需修改activate.sh中B_EXAM_HOME为解压后的目录。
当需要将已压缩的学生仓库还原到当前目录以便助注入bug的助教对注入的 bug 进行返工时,可以使用脚本提供的 unpack 命令。
该命令会在当前目录中查找一个且仅一个匹配 *-ysyx-workbench.tar.bz2 的普通(不加密)压缩包并解压它:
setup.sh unpack
如果没有找到这样的归档,或找到多个匹配的归档,脚本会报错并退出;该功能主要用于“校验 bug 助教发现错误时,供注入 bug 助教返工时使用”。
setup repo 不可避免地需要从神秘网络下载很多东西,所以可能需要在此之前设置代理:
https_proxy=http://127.0.0.1:9080
http_proxy=http://127.0.0.1:9080
all_proxy=socks5://127.0.0.1:9080
JAVA_OPTS="-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=9080 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=9080"
此处假设你的代理为 127.0.0.1:9080
或如果你有适用于Github的透明代理,可以在运行脚本前设置:
GITHUB_MIRROR=[你的透明代理]