Skip to content
This repository was archived by the owner on Feb 7, 2026. It is now read-only.

Commit 0a290a3

Browse files
hanbingsluojia65
authored andcommitted
fix(ci): locked toolchain version. (#7)
* fix(ci): locked toolchain version. * fix(ci): add an efi test file that depends on the edk2 header file. * fix(ci): fix actions artifact conflict issues.
1 parent 839c594 commit 0a290a3

File tree

4 files changed

+61
-18
lines changed

4 files changed

+61
-18
lines changed

.github/workflows/test.yml

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,16 @@ jobs:
1616
target: riscv64gc-unknown-none-elf
1717
toolchain: nightly-2025-03-31
1818

19+
- name: Rust version diagnostics
20+
run: |
21+
rustc -Vv
22+
cargo -V
23+
rustup show
24+
1925
- name: Install cargo-binutils and rust-objcopy
2026
run: |
2127
rustup component add llvm-tools-preview
22-
cargo install cargo-binutils
28+
cargo install cargo-binutils --locked --version 0.4.0
2329
2430
- name: Build with Makefile
2531
run: |
@@ -49,23 +55,23 @@ jobs:
4955
5056
# Test 1: HelloRiscv
5157
- name: Create ESP (HelloRiscv)
52-
run: EFI_NAME=HelloRiscv sh scripts/test/make_esp.sh
58+
run: EFI_FILE=edk2/Build/DEBUG_GCC5/RISCV64/HelloRiscv.efi sh scripts/test/make_esp.sh
5359

5460
- name: Run QEMU (HelloRiscv)
55-
run: make qemu-run > qemu-hello.log
61+
run: make qemu-run > qemu-hello-riscv.log
5662

5763
- name: Upload QEMU log (HelloRiscv)
5864
uses: actions/upload-artifact@v4
5965
with:
60-
name: log-hello
61-
path: qemu-hello.log
66+
name: log-hello-riscv
67+
path: qemu-hello-riscv.log
6268

6369
- name: Check QEMU output (HelloRiscv)
64-
run: sh scripts/test/check_hello_test.sh
70+
run: sh scripts/test/check_hello_test_riscv.sh
6571

6672
# Test 2: AllocatePage
6773
- name: Create ESP (AllocatePage)
68-
run: EFI_NAME=AllocatePage sh scripts/test/make_esp.sh
74+
run: EFI_FILE=edk2/Build/DEBUG_GCC5/RISCV64/AllocatePage.efi sh scripts/test/make_esp.sh
6975

7076
- name: Run QEMU (AllocatePage)
7177
run: make qemu-run > qemu-allocate.log
@@ -78,3 +84,19 @@ jobs:
7884

7985
- name: Check QEMU output (AllocatePage)
8086
run: sh scripts/test/check_allocate_test.sh
87+
88+
# Test 3: Hello
89+
- name: Create ESP (Hello)
90+
run: EFI_FILE=edk2/Build/MdeModule/DEBUG_GCC5/RISCV64/Hello.efi sh scripts/test/make_esp.sh
91+
92+
- name: Run QEMU (Hello)
93+
run: make qemu-run > qemu-hello.log
94+
95+
- name: Upload QEMU log (Hello)
96+
uses: actions/upload-artifact@v4
97+
with:
98+
name: log-hello
99+
path: qemu-hello.log
100+
101+
- name: Check QEMU output (Hello)
102+
run: sh scripts/test/check_hello_test.sh

scripts/test/build_edk2.sh

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,22 @@ make -C edk2/BaseTools
4141
. "$EDK_DIR/edksetup.sh" BaseTools
4242

4343
echo "[4/4] 准备 HelloRiscv 和 AllocatePage 示例..."
44-
# mkdir -p "$EDK_DIR/Hello"
45-
# cp -r "$PROJECT_ROOT/tests/edk2-Hello" "$EDK_DIR"
46-
# mv "$EDK_DIR/edk2-Hello"/* "$EDK_DIR/Hello/"
47-
# cp -r "$EDK_DIR/MdeModulePkg/MdeModulePkg.dsc" "$EDK_DIR/Hello/Hello.dsc"
48-
# printf "\n[Components]\n Hello/Hello.inf\n" >> "$EDK_DIR/Hello/Hello.dsc"
49-
# build -a RISCV64 -t GCC5 -p "$EDK_DIR/Hello/Hello.dsc"
44+
# edk2-Hello
45+
mkdir -p "$EDK_DIR/Hello"
46+
cp -r "$PROJECT_ROOT/tests/edk2-Hello" "$EDK_DIR"
47+
mv "$EDK_DIR/edk2-Hello"/* "$EDK_DIR/Hello/"
48+
cp -r "$EDK_DIR/MdeModulePkg/MdeModulePkg.dsc" "$EDK_DIR/Hello/Hello.dsc"
49+
printf "\n[Components]\n Hello/Hello.inf\n" >> "$EDK_DIR/Hello/Hello.dsc"
50+
build -a RISCV64 -t GCC5 -p "$EDK_DIR/Hello/Hello.dsc"
51+
52+
# edk2-HelloRiscv
5053
cp -r "$PROJECT_ROOT/tests/edk2-HelloRiscv" "$EDK_DIR"
5154
mv "$EDK_DIR/edk2-HelloRiscv" "$EDK_DIR/HelloRiscv/"
5255
build -a RISCV64 -t GCC5 -p "$EDK_DIR/HelloRiscv/HelloRiscv.dsc"
5356

57+
# edk2-AllocatePage
5458
cp -r "$PROJECT_ROOT/tests/edk2-AllocatePage" "$EDK_DIR"
5559
mv "$EDK_DIR/edk2-AllocatePage" "$EDK_DIR/AllocatePage/"
5660
build -a RISCV64 -t GCC5 -p "$EDK_DIR/AllocatePage/AllocatePage.dsc"
5761

58-
echo "EDK2 与示例构建完成。生成的文件位于:$WORKSPACE_DIR/Build/DEBUG_GCC5/RISCV64"
62+
echo "EDK2 与示例构建完成。"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/bin/bash
2+
set -e
3+
4+
LOG_FILE="qemu-hello-riscv.log"
5+
TARGET_STRING="EFI Output: Hello, World!"
6+
7+
if [ ! -f "$LOG_FILE" ]; then
8+
echo "$LOG_FILE 不存在"
9+
exit 1
10+
fi
11+
12+
if grep -qF "$TARGET_STRING" "$LOG_FILE"; then
13+
echo "✅ 找到匹配日志行"
14+
exit 0
15+
else
16+
echo "❌ 未找到匹配日志行"
17+
exit 2
18+
fi

scripts/test/make_esp.sh

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@ PROJECT_ROOT=$(pwd)
55
IMG_NAME="disk.img"
66
MOUNT_DIR="mnt_fat32"
77
ESP_DIR="$MOUNT_DIR/EFI/BOOT"
8-
EFI_NAME="${EFI_NAME:-HelloRiscv}"
9-
BUILD_FLAVOR="${BUILD_FLAVOR:-DEBUG_GCC5}"
10-
ARCH_DIR="${ARCH_DIR:-RISCV64}"
8+
9+
EFI_FILE="${EFI_FILE:-edk2/Build/DEBUG_GCC5/RISCV64/BOOTRISCV64.EFI}"
1110

1211
if [ ! -d "$MOUNT_DIR" ]; then
1312
mkdir "$MOUNT_DIR"
@@ -20,7 +19,7 @@ echo "[2/3] 创建 ESP 目录结构..."
2019
sudo mkdir -p "$ESP_DIR"
2120

2221
echo "[3/3] 复制 efi 文件到 ESP..."
23-
SRC_EFI="$PROJECT_ROOT/edk2/Build/$BUILD_FLAVOR/$ARCH_DIR/${EFI_NAME}.efi"
22+
SRC_EFI="$PROJECT_ROOT/$EFI_FILE"
2423
echo "源文件: $SRC_EFI"
2524
sudo cp "$SRC_EFI" "$ESP_DIR/BOOTRISCV64.EFI"
2625

0 commit comments

Comments
 (0)