vcflib: Package 'htslib', required by 'virtual:world', not found

Describe the bug

I’m working on a Linux based HPC working with private data hence the environment is restrictive (no internet connection); therefore packages must be built from source.

I get a missing htslib error when building from source which I thought was odd - isn’t htslib bundled with the package?

To Reproduce

On laptop:

Download zip folder from the repo’s Releases page

Note: right clicking the “Source code (zip)” link and “Copy Link Location” to clipboard provides the link below, but CLI command provided for simplicity.

wget https://codeload.github.com/vcflib/vcflib/zip/v1.0.2

Transfer zip to secure Linux environment, then:

$ unzip https://github.com/vcflib/vcflib/archive/v1.0.2.zip
$ cd vcflib-1.0.2
$ mkdir -p build && cd build
$ cmake ..
-- The C compiler identification is GNU 8.3.1
-- The CXX compiler identification is GNU 8.3.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.4.2")
-- Found BZip2: /usr/lib64/libbz2.so (found version "1.0.6")
-- Looking for BZ2_bzCompressInit
-- Looking for BZ2_bzCompressInit - found
-- Looking for lzma_auto_decoder in /usr/lib64/liblzma.so
-- Looking for lzma_auto_decoder in /usr/lib64/liblzma.so - found
-- Looking for lzma_easy_encoder in /usr/lib64/liblzma.so
-- Looking for lzma_easy_encoder in /usr/lib64/liblzma.so - found
-- Looking for lzma_lzma_preset in /usr/lib64/liblzma.so
-- Looking for lzma_lzma_preset in /usr/lib64/liblzma.so - found
-- Found LibLZMA: /usr/include (found version "5.2.4")
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.11")
--

-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Checking for module 'htslib'
--   Package 'htslib', required by 'virtual:world', not found
CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake:418 (message):
  A required package was not found
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPkgConfig.cmake:585 (_pkg_check_modules_internal)
  CMakeLists.txt:33 (pkg_check_modules)


-- Configuring incomplete, errors occurred!
See also "/project/M-mtgraovac182840/tools/vcflib-1.0.2/build/CMakeFiles/CMakeOutput.log".
See also "/project/M-mtgraovac182840/tools/vcflib-1.0.2/build/CMakeFiles/CMakeError.log".

Desired outcome

I would like the package to build using the bundled htslib, or, alternatively, to provide PATHs for an external installation of htslib I have on the HPC.

Thank you

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 34 (18 by maintainers)

Most upvoted comments

Thank you for your reply. I fully understand that developers of free software spend a lot of time to provide cool projects to the community. I was just a bit upset, because up to version 1.0.1 building vcflib worked out-of-the-box and then suddenly nothing seems to work anymore with version 1.0.2. Vcflib is just one of dozens of software installation requests that I currently have pending. I manage a software stack with 4 toolchains and several hundred packages for each toolchain (https://scicomp.ethz.ch/wiki/Euler_applications_and_libraries) and in addition a collection of bioinformatics tools (https://scicomp.ethz.ch/wiki/GDC_software_stack) and another software stack on a different cluster. The time that I can spend per request is limited.

Today I won’t have time to look again at Vcflib, but if I can find some time this week or beginning of next week, I will again try to build the software and provide a patch if possible.

The current build system used pkg-config to locate tabixpp and others. I am not against self-building per se (I do it!), we should fix it and that is why I am asking for a patch. We can only do this work if people contribute to the overall project. Making a build work is not exactly rocket science. I note both Debian and Conda succeeded. We need that support.

Please consider the amount of time we spend on creating these tools. I am thinking of writing a `free software developer social contract’ one of these days. If you know one exists maybe I can use that?

PS Guix is a superior system for managing dependencies to the ones that are listed there. It is just a suggestion. If you check the link you can see we now have relocatable packs with batteries included (all the way down to glibc). Ideal for HPC. Conda does relocation too, but I agree their dependency management is a mess.