@@ -28,7 +28,6 @@ mount_rootfs() {
2828
2929prepare_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
7076deploy_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 ==="
0 commit comments