viewer/curl: clean stale CI build dir + guard against system libcurl shadowing
Build Packages / build:windows:cuda (push) Failing after 3m45s
Build Packages / build:windows:nocuda (push) Failing after 3m43s
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m26s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m52s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m13s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 9m45s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m38s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m2s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m57s
Build Packages / build:windows:nocuda (pull_request) Failing after 14m18s
Build Packages / build:windows:cuda (pull_request) Failing after 14m49s
Build Packages / build:rpm (rocky8) (push) Successful in 10m27s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m18s
Build Packages / build:rpm (rocky9) (push) Successful in 10m58s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m20s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m57s
Build Packages / Generate python client (push) Successful in 26s
Build Packages / Build documentation (push) Successful in 59s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (durin plugin) (push) Successful in 7m26s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m20s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m50s
Build Packages / DIALS test (push) Successful in 12m6s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m22s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m58s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 9m14s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 9m53s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 8m48s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 8m25s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 9m24s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 9m13s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 10m24s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 9m54s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 9m40s
Build Packages / XDS test (durin plugin) (pull_request) Successful in 6m17s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 9m19s
Build Packages / Generate python client (pull_request) Successful in 16s
Build Packages / Build documentation (pull_request) Successful in 51s
Build Packages / Create release (pull_request) Skipped
Build Packages / DIALS test (pull_request) Successful in 11m28s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 6m55s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m18s
Build Packages / Unit tests (push) Successful in 1h44m10s
Build Packages / Unit tests (pull_request) Successful in 1h42m20s

Self-hosted runners reuse the workspace Docker volume, so a stale build/ dir
could leave jfjoch_viewer linking a system libcurl instead of the vendored
FetchContent static one (curl configured but never compiled; viewer linked the
OS curl). Add a "Clean previous build" step (rm -rf build) to the two Linux
viewer jobs (build-viewer-tgz, build-rpm), and assert libcurl_static exists
after FetchContent_MakeAvailable(curl) so any future shadowing fails loudly
instead of silently linking the OS curl with the wrong TLS/Kerberos backend.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-11 18:45:51 +02:00
co-authored by Claude Opus 4.8
parent 4fcbb09771
commit 53ffb56aae
2 changed files with 17 additions and 0 deletions
+8
View File
@@ -124,6 +124,10 @@ jobs:
use_cuda: 'OFF'
steps:
- uses: actions/checkout@v4
- name: Clean previous build
shell: bash
run: rm -rf build # self-hosted runners reuse the workspace volume; a stale build dir
# can leave the viewer linking a system libcurl instead of the vendored one
- name: Configure viewer build
shell: bash
run: |
@@ -219,6 +223,10 @@ jobs:
upload_url: https://gitea.psi.ch/api/packages/mx/debian/pool/noble/nocuda/upload
steps:
- uses: actions/checkout@v4
- name: Clean previous build
shell: bash
run: rm -rf build # self-hosted runners reuse the workspace volume; a stale build dir
# can leave the viewer linking a system libcurl instead of the vendored one
- name: Setup build (cmake)
shell: bash
run: |
+9
View File
@@ -296,6 +296,15 @@ IF (JFJOCH_VIEWER_BUILD OR JFJOCH_VIEWER_ONLY)
GIT_TAG curl-8_11_1
EXCLUDE_FROM_ALL)
FetchContent_MakeAvailable(curl)
# The viewer must link the vendored static libcurl, never a system one. If FetchContent is
# ever short-circuited (find_package / a dependency provider resolving CURL to the OS libcurl,
# or a stale runner build dir), the libcurl_static target is absent -- fail loudly instead of
# silently linking the system curl with the wrong TLS/Kerberos backend.
IF (NOT TARGET libcurl_static)
MESSAGE(FATAL_ERROR
"libcurl was not built from FetchContent (libcurl_static target missing) -- a "
"system libcurl is shadowing the vendored one; wipe the build dir and reconfigure.")
ENDIF()
ENDIF()
IF (JFJOCH_VIEWER_ONLY)