Skip to content

Commit adaa6ac

Browse files
committed
ci-test
1 parent ffde159 commit adaa6ac

2 files changed

Lines changed: 28 additions & 22 deletions

File tree

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

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ mount_rootfs() {
2828

2929
prepare_sources() {
3030
echo "=== Cloning required repositories ==="
31-
# 克隆 aarch64 需要的正确内核版本
3231
if [ ! -d "linux_5.4" ]; then
3332
git clone https://github.com/CHonghaohao/linux_5.4.git || return 1
3433
fi
@@ -41,24 +40,31 @@ build_hvisor_tool() {
4140
echo "=== Building hvisor components ==="
4241
cd "${HVISOR_TOOL_DIR}"
4342

43+
# 【关键修正:釜底抽薪】
44+
# 在编译前,直接用 sed 命令修改 hvisor-tool 的 Makefile,
45+
# 将其内部污染环境的 CFLAGS += ... 这一行注释掉。
46+
# 这是解决问题的最根本方法。
47+
echo "--- Patching hvisor-tool/tools/Makefile to prevent environment pollution ---"
48+
sed -i 's/^\(CFLAGS += -I\/usr\/aarch64-linux-gnu\/include.*\)/# \1/' tools/Makefile
49+
echo "--- Patching complete. Displaying patched file content: ---"
50+
cat tools/Makefile
51+
echo "--- End of patched file content ---"
52+
53+
4454
local MAKE_ARCH=""
4555

4656
case "${ARCH}" in
4757
riscv64)
48-
# riscv64 的配置
4958
export CC='riscv64-linux-gnu-gcc --sysroot=/usr/riscv64-linux-gnu -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0'
5059
MAKE_ARCH="riscv"
5160
;;
5261
aarch64)
53-
# 【终极修正】将所有编译标志直接注入 CC 变量。
5462
export CC='aarch64-linux-gnu-gcc --sysroot=/usr/aarch64-linux-gnu -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0'
55-
# 将 CI 的标准架构名 'aarch64' 翻译为 Makefile 期望的 'arm64'
5663
MAKE_ARCH="arm64"
5764
;;
5865
esac
5966

60-
# 【终极修正】调用 make 时,将 CFLAGS 强制设置为空,防止 Makefile 内部的任何污染。
61-
# 所有的编译环境控制现在都由我们上面定义的 CC 变量全权负责。
67+
# 我们依然使用劫持 CC 和清空 CFLAGS 的方法作为双重保险。
6268
make -e all \
6369
ARCH=${MAKE_ARCH} \
6470
LOG=LOG_INFO \
@@ -68,7 +74,7 @@ build_hvisor_tool() {
6874
}
6975

7076
deploy_artifacts() {
71-
# ... 此函数内容无需修改,它使用 aarch64 特定的路径 ...
77+
# ... 此函数内容无需修改 ...
7278
echo "=== Deploying build artifacts ==="
7379
local dest_dir="${ROOTFS_DIR}/home/arm64"
7480
local test_dest="${dest_dir}/test"
@@ -95,14 +101,9 @@ deploy_artifacts() {
95101
cd "${WORKSPACE_ROOT}/platform/aarch64/qemu-gicv3/image/virtdisk"
96102
mount_rootfs
97103
prepare_sources
98-
if [ "$SKIP_BUILD" != "true" ]; then
99-
echo "--- Build step is enabled. Starting build... ---"
100-
if ! build_hvisor_tool; then
101-
echo "ERROR: Build failed" >&2
102-
exit 1
103-
fi
104-
else
105-
echo "--- SKIP_BUILD is true. Skipping build step. ---"
104+
if ! build_hvisor_tool; then
105+
echo "ERROR: Build failed" >&2
106+
exit 1
106107
fi
107108
deploy_artifacts
108109
echo "=== Unmounting rootfs ==="

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

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,30 +36,35 @@ prepare_sources() {
3636
fi
3737
}
3838

39+
# ... 在 riscv64 的脚本中 ...
40+
3941
build_hvisor_tool() {
4042
echo "=== Building hvisor components ==="
4143
cd "${HVISOR_TOOL_DIR}"
4244

45+
# 【关键修正:釜底抽薪】
46+
# 对 riscv64 也进行同样的手术,注释掉其 Makefile 中污染环境的 CFLAGS。
47+
echo "--- Patching hvisor-tool/tools/Makefile to prevent environment pollution ---"
48+
sed -i 's/^\(CFLAGS += -I\/usr\/riscv64-linux-gnu\/include.*\)/# \1/' tools/Makefile
49+
echo "--- Patching complete. Displaying patched file content: ---"
50+
cat tools/Makefile
51+
echo "--- End of patched file content ---"
52+
53+
4354
local MAKE_ARCH=""
4455

4556
case "${ARCH}" in
4657
riscv64)
47-
# 【终极修正】将所有编译标志直接注入 CC 变量。
48-
# 我们将 --sysroot 和其他必要的标志与编译器本身绑定在一起。
4958
export CC='riscv64-linux-gnu-gcc --sysroot=/usr/riscv64-linux-gnu -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0'
50-
# 将 CI 的标准架构名 'riscv64' 翻译为 Makefile 期望的 'riscv'
5159
MAKE_ARCH="riscv"
5260
;;
5361
aarch64)
54-
# 【终极修正】对 aarch64 也采用同样策略。
5562
export CC='aarch64-linux-gnu-gcc --sysroot=/usr/aarch64-linux-gnu -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0'
56-
# 将 CI 的标准架构名 'aarch64' 翻译为 Makefile 期望的 'arm64'
5763
MAKE_ARCH="arm64"
5864
;;
5965
esac
6066

61-
# 【终极修正】调用 make 时,将 CFLAGS 强制设置为空,防止 Makefile 内部的任何污染。
62-
# 所有的编译环境控制现在都由我们上面定义的 CC 变量全权负责。
67+
# 双重保险
6368
make -e all \
6469
ARCH=${MAKE_ARCH} \
6570
LOG=LOG_INFO \

0 commit comments

Comments
 (0)