Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancements to Compilation Process, CI/Wheel Workflow, and Bug Fixes #289

Closed
wants to merge 10 commits into from
Closed

Conversation

graphenn
Copy link
Contributor

  • Direct Static/Dynamic Linking to htslib and Improved Maintainability
    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

python setup.py clean_ext
  • 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

@graphenn
Copy link
Contributor Author

some error, will submit another PR

@graphenn graphenn closed this Dec 15, 2023
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.

None yet

1 participant