Skip to content

auto-sync: pin lit below 23 to unbreak CI - #3047

Merged
Rot127 merged 1 commit into
capstone-engine:nextfrom
gaul:auto-sync-pin-lit
Aug 28, 2026
Merged

auto-sync: pin lit below 23 to unbreak CI#3047
Rot127 merged 1 commit into
capstone-engine:nextfrom
gaul:auto-sync-pin-lit

Conversation

@gaul

@gaul gaul commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Your checklist for this pull request

  • I've documented or updated the documentation of every API function and struct this PR changes.
  • I've added tests that prove my fix is effective or that my feature works (if possible)

Detailed description

lit 23.1.0 was published on 2026-08-25 and made
lit.formats.ShTest(execute_external=True) raise instead of accepting it. lit_config/lit.cfg.py passes that argument positionally:

  config.test_format = lit.formats.ShTest(True)

so every Auto-Sync run since has failed at config load:

  ValueError: execute_external=True is deprected as of LLVM-23 and the
  option will be removed in LLVM-24. Please move to using the internal
  shell (execute_external=False). If you still need to force external
  execution to allow time for migration, set force_execute_external=True

The dependency was declared "lit >= 18.1.8" with no upper bound, and lit had not released since 18.1.8 in June 2024, so the first CI run after 23.1.0 landed picked it up. Every PR since fails identically, across unrelated architectures -- alpha-mem-disp-signext, x86-att-detail-bugs and two AArch64 branches all report the same error; the last green Auto-Sync run was 2026-08-24.

Pinning restores the version CI was actually testing with: pip install --dry-run "lit >= 18.1.8, < 23" resolves to 18.1.8, against 23.1.0 unpinned. Nothing between 18.1.8 and 23.1.0 exists on PyPI, so the bound excludes exactly the broken release.

This is the minimal unblock, not the fix. Migrating the ShTest call -- either force_execute_external=True to keep the external shell, or execute_external=False to move to lit's internal one -- wants the generated test suite run against it and belongs in its own change.

Worth noting separately: MCUpdater.run_llvm_lit creates a symlink before invoking lit and does not remove it when lit raises, so the remaining tests in the process die with FileExistsError rather than the real error. Two of the four reported failures were that cascade.
Test plan

Closing issues

lit 23.1.0 was published on 2026-08-25 and made
lit.formats.ShTest(execute_external=True) raise instead of accepting
it. lit_config/lit.cfg.py passes that argument positionally:

  config.test_format = lit.formats.ShTest(True)

so every Auto-Sync run since has failed at config load:

  ValueError: execute_external=True is deprected as of LLVM-23 and the
  option will be removed in LLVM-24. Please move to using the internal
  shell (execute_external=False). If you still need to force external
  execution to allow time for migration, set force_execute_external=True

The dependency was declared "lit >= 18.1.8" with no upper bound, and
lit had not released since 18.1.8 in June 2024, so the first CI run
after 23.1.0 landed picked it up. Every PR since fails identically,
across unrelated architectures -- alpha-mem-disp-signext,
x86-att-detail-bugs and two AArch64 branches all report the same
error; the last green Auto-Sync run was 2026-08-24.

Pinning restores the version CI was actually testing with:
`pip install --dry-run "lit >= 18.1.8, < 23"` resolves to 18.1.8,
against 23.1.0 unpinned. Nothing between 18.1.8 and 23.1.0 exists on
PyPI, so the bound excludes exactly the broken release.

This is the minimal unblock, not the fix. Migrating the ShTest call --
either force_execute_external=True to keep the external shell, or
execute_external=False to move to lit's internal one -- wants the
generated test suite run against it and belongs in its own change.

Worth noting separately: MCUpdater.run_llvm_lit creates a symlink
before invoking lit and does not remove it when lit raises, so the
remaining tests in the process die with FileExistsError rather than
the real error. Two of the four reported failures were that cascade.
@github-actions github-actions Bot added the Auto-Sync-files Auto-Sync label Aug 27, 2026
@gaul

gaul commented Aug 27, 2026

Copy link
Copy Markdown
Contributor Author

Unblocks #3045 and #3046.

@Rot127 Rot127 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@Rot127
Rot127 merged commit 318900f into capstone-engine:next Aug 28, 2026
58 checks passed
@gaul
gaul deleted the auto-sync-pin-lit branch August 28, 2026 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants