samtools / htslib

C library for high-throughput sequencing data formats
Other
789 stars 447 forks source link

Cannot install htslib in Python 3.10 conda environment because of OpenSSL #1578

Closed sjdv1982 closed 1 year ago

sjdv1982 commented 1 year ago

The bioconda htslib packages require OpenSSL 1.1 (in case of htslib 3.9, implicitly).

However, Python 3.10 requires OpenSSL 3:

package python-3.10.9-he550d4f_0_cpython requires openssl >=3.0.7,<4.0a0, but none of the providers can be installed

jkbonfield commented 1 year ago

I'm not aware of htslib requiring a specific version of openssl. Indeed compiling from source htslib works fine with the system openssl on our Ubuntu system, and python 3 is using that same library too so they should be able to be installed together.

So I suspect this is another overly strict dependency added incorrectly by bioconda. I couldn't find any specific pinning of version numbers though at https://github.com/bioconda/bioconda-recipes/blob/master/recipes/htslib/meta.yaml, but probably best to raise the issue on their github as we don't maintain the conda packages ourselves.

sjdv1982 commented 1 year ago

Hmm, I ran into the issue when I tried to run bcftools:

bcftools: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory

Since bioconda lists no dependency bcftools -> openssl, but it does list bcftools -> htslib -> openssl, I though the issue must be with htslib. It seems I was wrong?

On Thu, Mar 2, 2023 at 2:37 PM James Bonfield @.***> wrote:

Closed #1578 https://github.com/samtools/htslib/issues/1578 as completed.

— Reply to this email directly, view it on GitHub https://github.com/samtools/htslib/issues/1578#event-8649495294, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB5FPMKXQBCCY4SSHQ6QNUDW2CPC5ANCNFSM6AAAAAAVNKOOPM . You are receiving this because you authored the thread.Message ID: @.***>

jkbonfield commented 1 year ago

The software does build and execute from source, as our continuous integration tests do this for every commit. That includes building and testing bcftools. If it's failing within a prepackaged install then the problem is highly likely due to that packaging, or attempting to do a hybrid of conda and source together which we don't support.

You're correct that bcftools depends on htslib and htslib on openssl, but if your htslib is bundled by someone else then that's initially where you should ask for assistance (regarding libraries and environment - of course algorithmic things are down to us).

sjdv1982 commented 1 year ago

Ok, thanks for the clarification. I will take it up with the maintainers. cheers Sjoerd

On Thu, Mar 2, 2023 at 3:40 PM James Bonfield @.***> wrote:

The software does build and execute from source, as our continuous integration tests do this for every commit. That includes building and testing bcftools. If it's failing within a prepackaged install then the problem is highly likely due to that packaging, or attempting to do a hybrid of conda and source together which we don't support.

You're correct that bcftools depends on htslib and htslib on openssl, but if your htslib is bundled by someone else then that's initially where you should ask for assistance (regarding libraries and environment - of course algorithmic things are down to us).

— Reply to this email directly, view it on GitHub https://github.com/samtools/htslib/issues/1578#issuecomment-1451974734, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB5FPMIGB6OQDLUZHAYSEN3W2CWOFANCNFSM6AAAAAAVNKOOPM . You are receiving this because you authored the thread.Message ID: @.***>

jmarshall commented 1 year ago

This is bioconda/bioconda-recipes#39356.

jkbonfield commented 1 year ago

Oh so it's a bioconda vs conda-forge thing. That explains why I couldn't find any mention of a specific pinned openssl in the bioconda htslib recipe. Thanks John.

As I use it so rarely I always stumble on the different moving parts and which bit fits with which. Such a can of worms!