Skip to content

Fix docs SIGILL by dropping ccache from the docs build - #270

Merged
zfergus merged 1 commit into
mainfrom
fix/docs-no-ccache
Oct 12, 2026
Merged

zfergus merged 1 commit into
mainfrom
fix/docs-no-ccache

Conversation

@zfergus

@zfergus zfergus commented Oct 12, 2026 •

Copy link
Copy Markdown
Member

Description

Removes ccache from the docs workflow, so ipctk is built from scratch on every docs run.

  • Removed: the ccache install, the docs-cache restore step, and the stats steps in docs.yml.
  • Also removed: the restore-keys: Linux-Python-cache fallback, which could restore an entry from a different ISA.

Impact:

  • Build ipctk takes about 307 s instead of 40–64 s, so a docs run takes about 443 s instead of about 175 s. Docs only build on pushes to main and docs.
  • No source or API changes, and no effect on the generated docs.

Why

  • import ipctk crashes with SIGILL when Sphinx starts. conf.py imports the module at the top, so make html died after about 3 s (Build docs, exit code 132).
  • Three runs restored the same docs-cache entry, which has been immutable since 10-07: the runs on 10-11 and 10-12 failed with SIGILL, and a third on 10-12 passed. The outcome depends on which VM runs the job, not on the commit.
  • ccache hashes the literal -march=native, not what it expands to. -march=native comes from FindSIMD (SIMD_CXX_FLAGS) and Tight-Inclusion (its own target, no off switch). Turning off IPC_TOOLKIT_WITH_SIMD would drop the first but not the second.
  • With no cache, no object built on one VM can be restored onto another.
  • The same crash class is addressed for the other workflows in Fix CI ccache SIGILL by keying on the resolved ISA #269. They keep a cache, so they use an ISA-keyed one instead.

Type of change

  • Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

docs.yml only runs on pushes to main and docs, and its last step deploys to gh-pages, so PR CI does not exercise it. The first run on main after merging is the real test.

  • The workflow parses as YAML, every run block passes bash -n, and no step references ccache or actions/cache.
  • Timings come from the existing runs: cold 443 s on 10-07 versus 168–177 s with the cache.

Test Configuration:

  • OS and Version: macOS 26.6.2
  • Compiler and Version: n/a (workflow-only change)

Checklist

  • I have followed the project style guide
  • My code follows the clang-format style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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