From f1e53e89e4916878575344f0203d5c052309f0b8 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 7 May 2026 18:52:06 +0000 Subject: [PATCH] Bump OCCT to 8.0.0 final release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The OCCT V8_0_0 tag was published on 2026-05-06. This bumps the static dependency from V8_0_0_beta1 to V8_0_0 and tidies up the lingering `rc5` literal in the CI cache keys. No source changes — the codebase already migrated all of beta1's deprecations in v0.2.0. Co-Authored-By: Claude Opus 4.7 (1M context) https://claude.ai/code/session_01WvR4p5fQaZmmKF1X9aycRD --- .github/workflows/build.yml | 6 +++--- CLAUDE.md | 4 ++-- scripts/build-occt-deps.sh | 13 +++---------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 02b7cf5..a984b14 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: uses: actions/cache@v4 with: path: deps/occt-install - key: occt-8.0.0-rc5-windows-x64-${{ hashFiles('scripts/build-occt-deps.sh') }} + key: occt-8.0.0-windows-x64-${{ hashFiles('scripts/build-occt-deps.sh') }} - name: Build OCCT dependencies if: steps.cache-occt.outputs.cache-hit != 'true' @@ -59,7 +59,7 @@ jobs: uses: actions/cache@v4 with: path: deps/occt-install - key: occt-8.0.0-rc5-macos-arm64-${{ hashFiles('scripts/build-occt-deps.sh') }} + key: occt-8.0.0-macos-arm64-${{ hashFiles('scripts/build-occt-deps.sh') }} - name: Build OCCT dependencies if: steps.cache-occt.outputs.cache-hit != 'true' @@ -100,7 +100,7 @@ jobs: uses: actions/cache@v4 with: path: deps/occt-install - key: occt-8.0.0-rc5-linux-x64-${{ hashFiles('scripts/build-occt-deps.sh') }} + key: occt-8.0.0-linux-x64-${{ hashFiles('scripts/build-occt-deps.sh') }} - name: Build OCCT dependencies if: steps.cache-occt.outputs.cache-hit != 'true' diff --git a/CLAUDE.md b/CLAUDE.md index f5fa83e..5dc48eb 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -46,9 +46,9 @@ On headless Linux the viewer test needs `xvfb-run ctest …`. CI on all three pl ## OCCT dependency -`scripts/build-occt-deps.sh` clones OCCT at tag `V8_0_0_beta1` from `Open-Cascade-SAS/OCCT` and builds it as **static** libraries with a curated module subset (DataExchange, FoundationClasses, ModelingAlgorithms, ModelingData, Visualization). FreeType, FreeImage, RapidJSON, TBB, VTK, Draco, FFmpeg, OpenVR, Tcl are all disabled to keep the dependency minimal. Linux builds add `USE_XLIB=ON`. The script tolerates executable-link failures (`|| true`) because we only need the static `.a`/`.lib` files. +`scripts/build-occt-deps.sh` clones OCCT at tag `V8_0_0` from `Open-Cascade-SAS/OCCT` and builds it as **static** libraries with a curated module subset (DataExchange, FoundationClasses, ModelingAlgorithms, ModelingData, Visualization). FreeType, FreeImage, RapidJSON, TBB, VTK, Draco, FFmpeg, OpenVR, Tcl are all disabled to keep the dependency minimal. Linux builds add `USE_XLIB=ON`. The script tolerates executable-link failures (`|| true`) because we only need the static `.a`/`.lib` files. -**Known build quirk (rc5/beta1):** OCCT 8.0.0's generated Makefiles intermittently skip the `mkdir` for object subdirectories (e.g. `TKShHealing.dir/ShapeAlgo/`, `ShapeProcessAPI/`) under high `-j` parallelism, causing `error: unable to open output file ... 'No such file or directory'`. Workaround: re-run `cmake --build . --parallel N` from inside `deps/occt-build` until it converges, or pre-create the missing subdirs with `mkdir -p`. The script does not yet auto-recover from this, so a fresh clean build may need 1–2 retries. +**Known build quirk (rc5/beta1/final):** OCCT 8.0.0's generated Makefiles intermittently skip the `mkdir` for object subdirectories (e.g. `TKShHealing.dir/ShapeAlgo/`, `ShapeProcessAPI/`) under high `-j` parallelism, causing `error: unable to open output file ... 'No such file or directory'`. Workaround: re-run `cmake --build . --parallel N` from inside `deps/occt-build` until it converges, or pre-create the missing subdirs with `mkdir -p`. The script does not yet auto-recover from this, so a fresh clean build may need 1–2 retries. `CMakeLists.txt` searches `${OCCT_INSTALL_DIR}` for headers under `include/opencascade`, `include`, or Windows-style `inc/`; libraries under `lib/` or `win64/vc14/lib/`. The required toolkit list is hand-maintained at `OCCT_LIBS`. **Linux linking** wraps these archives in `-Wl,--start-group … -Wl,--end-group` because OCCT's static archives have circular dependencies — adding a new `TK*` toolkit on Linux often surfaces as an unresolved-symbol error rather than a missing-library error; check the OCCT_LIBS list first. macOS/Windows do not need the group wrapping. diff --git a/scripts/build-occt-deps.sh b/scripts/build-occt-deps.sh index 3b3eac1..10150c1 100755 --- a/scripts/build-occt-deps.sh +++ b/scripts/build-occt-deps.sh @@ -18,9 +18,7 @@ set -e OCCT_VERSION="8.0.0" -# Use beta1 (feature-frozen 2026-04-30; final 8.0.0 planned 2026-05-07). -# Switch to "" once the final V8_0_0 tag is published. -OCCT_RC="beta1" +OCCT_RC="" # Pre-release tags use format V8_0_0_rc5 / V8_0_0_beta1; release uses V8_0_0 if [ -n "$OCCT_RC" ]; then OCCT_TAG="V${OCCT_VERSION//./_}_${OCCT_RC}" @@ -74,13 +72,8 @@ cd "$DEPS_DIR" if [ ! -d "occt-src" ]; then echo ">>> Downloading OCCT source..." - if [ -n "$OCCT_RC" ]; then - git clone --depth 1 --branch "$OCCT_TAG" \ - https://github.com/Open-Cascade-SAS/OCCT.git occt-src - else - git clone --depth 1 --branch "$OCCT_TAG" \ - https://git.dev.opencascade.org/repos/occt.git occt-src - fi + git clone --depth 1 --branch "$OCCT_TAG" \ + https://github.com/Open-Cascade-SAS/OCCT.git occt-src else echo ">>> OCCT source already exists, skipping download" fi