From 6e34b8660fe336e7abb6dd0cf0c606d1d27d614f Mon Sep 17 00:00:00 2001 From: Hanjin Bae Date: Wed, 10 Jun 2026 00:11:58 +0900 Subject: [PATCH] fix: add U_DISABLE_RENAMING for ICU compat + ICU symbol diagnostic vcpkg ICU may be built with --disable-renaming, exporting plain symbols (ucnv_fromUChars) while tectonic C++ code references versioned symbols (ucnv_fromUChars_78). Pass -DU_DISABLE_RENAMING=1 to match. Also add nm diagnostic to verify. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/build-desktop.yml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index 13faa46..8e57553 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -506,19 +506,24 @@ jobs: ZOTERO_CONSUMER_KEY: ${{ secrets.ZOTERO_CONSUMER_KEY }} ZOTERO_CONSUMER_SECRET: ${{ secrets.ZOTERO_CONSUMER_SECRET }} TECTONIC_DEP_BACKEND: vcpkg - CXXFLAGS: "-std=c++17" - CFLAGS: "" + CXXFLAGS: "-std=c++17 -DU_DISABLE_RENAMING=1" + CFLAGS: "-DU_DISABLE_RENAMING=1" # mold handles both graphite2 hidden symbols and Rust version scripts. # Prepend vcpkg lib path so ICU/harfbuzz from vcpkg are found before # system versions (prevents ICU version suffix mismatch). RUSTFLAGS: "-C link-arg=-fuse-ld=mold -C link-arg=-L${{ env.VCPKG_ROOT }}/installed/x64-linux/lib" run: | + # Diagnose: check if vcpkg ICU has versioned or unversioned symbols + echo "=== vcpkg ICU symbols ===" + nm -D $HOME/vcpkg/installed/x64-linux/lib/libicuuc.so 2>/dev/null | grep "ucnv_fromUChars" | head -3 || echo "NOT FOUND" + echo "=== vcpkg ICU renaming config ===" + grep -E "U_DISABLE_RENAMING|U_ICU_VERSION_SUFFIX" $HOME/vcpkg/installed/x64-linux/include/unicode/uvernum.h $HOME/vcpkg/installed/x64-linux/include/unicode/uconfig.h 2>/dev/null | head -5 || echo "NOT FOUND" + # Move system ICU .so out of the way so linker finds vcpkg's ICU first. - # System ICU (v70/74) has different version suffix than vcpkg ICU (v78). sudo mkdir -p /usr/lib/x86_64-linux-gnu/icu-system-backup sudo mv /usr/lib/x86_64-linux-gnu/libicu*.so* /usr/lib/x86_64-linux-gnu/icu-system-backup/ 2>/dev/null || true pnpm --filter @claude-prism/desktop tauri build --target x86_64-unknown-linux-gnu - # Restore system ICU (needed for other tools) + # Restore system ICU sudo mv /usr/lib/x86_64-linux-gnu/icu-system-backup/libicu*.so* /usr/lib/x86_64-linux-gnu/ 2>/dev/null || true - name: Collect updater artifacts