Skip to content

Conversation

@jakub-kocka
Copy link
Collaborator

@jakub-kocka jakub-kocka commented Nov 12, 2025

Description

This PR adds a repair mechanism for wheels that need linked libraries. For Linux (manylinux tag), the auditwheel package is used to repair already built wheels. For Windows, the delvewheel package and for Mac, the delocate package.

  • The new job runs after the main builds. It runs the repair tool on every package (which needs repair), and then re-uploads the artifacts and deletes the original.

  • Jobs have been renamed to a better human-readable form.

  • Also, there is a small fix taken from automatic PR creation.

  • self-hosted runners were removed, qemu is used instead for Linux ARMv7 builds

  • Custom Docker image (built with the DockerFile in resources) is used for the manylinux ARMv7 repair

  • Re-enabled wheels upload to Espressif's PyPI

Related

  • internal issue trackers: IDF-12558, IDF-14238

Testing

  • Workflow example: TBD
  • Defined wheels (manual run): TBD

Checklist

Before submitting a Pull Request, please ensure the following:

  • 🚨 This PR does not introduce breaking changes.
  • All CI checks (GH Actions) pass.
  • Documentation is updated as needed.
  • Tests are updated or added as necessary.
  • Code is well-commented, especially in complex areas.
  • Git history is clean — commits are squashed to the minimum necessary.

@jakub-kocka jakub-kocka self-assigned this Nov 12, 2025
@github-actions
Copy link

github-actions bot commented Nov 12, 2025

Warnings
⚠️ Please consider squashing your 6 commits (simplifying branch history).
Messages
📖 This PR seems to be quite large (total lines of code: 1422), you might consider splitting it into smaller PRs

👋 Hello jakub-kocka, we appreciate your contribution to this project!


Click to see more instructions ...


This automated output is generated by the PR linter DangerJS, which checks if your Pull Request meets the project's requirements and helps you fix potential issues.

DangerJS is triggered with each push event to a Pull Request and modify the contents of this comment.

Please consider the following:
- Danger mainly focuses on the PR structure and formatting and can't understand the meaning behind your code or changes.
- Danger is not a substitute for human code reviews; it's still important to request a code review from your colleagues.
- Resolve all warnings (⚠️ ) before requesting a review from human reviewers - they will appreciate it.
- Addressing info messages (📖) is strongly recommended; they're less critical but valuable.
- To manually retry these Danger checks, please navigate to the Actions tab and re-run last Danger workflow.

Review and merge process you can expect ...


We do welcome contributions in the form of bug reports, feature requests and pull requests.

1. An internal issue has been created for the PR, we assign it to the relevant engineer.
2. They review the PR and either approve it or ask you for changes or clarifications.
3. Once the GitHub PR is approved we do the final review, collect approvals from core owners and make sure all the automated tests are passing.
- At this point we may do some adjustments to the proposed change, or extend it by adding tests or documentation.
4. If the change is approved and passes the tests it is merged into the default branch.

Generated by 🚫 dangerJS against 3312ec7

@jakub-kocka jakub-kocka force-pushed the feat/manylinux branch 7 times, most recently from d1d5295 to 5347ca5 Compare November 18, 2025 11:48
@jakub-kocka jakub-kocka marked this pull request as draft November 18, 2025 11:58
@jakub-kocka jakub-kocka force-pushed the feat/manylinux branch 12 times, most recently from 19d4498 to f721ef6 Compare November 25, 2025 11:40
@jakub-kocka jakub-kocka force-pushed the feat/manylinux branch 4 times, most recently from 1d2f1c3 to 637b1e4 Compare November 28, 2025 10:45
@jakub-kocka jakub-kocka changed the title Added manylinux tag support Added repair workflow for universal tags Nov 28, 2025
@jakub-kocka jakub-kocka force-pushed the feat/manylinux branch 2 times, most recently from 9713370 to adb6f22 Compare December 1, 2025 12:01
@jakub-kocka jakub-kocka force-pushed the feat/manylinux branch 2 times, most recently from 4cf5be5 to 958697c Compare December 3, 2025 09:06
@jakub-kocka jakub-kocka changed the title Added repair workflow for universal tags Repair workflow for dinamically linked libraries of wheels Dec 3, 2025
@jakub-kocka jakub-kocka force-pushed the feat/manylinux branch 4 times, most recently from d2847df to 7c65545 Compare December 5, 2025 13:05
@jakub-kocka
Copy link
Collaborator Author

With this done, we can turn on the Espressif's server upload, WDYT?

In the following PR, I would like to introduce simple tests for the built wheels as well.

@jakub-kocka jakub-kocka changed the title Repair workflow for dinamically linked libraries of wheels Repair workflow for dynamically linked libraries of wheels Dec 8, 2025
@jakub-kocka jakub-kocka marked this pull request as ready for review December 8, 2025 11:56
Copy link
Collaborator

@peterdragun peterdragun left a comment

Choose a reason for hiding this comment

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

As far as I understand the topic this LGTM, but I will leave the review of the process to someone that understands this more 😅

I have left a couple of comments, most of which are nitpicks, so feel free to ignore those.

Copy link
Collaborator

@fhrbata fhrbata left a comment

Choose a reason for hiding this comment

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

Hi, overall it looks good to me. I'm not certain if glibc 2.34 is too new, but I suppose we'll find out if there are any complaints. Additionally, I'm not sure why we're fixing the wheels in a separate step rather than immediately after they are generated. Regardless, I believe this is a significant improvement, and we'll likely discover more in the future if further adjustments are needed. Very nice work! Also thanks
for replacing the self-hosted runners with qemu.

@jakub-kocka
Copy link
Collaborator Author

Hi, overall it looks good to me. I'm not certain if glibc 2.34 is too new, but I suppose we'll find out if there are any complaints. Additionally, I'm not sure why we're fixing the wheels in a separate step rather than immediately after they are generated. Regardless, I believe this is a significant improvement, and we'll likely discover more in the future if further adjustments are needed. Very nice work! Also thanks for replacing the self-hosted runners with qemu.

Hi, thank you!
I was thinking about the one-step option, but since the repair logic got a bit complicated and the special image for repair is needed, I have decided to separate this and keep it as minimal as possible to have "full control" on the dependencies, images, ....

I guess we can add upload and run the final test run, right? (cc @dobairoland )

Copy link
Collaborator

@dobairoland dobairoland left a comment

Choose a reason for hiding this comment

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

LGTM with one naming suggestion. Please wait with the merge after the end of the holidays.

@jakub-kocka
Copy link
Collaborator Author

Thank you all for the reviews. I have addressed all the points you have mentioned, and the PR is ready for the final tests (with upload), and then it can be merged.

The final tests will be made after the holidays (approximately 5th of January)

If you have anything else in mind, feel free to share it. Otherwise, after a successfull tests, I believe this can be merged.

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.

5 participants