PEP 503 sdists for IDF full dependency tree#69
Conversation
👋 Hello jakub-kocka, we appreciate your contribution to this project! Click to see more instructions ...
Review and merge process you can expect ...
|
921adea to
543c859
Compare
There was a problem hiding this comment.
Pull request overview
Adds PEP 503 sdist fallback support to the IDF dependency publishing pipeline (compute which packages need sdists, download/upload them alongside wheels, and verify presence on S3), and improves ARMv7 handling by skipping problematic manylinux repairs and adding native import probes to catch broken native wheels.
Changes:
- Generate
sdist_requirements.txtduring wheel assembly and wire CI to download/upload sdists to the Espressif simple index. - Add post-upload verification that required sdists exist on S3.
- Add ARMv7-specific safeguards: skip auditwheel for guarded packages, prune conflicting manylinux wheels, and run native import probes in CI.
Reviewed changes
Copilot reviewed 17 out of 17 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
emit_sdist_requirements.py |
New logic to compute and write sdist fallback requirements across the platform/Python matrix. |
build_wheels.py |
Emits sdist_requirements.txt as part of the main wheel build job. |
download_sdists.py |
New helper to pip download sdists listed in sdist_requirements.txt. |
upload_wheels.py |
Uploads sdists alongside wheels to S3 under pypi/<project>/. |
create_index_pages.py |
Stabilizes per-project simple-index page ordering by sorting filenames. |
verify_s3_sdists.py |
New post-upload S3 verification for required sdist presence. |
repair_wheels.py |
ARMv7: skip manylinux repair for guarded/native packages; prune conflicting manylinux wheels when linux-tag siblings exist. |
native_import_probe.py |
New subprocess-based import probe runner (segfault-safe). |
native_import_guard.yaml |
Defines per-distribution import probes for ARMv7 native wheel validation. |
test_wheels_install.py |
Runs guarded native import probes on ARMv7 after installation. |
test_emit_sdist_requirements.py |
Unit tests for sdist requirement computation and file emission. |
test_native_import_guard.py |
Unit test verifying guard YAML loads and contains expected cryptography probes. |
yaml_list_adapter.py |
Adds windows/macos → marker platform mapping for sys_platform evaluation. |
_helper_functions.py |
Adds native import guard loader + improves wheel name parsing/canonicalization helpers. |
README.md |
Documents sdist fallback policy and native import guard usage. |
.github/workflows/build-wheels-platforms.yml |
Uploads sdist_requirements.txt bundle; adds sdist verification step. |
.github/workflows/upload-python-wheels.yml |
Downloads requirements bundle and sdists before uploading to S3. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
543c859 to
252c9f5
Compare
5ecfb82 to
d1e146b
Compare
30195e3 to
4381180
Compare
1be453d to
b219998
Compare
2c35cd5 to
fe87ee6
Compare
fe87ee6 to
f6fbff4
Compare
Description
emit_sdist_requirements.pycomputes which packages cannot be built as wheels on any supported platform/Python combination (using the sameexclude_list.yamlmerge logic as wheel builds). Those packages get a source distribution on https://dl.espressif.com/pypi next to wheels—not every exclude-list entry, only the union subset that has no buildable wheel path anywhere in the matrix.idf-requirements-bundle(requirements.txt+sdist_requirements.txt). The upload job downloads sdists from PyPI intodownloaded_wheels/;upload_wheels.py/create_index_pages.pypublish them underpypi/<project>/. Post-uploadverify_s3_sdists.pychecks that each listed package has at least one sdist on S3.repair_wheels.pyskips auditwheel manylinux repair for guarded packages (native_import_guard.yaml,force_no_binary_linux.txt) and removes duplicatemanylinux_*_armv7lwheels when alinux_armv7lsibling exists (avoids pip preferring broken manylinuxcffi). Pre-upload checks run intest_wheels_install.pyon native ARMv7 CI (no separate post-upload S3 import audit).What is not in scope
Related
Testing
Checklist
Before submitting a Pull Request, please ensure the following: