Enhancements to Compilation Process, CI/Wheel Workflow, and Bug Fixes #289
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Update cyvcf2 to directly link with the htslib library, both statically and dynamically, eliminating the need to compile htslib from its source code. This decoupling offers better maintainability, enabling cyvcf2 to fully use the optimization of htslib's native configure for compilation options. Consequently, this change results in a reduction of compilation time by approximately one-third.
End-users can continue to install cyvcf2 using pip install cyvcf2, and there are no changes required on their end. There is a minor modification in the dependency, moving from libssl to libcrypto. However, since the libssl package also includes the libcrypto library, this transition will be seamless for users.
New introduced support for using the system's htslib library during pip installation by adding the environment variable CYVCF2_HTSLIB_MODE=EXTERNAL. This allows users to leverage their existing htslib installation (which should be installed from source code, --no-binary).
Developers can follow the previous approach of compiling htslib first and then cyvcf2 or directly compile cyvcf2, which will handle the htslib compilation process automatically.
A new command, has been added to facilitate the cleaning of both htslib and cyvcf2 compilation files simultaneously
Restructured CI/Wheel Workflow for New Compilation Process
To adapt to the new compilation methodology, rebuilt the CI/Wheel workflow:
Revised the workflow to align with the new compilation process
Add build test for musllinux (alpine), PyPy3.10, and Windows(MSYS2 only, Experiment)
Wheel now supports musllinux, Linux ARM64(manylinux/musllinux), and PyPy3.10
bump htslib versio to 1.19
Fix some crash bugs