Skip to content

Commit 10b15c5

Browse files
committed
ci-test
1 parent 751da5d commit 10b15c5

File tree

2 files changed

+46
-25
lines changed

2 files changed

+46
-25
lines changed

platform/aarch64/qemu-gicv3/test/systemtest/trootfs_deploy.sh

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,13 @@ mount_rootfs() {
2828

2929
prepare_sources() {
3030
echo "=== Cloning required repositories ==="
31-
git clone https://github.com/CHonghaohao/linux_5.4.git || return 1
32-
git clone https://github.com/syswonder/hvisor-tool.git || return 1
31+
# 如果目录已存在,假设代码已由CI的checkout步骤准备好,跳过clone
32+
if [ ! -d "linux_5.4" ]; then
33+
git clone https://github.com/CHonghaohao/linux_5.4.git || return 1
34+
fi
35+
if [ ! -d "hvisor-tool" ]; then
36+
git clone https://github.com/syswonder/hvisor-tool.git || return 1
37+
fi
3338
}
3439

3540
build_hvisor_tool() {
@@ -40,25 +45,24 @@ build_hvisor_tool() {
4045

4146
case "${ARCH}" in
4247
riscv64)
43-
# 设置编译器
48+
# 设置编译器和 sysroot
4449
export CC="riscv64-linux-gnu-gcc --sysroot=/usr/riscv64-linux-gnu"
45-
# 准备需要强制注入的 CFLAGS
46-
# --sysroot: 指定系统根,用于链接库
47-
# -I/usr/riscv64-linux-gnu/include: 指定 C 标准库头文件路径
48-
# -I/usr/lib/gcc-cross/riscv64-linux-gnu/11/include-fixed: 指定 GCC 修正头文件路径,解决 limits.h 问题
49-
# -U_FORTIFY_SOURCE ...: 解决 glibc 版本安全检查问题
50-
CFLAGS_EXTRA="--sysroot=/usr/riscv64-linux-gnu -I/usr/riscv64-linux-gnu/include -I/usr/lib/gcc-cross/riscv64-linux-gnu/11/include-fixed -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0"
50+
# 【重要】仅使用 --sysroot,避免手动添加 -I 指定系统头文件路径,以防破坏编译器的头文件搜索顺序。
51+
CFLAGS_EXTRA="--sysroot=/usr/riscv64-linux-gnu -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0"
5152
;;
5253
aarch64)
54+
# 设置编译器和 sysroot
5355
export CC="aarch64-linux-gnu-gcc --sysroot=/usr/aarch64-linux-gnu"
54-
CFLAGS_EXTRA="--sysroot=/usr/aarch64-linux-gnu -I/usr/aarch64-linux-gnu/include -I/usr/lib/gcc-cross/aarch64-linux-gnu/11/include-fixed -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0"
56+
# 【重要】仅使用 --sysroot,编译器会自动、正确地查找系统头文件,避免 "limits.h" 等编译错误。
57+
# 同样地,移除冗余且有害的 -I 标志。
58+
CFLAGS_EXTRA="--sysroot=/usr/aarch64-linux-gnu -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0"
5559
;;
5660
esac
5761

5862
# 在 make 命令中,将我们构造的 CFLAGS_EXTRA 添加进去
59-
# 我们使用 CFLAGS+="${CFLAGS_EXTRA}" 的语法,确保所有标志都被正确传递
63+
# 【重要】ARCH 参数必须与当前构建的架构匹配,使用 ${ARCH} 变量使其动态化。
6064
make -e all \
61-
ARCH=riscv \
65+
ARCH=${ARCH} \
6266
LOG=LOG_INFO \
6367
KDIR="${LINUX_KERNEL_DIR}" \
6468
"CFLAGS+=${CFLAGS_EXTRA}" \
@@ -69,6 +73,9 @@ deploy_artifacts() {
6973
echo "=== Deploying build artifacts ==="
7074
local dest_dir="${ROOTFS_DIR}/home/arm64"
7175
local test_dest="${dest_dir}/test"
76+
# 创建目标目录,确保复制操作不会因目录不存在而失败
77+
sudo mkdir -p "${dest_dir}"
78+
sudo mkdir -p "${test_dest}/testcase"
7279
# Copy main components
7380
sudo cp -v "${HVISOR_TOOL_DIR}/tools/hvisor" "${dest_dir}/"
7481
sudo cp -v "${HVISOR_TOOL_DIR}/driver/hvisor.ko" "${dest_dir}/"
@@ -98,7 +105,8 @@ deploy_artifacts() {
98105

99106
# Setup environment
100107
mount_rootfs
101-
prepare_sources
108+
# CI中代码已由 actions/checkout@v4 准备好,通常不需要再 clone
109+
# prepare_sources
102110

103111
# Build process
104112
if ! build_hvisor_tool; then

platform/riscv64/qemu-plic/test/systemtest/trootfs_deploy.sh

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,13 @@ mount_rootfs() {
2828

2929
prepare_sources() {
3030
echo "=== Cloning required repositories ==="
31-
git clone https://github.com/CHonghaohao/linux_v6.10-rc1.git || return 1
32-
git clone https://github.com/syswonder/hvisor-tool.git || return 1
31+
# 如果目录已存在,假设代码已由CI的checkout步骤准备好,跳过clone
32+
if [ ! -d "linux_v6.10-rc1" ]; then
33+
git clone https://github.com/CHonghaohao/linux_v6.10-rc1.git || return 1
34+
fi
35+
if [ ! -d "hvisor-tool" ]; then
36+
git clone https://github.com/syswonder/hvisor-tool.git || return 1
37+
fi
3338
}
3439

3540
build_hvisor_tool() {
@@ -40,25 +45,29 @@ build_hvisor_tool() {
4045

4146
case "${ARCH}" in
4247
riscv64)
43-
# 设置编译器
48+
# 设置编译器和 sysroot
4449
export CC="riscv64-linux-gnu-gcc --sysroot=/usr/riscv64-linux-gnu"
45-
# 准备需要强制注入的 CFLAGS
46-
# --sysroot: 指定系统根,用于链接库
47-
# -I/usr/riscv64-linux-gnu/include: 指定 C 标准库头文件路径
48-
# -I/usr/lib/gcc-cross/riscv64-linux-gnu/11/include-fixed: 指定 GCC 修正头文件路径,解决 limits.h 问题
49-
# -U_FORTIFY_SOURCE ...: 解决 glibc 版本安全检查问题
50-
CFLAGS_EXTRA="--sysroot=/usr/riscv64-linux-gnu -I/usr/riscv64-linux-gnu/include -I/usr/lib/gcc-cross/riscv64-linux-gnu/11/include-fixed -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0"
50+
# 准备需要强制注入的 CFLAGS
51+
# --sysroot: 正确指定交叉编译的系统根。编译器会自动在此根下查找头文件和库。
52+
# 【重要】避免手动添加 -I 来指定系统头文件路径 (如 -I/usr/riscv64-linux-gnu/include),
53+
# 这会干扰编译器的标准头文件搜索顺序,特别是对 #include_next 的处理,从而导致 "limits.h" 找不到的编译错误。
54+
# -U_FORTIFY_SOURCE ...: 解决 glibc 版本安全检查问题
55+
CFLAGS_EXTRA="--sysroot=/usr/riscv64-linux-gnu -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0"
5156
;;
5257
aarch64)
58+
# 设置编译器和 sysroot
5359
export CC="aarch64-linux-gnu-gcc --sysroot=/usr/aarch64-linux-gnu"
54-
CFLAGS_EXTRA="--sysroot=/usr/aarch64-linux-gnu -I/usr/aarch64-linux-gnu/include -I/usr/lib/gcc-cross/aarch64-linux-gnu/11/include-fixed -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0"
60+
# --sysroot 会让编译器自动、正确地查找系统头文件。
61+
# 同样地,避免使用 -I 手动指定系统路径,以防破坏编译器的头文件搜索顺序。
62+
CFLAGS_EXTRA="--sysroot=/usr/aarch64-linux-gnu -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0"
5563
;;
5664
esac
5765

5866
# 在 make 命令中,将我们构造的 CFLAGS_EXTRA 添加进去
5967
# 我们使用 CFLAGS+="${CFLAGS_EXTRA}" 的语法,确保所有标志都被正确传递
68+
# 注意:这里的 ARCH 应该是 riscv64 而不是 riscv
6069
make -e all \
61-
ARCH=riscv \
70+
ARCH=riscv64 \
6271
LOG=LOG_INFO \
6372
KDIR="${LINUX_KERNEL_DIR}" \
6473
"CFLAGS+=${CFLAGS_EXTRA}" \
@@ -69,6 +78,9 @@ deploy_artifacts() {
6978
echo "=== Deploying build artifacts ==="
7079
local dest_dir="${ROOTFS_DIR}/home/riscv64"
7180
local test_dest="${dest_dir}/test"
81+
# 创建目标目录
82+
sudo mkdir -p "${dest_dir}"
83+
sudo mkdir -p "${test_dest}/testcase"
7284
# Copy main components
7385
sudo cp -v "${HVISOR_TOOL_DIR}/tools/hvisor" "${dest_dir}/"
7486
sudo cp -v "${HVISOR_TOOL_DIR}/driver/hvisor.ko" "${dest_dir}/"
@@ -98,7 +110,8 @@ deploy_artifacts() {
98110

99111
# Setup environment
100112
mount_rootfs
101-
prepare_sources
113+
# CI中代码已由 actions/checkout@v4 准备好,通常不需要再 clone
114+
# prepare_sources
102115

103116
# Build process
104117
if ! build_hvisor_tool; then

0 commit comments

Comments
 (0)