Skip to content

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

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

gh-122931 CI for Linux multiarch co-installability#152831
stefanor wants to merge 21 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.

@stefanor

stefanor commented Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

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

That's a lot. OK, I'll attempt to include it.

stefanor added 4 commits July 3, 2026 17:05
We are trying to install into a prefix, any absolute path would not
necessarily be writeable. e.g. if Python is configured with
--libdir=/usr/lib/$(MULTIARCH)/ during a Debian build.
@stefanor

stefanor commented Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

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?

I meant a multiarch libdir and --with-build-details-suffix. And in fact I needed two extra commits to fix tests with these options:

@stefanor

stefanor commented Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

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

It's part of the main test matrix, now.

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.

2 participants