build(workflows): install Cephes deps in random_benchmarks.yml - #14056
Draft
Planeshifter wants to merge 1 commit into
Draft
build(workflows): install Cephes deps in random_benchmarks.yml#14056Planeshifter wants to merge 1 commit into
random_benchmarks.yml#14056Planeshifter wants to merge 1 commit into
Conversation
The job "Run random benchmarks" on workflow `random_benchmarks` has failed on 8 of its last 9 daily scheduled runs against develop, always on unrelated commits, with: cc1: fatal error: .../deps/build/moshier_cephes/cephes/double/ expn.c: No such file or directory Root cause: several packages ship a Cephes-comparison C benchmark under benchmark/c/cephes/ (e.g. math/base/special/sinh). These require the vendored Cephes sources, fetched via the `install-deps-cephes` Make target into deps/build/moshier_cephes/. tools/make/lib/benchmark/ c.mk always points the benchmark build at that directory via the CEPHES/CEPHES_SRC variables, but no workflow in .github/workflows/ ever ran `install-deps-cephes`, and `benchmark-random-c`'s only prerequisite is $(NODE_MODULES). Whenever the random 10-package draw included a Cephes-comparison benchmark, the build failed. This commit adds an "Install Cephes dependencies" step, running `make install-deps-cephes` with the repo's standard triple-retry pattern for network-dependent installs, before the C benchmarks step. `install-deps-cephes` chains download, checksum verification, and extraction, matching the target already used by the run_affected_benchmarks workflow's own script for the same purpose. Ref: https://github.com/stdlib-js/stdlib/actions/runs/31229597363
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.
Description
This pull request:
random_benchmarksCI, which failed on 8 of its last 9 daily scheduled runs (2026-08-08 back through 2026-08-01, only 2026-07-30 succeeded), each time on an unrelated commit SHA. Latest failure: https://github.com/stdlib-js/stdlib/actions/runs/31229597363, "Run C benchmarks" step,cc1: fatal error: /home/runner/work/stdlib/stdlib/deps/build/moshier_cephes/cephes/double/expn.c: No such file or directory, repeated for dozens ofcephes/double/*.cfiles, followed bymake: *** [.../c.mk:116: benchmark-random-c] Error 1.math/base/special/sinh) ship a Cephes-comparison C benchmark underbenchmark/c/cephes/, compiled against a vendored Cephes copy that is not checked into the repo. It must be fetched viainstall-deps-cephes(tools/make/lib/install/cephes.mk:deps-download-cephes→deps-verify-cephes→deps-extract-cephes→deps-test-cephes) intodeps/build/moshier_cephes/.tools/make/lib/benchmark/c.mkalways passesCEPHES/CEPHES_SRCto the per-package build, but no workflow in.github/workflows/ever ran adeps-*-cephestarget.benchmark-random-c's only prerequisite is$(NODE_MODULES). Whenrandom_benchmarks.yml's random 10-package draw (RANDOM_SELECTION_SIZE=10) includes a Cephes-comparison package, the build fails; otherwise it passes, hence the high but not 100% failure rate..github/workflows/random_benchmarks.yml, between "Run JavaScript and native add-on benchmarks" and "Run C benchmarks":make install-deps-cephes || make install-deps-cephes || make install-deps-cephes,timeout-minutes: 15. This is the same targetrun_affected_benchmarksalready uses for the same purpose (.github/workflows/scripts/run_affected_benchmarks/run), and the triple-retry shape matches the existing "Install dependencies" step in the same file. 6 lines added, 1 file changed, no source or test changes.Related Issues
This pull request has the following related issues:
Questions
No.
Other
Validation: three independent automated reviews (correctness, regression scope, style/conventions) all returned
approve, no blocking findings. Correctness confirmeddeps-extract-cephes's default distribution (moshier) and build-output path match the failing run's error path, and thatCEPHES/CEPHES_SRCthread through to the per-package benchmark Makefile correctly. Regression scope confirmed the workflow is not templated/called by any other workflow, has no job-level timeout at risk (steps sum to 165 of a 360-minute default cap), and nothing depends ondeps/build/moshier_cephes/being absent (gitignored, previously always empty in CI). Style confirmed the new step's formatting, retry idiom, and commit type (build:) match repo convention.Reviewer note (non-blocking): the correctness reviewer flagged that
install-deps-cephes's download step (curl -fkL) is not fully idempotent against an interrupted transfer — a truncated.zipleft by one failed attempt is not force-refetched by a retry, so a mid-download failure could in rare cases survive all three retries and fail the C-benchmark step again with the same error. Acceptable: strictly better than the current 100%-reproducible-when-drawn failure, and matches retry semantics of every other network-dependent step in this workflow.Checklist
AI Assistance
If you answered "yes" above, how did you use AI assistance?
Disclosure
This PR was produced by an automated CI-failure triage routine (Claude Code), which diagnosed the failure from live GitHub Actions logs and authored the fix. The change was reviewed by three independent automated passes before being opened as a draft for human review.
@stdlib-js/reviewers
Generated by Claude Code