Skip to content

gh-122931 CI for Linux multiarch co-installability - #152831

Open
stefanor wants to merge 49 commits into
python:mainfrom
stefanor:ci-multiarch-co-install
Open

gh-122931 CI for Linux multiarch co-installability#152831
stefanor wants to merge 49 commits into
python:mainfrom
stefanor:ci-multiarch-co-install

Conversation

@stefanor

@stefanor stefanor commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

As suggested in this thread, add some CI tooling to ensure that Python continues to be multi-arch co-installable.

Explicitly skip checking abi3.so and abi3t.so extensions, as they are currently not co-installable (#122931).

We extend reusable-ubuntu to perform an extra set of build+install+hash runs. This required some slightly different configure options to get more co-install-friendly builds. Those configure options broke some existing tests, but the fixes are trivial, and included.

From an earlier implementation that didn't use hash-manifests:

Example failure (without abi3 and abi3t ignored): https://github.com/stefanor/cpython/actions/runs/28550736484/job/84647793000
Example success (with them ignored): https://github.com/stefanor/cpython/actions/runs/28551134448/job/84648971317

@stefanor
stefanor force-pushed the ci-multiarch-co-install branch from 3a52cb5 to b84e719 Compare July 1, 2026 22:39
@stefanor

stefanor commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

Note: This will require an extra ~165MiB * 5 test builds = ~820 MiB of artifact storage in GitHub CI, per test run. These are stored for 90 days by default. We could configure less...

Duh. Let me store hash manifests instead of storing the installs.

Comment thread Tools/coinstall-check/hash-r.py Outdated
Comment thread Tools/coinstall-check/hash-r.py Outdated
Comment thread .github/workflows/reusable-ubuntu.yml Outdated
Comment thread .github/workflows/reusable-ubuntu.yml Outdated
Comment thread .github/workflows/reusable-ubuntu.yml Outdated
Comment thread .github/workflows/reusable-ubuntu.yml Outdated
Comment thread .github/workflows/build.yml
@webknjaz

webknjaz commented Jul 2, 2026

Copy link
Copy Markdown
Member

We do not do this in the main test suite execution, as achieving multi-arch co-installability requires some non-default configure parameters.

Do you mean the debug option?

But we could share builds, if desired for performance.

Seems like having another matrix will add 15–16 minutes of CI runtime.

Comment thread .github/workflows/reusable-ubuntu.yml Outdated
Comment thread .github/workflows/build.yml Outdated
Comment thread Misc/NEWS.d/next/Tests/2026-07-01-18-14-25.gh-issue-122931.OeRDeo.rst Outdated
Comment thread .github/workflows/reusable-ubuntu.yml Outdated
Comment thread .github/workflows/reusable-ubuntu.yml
Comment thread .github/workflows/reusable-ubuntu.yml Outdated
Comment thread Tools/coinstall-check/compare.py Outdated
Comment thread Tools/coinstall-check/hash-r.py Outdated
Comment thread Tools/coinstall-check/hash-r.py Outdated
Comment thread Tools/coinstall-check/hash-r.py
Comment thread Tools/coinstall-check/compare.py Outdated
required: false
type: string
default: ''
upload-install-hashes:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Looks like this input is always passed exactly opposite to bolt-optimizations. A case could be made that it could be computed instead...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

They may currently be opposite, but I think they are orthogonal, I wouldn't want to compute one from the other.

upload-install-hashes should be set once for each (architecture, build flags) combination.

I could imagine adding a check that aborts a build if upload-install-hashes is enable and any other non-architcture, non-build-flag option is non-default. Would that improve things?

if: inputs.upload-install-hashes
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ${{ env.INSTALL_HASHES_FILE }}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Should this also expose a wildcard for the consumers to look up the artifacts? Though, this probably won't work with a matrix 🤔

Comment thread .github/workflows/build.yml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants