Skip to content

Commit 1ceae75

Browse files
committed
fix(ci): 限定 picolibc 环境仅用于 benchmarks,避免污染主工程构建
背景:上一次修复 -lm 后,将 CPATH/C_INCLUDE_PATH/LIBRARY_PATH 写入 GITHUB_ENV,导致后续 host 侧 C++ 构建(fmt)误用 RISC-V picolibc 头文件,出现 std/pthread/locale 大量冲突并在 Build 步骤失败。 本次调整: 1) 删除全局 Setup RISC-V libc include/lib paths 步骤,避免环境变量影响整个 job。 2) 将 include/lib 路径探测逻辑内联到 Build riscv-tests Benchmarks 步骤。 3) 仅在 benchmarks make 命令中传入 CPATH/C_INCLUDE_PATH/LIBRARY_PATH 与 RISCV_GCC(可选 picolibc.specs),将影响范围收敛到目标步骤。 预期效果:benchmarks 仍能找到 picolibc 的 libm/头文件,主工程 cmake build 不再被交叉工具链头文件污染。
1 parent c777ff7 commit 1ceae75

1 file changed

Lines changed: 17 additions & 20 deletions

File tree

.github/workflows/ci.yml

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,17 @@ jobs:
3333
sudo cmake --build /tmp/gtest
3434
sudo install -m 644 /tmp/gtest/lib/libgtest*.a /usr/lib
3535
36-
- name: Setup RISC-V libc include/lib paths
36+
- name: Init Submodules
37+
run: git submodule update --init --recursive
38+
39+
- name: Build ISA Tests (p-only)
40+
run: |
41+
make -C riscv-tests/isa -f Makefile \
42+
src_dir="${GITHUB_WORKSPACE}/riscv-tests/isa" \
43+
XLEN=64 \
44+
tests='$(rv32ui_p_tests) $(rv32uc_p_tests) $(rv32um_p_tests) $(rv32ua_p_tests) $(rv32uf_p_tests) $(rv32ud_p_tests) $(rv32uzfh_p_tests) $(rv32uzba_p_tests) $(rv32uzbb_p_tests) $(rv32uzbc_p_tests) $(rv32uzbs_p_tests) $(rv32si_p_tests) $(rv32mi_p_tests) $(rv64ui_p_tests) $(rv64ua_p_tests) $(rv64uc_p_tests) $(rv64ud_p_tests) $(rv64uf_p_tests) $(rv64um_p_tests)'
45+
46+
- name: Build riscv-tests Benchmarks
3747
shell: bash
3848
run: |
3949
set -euo pipefail
@@ -53,38 +63,25 @@ jobs:
5363
fi
5464
lib_dir="$(dirname "${libm_path}")"
5565
56-
echo "CPATH=${include_dir}" >> "${GITHUB_ENV}"
57-
echo "C_INCLUDE_PATH=${include_dir}" >> "${GITHUB_ENV}"
58-
echo "LIBRARY_PATH=${lib_dir}" >> "${GITHUB_ENV}"
59-
66+
riscv_gcc_benchmark="riscv64-unknown-elf-gcc"
6067
specs_file="$(riscv64-unknown-elf-gcc -print-file-name=picolibc.specs)"
6168
if [[ "${specs_file}" != "picolibc.specs" && -f "${specs_file}" ]]; then
62-
echo "RISCV_GCC_BENCHMARK=riscv64-unknown-elf-gcc -specs=${specs_file}" >> "${GITHUB_ENV}"
69+
riscv_gcc_benchmark="riscv64-unknown-elf-gcc -specs=${specs_file}"
6370
echo "Detected picolibc specs: ${specs_file}"
6471
else
65-
echo "RISCV_GCC_BENCHMARK=riscv64-unknown-elf-gcc" >> "${GITHUB_ENV}"
6672
echo "picolibc.specs not found in GCC search path, fallback to default gcc + LIBRARY_PATH"
6773
fi
6874
6975
echo "Detected include dir: ${include_dir}"
7076
echo "Detected lib dir: ${lib_dir}"
7177
72-
- name: Init Submodules
73-
run: git submodule update --init --recursive
74-
75-
- name: Build ISA Tests (p-only)
76-
run: |
77-
make -C riscv-tests/isa -f Makefile \
78-
src_dir="${GITHUB_WORKSPACE}/riscv-tests/isa" \
79-
XLEN=64 \
80-
tests='$(rv32ui_p_tests) $(rv32uc_p_tests) $(rv32um_p_tests) $(rv32ua_p_tests) $(rv32uf_p_tests) $(rv32ud_p_tests) $(rv32uzfh_p_tests) $(rv32uzba_p_tests) $(rv32uzbb_p_tests) $(rv32uzbc_p_tests) $(rv32uzbs_p_tests) $(rv32si_p_tests) $(rv32mi_p_tests) $(rv64ui_p_tests) $(rv64ua_p_tests) $(rv64uc_p_tests) $(rv64ud_p_tests) $(rv64uf_p_tests) $(rv64um_p_tests)'
81-
82-
- name: Build riscv-tests Benchmarks
83-
run: |
8478
make -C riscv-tests/benchmarks -f Makefile \
8579
src_dir="${GITHUB_WORKSPACE}/riscv-tests/benchmarks" \
8680
XLEN=64 \
87-
RISCV_GCC="${RISCV_GCC_BENCHMARK}"
81+
CPATH="${include_dir}" \
82+
C_INCLUDE_PATH="${include_dir}" \
83+
LIBRARY_PATH="${lib_dir}" \
84+
RISCV_GCC="${riscv_gcc_benchmark}"
8885
8986
- name: Configure
9087
run: cmake -S . -B build

0 commit comments

Comments
 (0)