Skip to content

Update deps: Remove old Intel TBB support, Eigen 3.4..5.x etc#77

Merged
orex merged 15 commits into
masterfrom
deps_update
May 23, 2026
Merged

Update deps: Remove old Intel TBB support, Eigen 3.4..5.x etc#77
orex merged 15 commits into
masterfrom
deps_update

Conversation

@orex
Copy link
Copy Markdown
Owner

@orex orex commented May 14, 2026

No description provided.

@orex orex force-pushed the deps_update branch 10 times, most recently from 8aaba84 to e5653b4 Compare May 14, 2026 22:55
orex added 7 commits May 15, 2026 23:49
…nstants

* Raise the baseline toolchain to C++17 / CMake 3.16 / Boost 1.71.
* Replace deprecated Boost usage with standard library equivalents:
  std::optional, std::filesystem
* Switch to Eigen3::Eigen targets, remove hard version pinning,
* Update xxHash to v0.8.3.
* GitHub Actions: bump actions and runners versions
@orex orex mentioned this pull request May 16, 2026
@orex orex force-pushed the deps_update branch 4 times, most recently from f2f57b5 to cc15b6b Compare May 22, 2026 23:16
orex and others added 5 commits May 23, 2026 15:52
Matrixes deploy-build-linux on arch (x86_64 + arm64), reusing the same
Ubuntu 20.04 container recipe. arm64 leg runs on ubuntu-22.04-arm with
-march=armv8-a and LEGACY_GLIBC_EXP=OFF (the symbol-version shim is
x86_64-only). deploy-to-site picks up the new linux-arm64-bin artifact
and ships supercell-linux-arm64.tar.gz.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
v5 runs on the Node.js 24 runtime (requires runner >=2.327.1; both
ubuntu-22.04 and ubuntu-24.04 hosted runners are well past that). Input
schema for path/key/restore-keys is unchanged across actions/cache,
actions/cache/restore and actions/cache/save.

The MXE ccache step on the Windows build previously used the monolithic
actions/cache with save-always: true. That input has been deprecated
upstream because the post-step it relies on doesn't fire reliably on
failure / cancel. Split into a paired actions/cache/restore (front)
+ actions/cache/save (back, gated on `if: always() && primary-key !=
''`) so the cache survives a partial MXE build the same way the
develop-linux ccache already does.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Two new scripts in tests/:

* run_examples.sh runs supercell against six tutorial cases (A..F) with
  a pinned --random-seed and packs the per-case run.log, time.txt and
  output files into a single tar.gz. Honours a RUN_WRAP env var so the
  parallel test can prepend taskset for affinity-based core capping (and
  rescue_wrap.sh can shim individual supercell invocations). Auto-detects
  .exe and prepends wine. Falls back to gtime on macOS where /usr/bin/time
  is BSD. The abspath helper preserves symlinks so /snap/bin/<app> stays
  intact — snap's launcher dispatches on argv[0] and resolving the
  symlink to /usr/bin/snap would break it.

* compare_outputs.py compares two or more archives. Strips the volatile
  log lines (banner, Command line:, Total enumeration time:, plus the
  "Total N output files was deleted successfully" diagnostic whose
  position in the log changed with the case-C cleanup-order fix),
  normalises CRLF→LF, replaces the embedded output-path prefix in
  coulomb-energy files with the bare basename, then runs a binary pass
  and, on mismatch, a tolerance pass (--rtol 1e-9 --atol 1e-12 by
  default). Coulomb-energy files use multiset comparison by default to
  tolerate legitimate tie-break swaps; --strict-order disables that for
  the parallel test. Final stdout line is
    RESULT: {binary,almost,not}_equivalent tags=...
  with matching exit codes 0/1/2 (and 3 on extract/IO error) for CI
  consumption.

* rescue_wrap.sh works around a pre-v2.1.2 case-C bug: inside
  write_files() supercell opens cell113_coulomb_energy.txt and then
  unlinks it via a sibling directory scan, so the FD ends up writing
  into an orphaned inode that gets freed on close. The shim pre-stages
  the expected output as a hardlink to a sibling .rescue/ path; the
  inode survives the unlink, and the file is moved back if missing
  after supercell exits. Used via RUN_WRAP=tests/rescue_wrap.sh on the
  two pre-fix invocations in the reference-data job; harmless no-op on
  post-fix binaries.

CI workflow gains three things:

* reference-data job: downloads supercell v2.1.1 from the orex archive
  (rescued via rescue_wrap.sh), runs the suite, then installs the
  latest snap and runs again (also rescued). The two are required to
  compare at least almost_equivalent. The v2.1.1 archive is uploaded
  as the reference-test-data artifact.

* All four build job groups (build-develop-linux ×4, deploy-build-linux
  ×2, deploy-build-macos, deploy-build-windows) download
  reference-test-data, run the suite on the freshly built binary and
  compare. Job fails unless the verdict is binary_equivalent or
  almost_equivalent (exit ≤ 1). WINEDEBUG=-all is set on the Windows
  job so wine's startup chatter doesn't leak into the captured run.log.

* parallel-test job: default Ubuntu 24.04 build with stock TBB /
  libarchive, then runs the suite four times under taskset -c 0..N-1
  for N = 1..4. All four archives must be binary_equivalent with
  --strict-order — any drift means supercell produces different
  doubles depending on thread count.

Also touches .gitignore to keep build_*/ and __pycache__/ out of
working trees.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Apple Silicon (macos-15) keeps the existing macos-bin artifact name
and supercell-osx.tar.gz deploy path; Intel (macos-15-intel) adds a
new macos-intel-bin artifact published as supercell-osx-intel.tar.gz.
- core22 → core24 (Ubuntu 24.04, boost 1.83); architectures → platforms
- drop unused libboost-{filesystem,system,test} stage/build packages
  (supercell only links Boost::program_options)
- per-arch -march in override-build: sandybridge (amd64) / armv8-a (arm64),
  with -O3 -flto=auto matching the deploy CI flags
- pass BUILD_TESTING=OFF and BUILD_DOC=OFF in the snap; explicitly
  declare BUILD_TESTING in the top-level CMakeLists and guard src/tests/
  on it so the flag can actually be switched off

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
orex and others added 2 commits May 23, 2026 18:41
deploy-to-site used to clone orex/orex.github.io over SSH and push the
per-platform supercell archives into supercell/external/exe/ on the
gh-pages branch. Replace that with gh release upload so the same five
archives (linux, linux-arm64, osx, osx-intel, windows) land directly on
the GitHub Release that triggered the workflow.

- Job renamed deploy-to-site → deploy-to-release
- Dropped SSH setup, gh-pages clone/commit/push, openssh-client install
- Added permissions: contents: write so GITHUB_TOKEN can attach assets
- DEPLOY_KEY repo secret is no longer consumed by this workflow

Pages-served binaries from v2.1.1 and earlier remain in place; this
change only affects future releases.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@orex orex merged commit f025087 into master May 23, 2026
49 of 59 checks passed
@orex orex deleted the deps_update branch May 23, 2026 17:06
@orex orex restored the deps_update branch May 23, 2026 17:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant