From 726ea5cf2f7dc9d91b0903fb8996c0d91d524171 Mon Sep 17 00:00:00 2001 From: shahoian Date: Thu, 20 Aug 2026 11:38:04 +0200 Subject: [PATCH] Fix clang post-installation test Suggested by codex with this explanation Clang.sh moves clang into bin-safe, then immediately runs: $(clang --print-target-triple) But plain clang is no longer in PATH, so the log shows: Clang.sh: line 95: clang: command not found Clang.sh: line 98: clang: command not found Clang.sh: line 101: clang: command not found That creates wrongly named config files: -clang.cfg -clang++.cfg -clang-cpp.cfg So bin-safe/clang++ does not load the intended --gcc-toolchain config. It falls back to system GCC 12: Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12 but this machine only has C++ headers for GCC 11 under /usr/include/c++/11, not GCC 12, so the final check fails with: test.cc:1:10: fatal error: 'iostream' file not found I also verified that using the aliBuild GCC toolchain explicitly works: clang++ --gcc-toolchain=/home/shahoian/alice/sw/ubuntu2204_x86-64/GCC-Toolchain/v14.2.0-alice2-1 ... One more issue: the generated config contains the literal text $GCC_TOOLCHAIN_ROOT; Clang config files did not expand that in my test. So the recipe likely needs both a correct clang path for --print-target-triple and a concrete GCC toolchain path, or another supported relocation mechanism. --- clang.sh | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/clang.sh b/clang.sh index 622b30d717..7ed0e20dae 100644 --- a/clang.sh +++ b/clang.sh @@ -111,14 +111,17 @@ rm "$INSTALLROOT"/lib/cmake/clang/*.bak # we want to resolve the environment when we run, not when we build this, to avoid # relocation issues in case GCC and clang are not built at the same time. if [ ! "X$GCC_TOOLCHAIN_ROOT" = X ]; then - cat > "$INSTALLROOT/bin-safe/$(clang --print-target-triple)-clang++.cfg" << \EOF ---gcc-toolchain=$GCC_TOOLCHAIN_ROOT + target_triple="$("$INSTALLROOT/bin-safe/clang" --print-target-triple)" + gcc_toolchain_root="$(eval echo "$GCC_TOOLCHAIN_ROOT")" + + cat > "$INSTALLROOT/bin-safe/${target_triple}-clang++.cfg" << EOF +--gcc-toolchain=$gcc_toolchain_root EOF - cat > "$INSTALLROOT/bin-safe/$(clang --print-target-triple)-clang.cfg" << \EOF ---gcc-toolchain=$GCC_TOOLCHAIN_ROOT + cat > "$INSTALLROOT/bin-safe/${target_triple}-clang.cfg" << EOF +--gcc-toolchain=$gcc_toolchain_root EOF - cat > "$INSTALLROOT/bin-safe/$(clang --print-target-triple)-clang-cpp.cfg" << \EOF ---gcc-toolchain=$GCC_TOOLCHAIN_ROOT + cat > "$INSTALLROOT/bin-safe/${target_triple}-clang-cpp.cfg" << EOF +--gcc-toolchain=$gcc_toolchain_root EOF fi