GH Actions: Build platform-independent wheels of sagemath-environment, sage-setup, sage-sws2rst for PyPI#37099
Conversation
|
@kiwifb Any thoughts on this one here? |
|
I am not very hot on the subject of producing that kind of wheels. I am not qualified to review this. I should have said two weeks ago but I was sick. |
|
No worries! |
|
Documentation preview for this PR (built with commit c3eb320; changes) is ready! 🎉 |
|
Will you test the updated workflow somewhere? |
|
Completed successfully |
|
The artifacts are now split by architecures by the changed name I don't know where the artifacts are used downstream. Are they used? If so, this change may break something downstream. |
|
The artifacts are not used by anything. They are uploaded only so that one can download them manually if something needs to be checked. |
|
Thank you! |
sagemathgh-37099: GH Actions: Build platform-independent wheels of sagemath-environment, sage-setup, sage-sws2rst for PyPI <!-- ^^^^^ Please provide a concise, informative and self-explanatory title. Don't put issue numbers in there, do this in the PR body below. For example, instead of "Fixes sagemath#1234" use "Introduce new method to calculate 1+1" --> <!-- Describe your changes here in detail --> <!-- Why is this change required? What problem does it solve? --> We already build platform wheels for **sagemath-{objects,categories,repl}** for PyPI using cibuildwheel. Here we add building of platform-independent wheels for **sagemath- environment** and **sage-setup** and **sage-sws2rst** to the GH Actions workflow. (They are needed, for example, for pyodide / jupyterlite.) To test locally: `make pypi-noarch-wheels` We also update actions/upload-artifact, actions/download-artifact to v4. This requires a restructuring, as we can no longer upload the wheels for different architectures (built by separate matrix jobs) to the same artifact: https://github.com/actions/upload-artifact?tab=readme-ov- file#not-uploading-to-the-same-artifact Instead we upload them as separate artifacts and deploy them to PyPI directly from the job that built them. This is: - part of sagemath#31251 <!-- If this PR resolves an open issue, please link to it here. For example "Fixes sagemath#12345". --> <!-- If your change requires a documentation PR, please link it appropriately. --> ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [x] The title is concise, informative, and self-explanatory. - [x] The description explains in detail what this PR is about. - [ ] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on - sagemath#12345: short description why this is a dependency - sagemath#34567: ... --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> URL: sagemath#37099 Reported by: Matthias Köppe Reviewer(s): Kwankyu Lee, Matthias Köppe
sagemathgh-37762: `dist.yml`: Download optional/experimental tarballs for GitHub Release assets <!-- ^ Please provide a concise and informative title. --> <!-- ^ Don't put issue numbers in the title, do this in the PR description below. --> <!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method to calculate 1 + 2". --> <!-- v Describe your changes below in detail. --> <!-- v Why is this change required? What problem does it solve? --> <!-- v If this PR resolves an open issue, please link to it here. For example, "Fixes sagemath#12345". --> - Fixes sagemath#37752, at least for the non-"huge" tarballs (we skip the "huge" tarballs here). - More options for `sage -package download` (a subset of what `sage -package list` supports) - Also remove some zombie package files Test run: https://github.com/mkoeppe/sage/actions/workflows/dist.yml ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [ ] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on. For example, --> <!-- - sagemath#12345: short description why this is a dependency --> <!-- - sagemath#34567: ... --> - Depends on sagemath#37099 (merged to resolve merge conflict) URL: sagemath#37762 Reported by: Matthias Köppe Reviewer(s): Kwankyu Lee, Matthias Köppe
sagemathgh-37762: `dist.yml`: Download optional/experimental tarballs for GitHub Release assets <!-- ^ Please provide a concise and informative title. --> <!-- ^ Don't put issue numbers in the title, do this in the PR description below. --> <!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method to calculate 1 + 2". --> <!-- v Describe your changes below in detail. --> <!-- v Why is this change required? What problem does it solve? --> <!-- v If this PR resolves an open issue, please link to it here. For example, "Fixes sagemath#12345". --> - Fixes sagemath#37752, at least for the non-"huge" tarballs (we skip the "huge" tarballs here). - More options for `sage -package download` (a subset of what `sage -package list` supports) - Also remove some zombie package files Test run: https://github.com/mkoeppe/sage/actions/workflows/dist.yml ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [ ] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on. For example, --> <!-- - sagemath#12345: short description why this is a dependency --> <!-- - sagemath#34567: ... --> - Depends on sagemath#37099 (merged to resolve merge conflict) URL: sagemath#37762 Reported by: Matthias Köppe Reviewer(s): Kwankyu Lee, Matthias Köppe
sagemathgh-37762: `dist.yml`: Download optional/experimental tarballs for GitHub Release assets <!-- ^ Please provide a concise and informative title. --> <!-- ^ Don't put issue numbers in the title, do this in the PR description below. --> <!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method to calculate 1 + 2". --> <!-- v Describe your changes below in detail. --> <!-- v Why is this change required? What problem does it solve? --> <!-- v If this PR resolves an open issue, please link to it here. For example, "Fixes sagemath#12345". --> - Fixes sagemath#37752, at least for the non-"huge" tarballs (we skip the "huge" tarballs here). - More options for `sage -package download` (a subset of what `sage -package list` supports) - Also remove some zombie package files Test run: https://github.com/mkoeppe/sage/actions/workflows/dist.yml ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [ ] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on. For example, --> <!-- - sagemath#12345: short description why this is a dependency --> <!-- - sagemath#34567: ... --> - Depends on sagemath#37099 (merged to resolve merge conflict) URL: sagemath#37762 Reported by: Matthias Köppe Reviewer(s): Kwankyu Lee, Matthias Köppe
sagemathgh-38111: GH Actions: Fix upload of macOS wheels to PyPI <!-- ^ Please provide a concise and informative title. --> <!-- ^ Don't put issue numbers in the title, do this in the PR description below. --> <!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method to calculate 1 + 2". --> <!-- v Describe your changes below in detail. --> <!-- v Why is this change required? What problem does it solve? --> <!-- v If this PR resolves an open issue, please link to it here. For example, "Fixes sagemath#12345". --> The change made in sagemath#37099 to accommodate the new design of actions/{up,down}load-artifact@v4 broke the upload of macOS wheels to PyPI (see https://github.com/sagemath/sage/actions/runs/9234698750/job/2 5408786962#step:8:23); this was masked so far because the build of macOS wheels was broken until sagemath#36525. Here we revert to using a separate job that uploads all platform wheels. This uses the new keywords `pattern` and `merge-multiple` of actions/download-artifact@v4 Example run: https://github.com/mkoeppe/sage/actions/runs/9291646178/job/25572343853 ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [x] The description explains in detail what this PR is about. - [ ] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation and checked the documentation preview. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on. For example, --> <!-- - sagemath#12345: short description why this is a dependency --> <!-- - sagemath#34567: ... --> URL: sagemath#38111 Reported by: Matthias Köppe Reviewer(s): Kwankyu Lee
We already build platform wheels for sagemath-{objects,categories,repl} for PyPI using cibuildwheel.
Here we add building of platform-independent wheels for sagemath-environment and sage-setup and sage-sws2rst to the GH Actions workflow. (They are needed, for example, for pyodide / jupyterlite.)
To test locally:
make pypi-noarch-wheelsWe also update actions/upload-artifact, actions/download-artifact to v4. This requires a restructuring, as we can no longer upload the wheels for different architectures (built by separate matrix jobs) to the same artifact: https://github.com/actions/upload-artifact?tab=readme-ov-file#not-uploading-to-the-same-artifact
Instead we upload them as separate artifacts and deploy them to PyPI directly from the job that built them.
This is:
📝 Checklist
⌛ Dependencies