From 57038b60189cde5ebbb9c69e472d526c515b9866 Mon Sep 17 00:00:00 2001 From: Alan George Date: Thu, 3 Sep 2026 08:46:35 -0600 Subject: [PATCH 1/2] FFI version 0.12.76, clang compatibility changes --- .github/workflows/builds.yml | 8 ++++++++ .github/workflows/tests.yml | 19 +++++++++++++++++-- client-sdk-rust | 2 +- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml index f3fda0da..e572f06c 100644 --- a/.github/workflows/builds.yml +++ b/.github/workflows/builds.yml @@ -125,6 +125,14 @@ jobs: libcurl4-openssl-dev \ libwayland-dev libdecor-0-dev + # The libwebrtc artifact ships a hermetic libc++ built from LLVM trunk. + # Distro clang (14 on Ubuntu 22.04, 18 on 24.04) cannot compile its + # headers; the submodule script installs LLVM 21 and exports CC/CXX. + - name: Install clang for libwebrtc + if: runner.os == 'Linux' + shell: bash + run: client-sdk-rust/.github/scripts/install-clang.sh + - name: Install deps (macOS) if: runner.os == 'macOS' run: | diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 92f04bf5..ba0cc540 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -229,6 +229,14 @@ jobs: libwayland-dev libdecor-0-dev \ gdb jq + # The libwebrtc artifact ships a hermetic libc++ built from LLVM trunk. + # Distro clang (14 on Ubuntu 22.04, 18 on 24.04) cannot compile its + # headers; the submodule script installs LLVM 21 and exports CC/CXX. + - name: Install clang for libwebrtc + if: runner.os == 'Linux' + shell: bash + run: client-sdk-rust/.github/scripts/install-clang.sh + - name: Install deps (macOS) if: runner.os == 'macOS' run: | @@ -511,6 +519,12 @@ jobs: libwayland-dev libdecor-0-dev pip install --break-system-packages gcovr + # The coverage build compiles the Rust FFI too, so it needs the same + # compiler floor as the normal Linux build/test matrices. + - name: Install clang for libwebrtc + shell: bash + run: client-sdk-rust/.github/scripts/install-clang.sh + # ---------- Rust toolchain ---------- - name: Install Rust (stable) uses: dtolnay/rust-toolchain@6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772 @@ -546,8 +560,9 @@ jobs: run: | LLVM_VERSION=$(llvm-config --version | cut -d. -f1) echo "LIBCLANG_PATH=/usr/lib/llvm-${LLVM_VERSION}/lib" >> "$GITHUB_ENV" - GCC_VER=$(gcc -dumpversion | cut -d. -f1) - echo "GCOV_EXECUTABLE=gcov-${GCC_VER}" >> "$GITHUB_ENV" + LLVM_COV="$(dirname "${CXX}")/llvm-cov" + test -x "${LLVM_COV}" + echo "GCOV_EXECUTABLE=${LLVM_COV} gcov" >> "$GITHUB_ENV" # ---------- Configure with upstream preset + coverage flag overrides ---------- - name: Configure (linux-debug-tests preset + coverage flags) diff --git a/client-sdk-rust b/client-sdk-rust index 1a477bc4..2d9f01ab 160000 --- a/client-sdk-rust +++ b/client-sdk-rust @@ -1 +1 @@ -Subproject commit 1a477bc422c6890537b3bcdb017f0ac094d49661 +Subproject commit 2d9f01ab1e933a86a8a5c53805ee29ee58b9be1b From c62e6699a82e61354aea7b217a0d6186169dac02 Mon Sep 17 00:00:00 2001 From: Alan George Date: Thu, 3 Sep 2026 09:42:21 -0600 Subject: [PATCH 2/2] Unify clang installs --- .github/workflows/builds.yml | 5 +++-- .github/workflows/make-release.yml | 17 +++++++++++++---- .github/workflows/tests.yml | 12 +++++++----- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml index e572f06c..8af4b024 100644 --- a/.github/workflows/builds.yml +++ b/.github/workflows/builds.yml @@ -199,8 +199,9 @@ jobs: run: | echo "CXXFLAGS=-Wno-deprecated-declarations" >> "$GITHUB_ENV" echo "CFLAGS=-Wno-deprecated-declarations" >> "$GITHUB_ENV" - LLVM_VERSION=$(llvm-config --version | cut -d. -f1) - echo "LIBCLANG_PATH=/usr/lib/llvm-${LLVM_VERSION}/lib" >> "$GITHUB_ENV" + LLVM_ROOT="$(dirname "${CXX}")/.." + test -f "${LLVM_ROOT}/lib/libclang.so" + echo "LIBCLANG_PATH=${LLVM_ROOT}/lib" >> "$GITHUB_ENV" # ---------- Build ---------- - name: Build (Unix) diff --git a/.github/workflows/make-release.yml b/.github/workflows/make-release.yml index 45bb289d..de810ff7 100644 --- a/.github/workflows/make-release.yml +++ b/.github/workflows/make-release.yml @@ -125,6 +125,14 @@ jobs: libcurl4-openssl-dev \ libwayland-dev libdecor-0-dev + # The libwebrtc artifact ships a hermetic libc++ built from LLVM trunk. + # Distro clang cannot compile its headers; install the same LLVM version + # used by the Linux build and test workflows. + - name: Install clang for libwebrtc + if: runner.os == 'Linux' + shell: bash + run: client-sdk-rust/.github/scripts/install-clang.sh + - name: Install deps (macOS) if: runner.os == 'macOS' run: | @@ -185,10 +193,11 @@ jobs: - name: Set Linux build environment if: runner.os == 'Linux' run: | - echo "CXXFLAGS=-Wno-deprecated-declarations" >> $GITHUB_ENV - echo "CFLAGS=-Wno-deprecated-declarations" >> $GITHUB_ENV - LLVM_VERSION=$(llvm-config --version | cut -d. -f1) - echo "LIBCLANG_PATH=/usr/lib/llvm-${LLVM_VERSION}/lib" >> $GITHUB_ENV + echo "CXXFLAGS=-Wno-deprecated-declarations" >> "$GITHUB_ENV" + echo "CFLAGS=-Wno-deprecated-declarations" >> "$GITHUB_ENV" + LLVM_ROOT="$(dirname "${CXX}")/.." + test -f "${LLVM_ROOT}/lib/libclang.so" + echo "LIBCLANG_PATH=${LLVM_ROOT}/lib" >> "$GITHUB_ENV" # ---------- Build + Bundle (Unix) ---------- - name: Build and Bundle (Unix) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ba0cc540..398aa0f0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -299,8 +299,9 @@ jobs: run: | echo "CXXFLAGS=-Wno-deprecated-declarations" >> "$GITHUB_ENV" echo "CFLAGS=-Wno-deprecated-declarations" >> "$GITHUB_ENV" - LLVM_VERSION=$(llvm-config --version | cut -d. -f1) - echo "LIBCLANG_PATH=/usr/lib/llvm-${LLVM_VERSION}/lib" >> "$GITHUB_ENV" + LLVM_ROOT="$(dirname "${CXX}")/.." + test -f "${LLVM_ROOT}/lib/libclang.so" + echo "LIBCLANG_PATH=${LLVM_ROOT}/lib" >> "$GITHUB_ENV" - name: Configure Unix crash diagnostics if: runner.os != 'Windows' @@ -558,10 +559,11 @@ jobs: # ---------- Build environment setup ---------- - name: Set build environment run: | - LLVM_VERSION=$(llvm-config --version | cut -d. -f1) - echo "LIBCLANG_PATH=/usr/lib/llvm-${LLVM_VERSION}/lib" >> "$GITHUB_ENV" - LLVM_COV="$(dirname "${CXX}")/llvm-cov" + LLVM_ROOT="$(dirname "${CXX}")/.." + test -f "${LLVM_ROOT}/lib/libclang.so" + LLVM_COV="${LLVM_ROOT}/bin/llvm-cov" test -x "${LLVM_COV}" + echo "LIBCLANG_PATH=${LLVM_ROOT}/lib" >> "$GITHUB_ENV" echo "GCOV_EXECUTABLE=${LLVM_COV} gcov" >> "$GITHUB_ENV" # ---------- Configure with upstream preset + coverage flag overrides ----------