-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Summary
Currently, Linux Python wheels are built without the RCSB feature due to OpenSSL cross-compilation issues in manylinux containers. This means Linux users cannot use download_structure() and rcsb_search() functions.
Current Behavior
| Platform | RCSB Feature |
|---|---|
| macOS | ✅ Available |
| Windows | ✅ Available |
| Linux | ❌ Not available |
Root Cause
The reqwest crate uses native-tls by default, which requires OpenSSL. Cross-compiling OpenSSL for Linux aarch64 in manylinux containers fails because:
before-script-linuxin maturin-action runs on the host, not inside the container for cross-compilationnative-tls-vendoredrequires Perl modules (IPC::Cmd, FindBin) not available in manylinux containersrustls-tlsalternative fails becauseringcrate doesn't support aarch64 cross-compilation
Potential Solutions to Investigate
1. Use rustls-tls with aws-lc-rs backend
ringis being replaced byaws-lc-rsin many projects- May have better cross-compilation support
- Requires
reqwestfeature configuration change
2. Custom manylinux Docker image
- Pre-install OpenSSL development headers
- Pre-install required Perl modules
- Use as custom container in CI
3. Use zig for cross-compilation
cargo-zigbuildhandles cross-compilation better- May resolve OpenSSL linking issues
4. Separate RCSB into optional runtime dependency
- Ship Linux wheels without RCSB compiled in
- Provide separate
pdbrust-rcsbpackage that users can install if needed - Would require Python-side HTTP implementation
5. Wait for maturin/manylinux improvements
- Track upstream issues for better OpenSSL support
- manylinux_2_28 might have better tooling
References
- maturin-action: https://github.com/PyO3/maturin-action
- reqwest TLS options: https://docs.rs/reqwest/latest/reqwest/#optional-features
- ring cross-compilation: https://github.com/briansmith/ring/issues/1]+
Acceptance Criteria
- Linux x86_64 wheels include RCSB feature
- Linux aarch64 wheels include RCSB feature
- All existing tests pass
- CI builds remain stable
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels