Update deps: Remove old Intel TBB support, Eigen 3.4..5.x etc#77
Merged
Conversation
8aaba84 to
e5653b4
Compare
…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
Closed
f2f57b5 to
cc15b6b
Compare
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>
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.