kde/H-Qt: wrappers zig cc/c++ para qtbase (CMake canonicaliza el symlink)
3er ciclo murió en [133/1749] con 'zig -std=gnu++17' (unknown command): CMake
resuelve el symlink cc→/opt/zig/zig al binario real, perdiendo el despacho por
argv[0]; ASM y custom-commands de Qt invocan zig directo sin subcomando. Fix:
scripts /tmp/zw/{cc,cxx} = exec zig cc/c++ -mcpu=baseline; CMAKE_{C,CXX,ASM}_COMPILER
apuntan a ellos. Un script no se canonicaliza ⇒ el subcomando viaja siempre.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -32,7 +32,19 @@ flags = []
|
||||
|
||||
[build.phases]
|
||||
configure = '''
|
||||
# El sandbox expone cc/c++ como symlinks a zig (despacho por argv[0]). CMake CANONICALIZA el symlink
|
||||
# al binario real /opt/zig/zig, perdiendo el basename 'cc' ⇒ al invocar el compilador directo (ASM,
|
||||
# custom commands de Qt) corre `/opt/zig/zig -std=… archivo` y zig lee -std como subcomando → falla.
|
||||
# Fix (patrón AR-wrapper): scripts reales que fuerzan `zig cc`/`zig c++`; un script no se canonicaliza.
|
||||
# Se replica -mcpu=baseline del wrapper del lab (coherencia con las deps ya selladas).
|
||||
mkdir -p /tmp/zw
|
||||
printf '#!/bin/sh\nexec /opt/zig/zig cc -mcpu=baseline "$@"\n' > /tmp/zw/cc
|
||||
printf '#!/bin/sh\nexec /opt/zig/zig c++ -mcpu=baseline "$@"\n' > /tmp/zw/cxx
|
||||
chmod +x /tmp/zw/cc /tmp/zw/cxx
|
||||
cmake -B build -G Ninja -Wno-dev \
|
||||
-DCMAKE_C_COMPILER=/tmp/zw/cc \
|
||||
-DCMAKE_CXX_COMPILER=/tmp/zw/cxx \
|
||||
-DCMAKE_ASM_COMPILER=/tmp/zw/cc \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF \
|
||||
|
||||
Reference in New Issue
Block a user