easyblock = 'CMakeMake' name = 'dorado' version = '0.9.0' versionsuffix = '-CUDA-%(cudaver)s' homepage = 'https://github.com/nanoporetech/dorado' description = """Dorado is a high-performance, easy-to-use, open source basecaller for Oxford Nanopore reads.""" toolchain = {'name': 'foss', 'version': '2023a'} toolchainopts = {'usempi': True} source_urls = ['https://github.com/nanoporetech/dorado/archive/'] sources = [{ 'git_config': { 'url': 'https://github.com/nanoporetech', 'repo_name': name, 'tag': 'v%(version)s', 'recursive': True, }, 'filename': SOURCE_TAR_GZ, }] patches = [ '%(name)s-0.8.0_dont_install_external_libraries.patch', ] checksums = [ None, '28942b7057af00c574a5e70d33a58b4036fd09ae0b041f45b67581c8dda832b1', ] builddependencies = [ ('binutils', '2.40'), ('CMake', '3.26.3'), ] dependencies = [ ('CUDA', '12.1.1', '', SYSTEM), ('OpenSSL', '1.1', '', SYSTEM), ('PyTorch', '2.1.2', '-CUDA-%(cudaver)s'), ('HDF5', '1.14.0'), ('zstd', '1.5.5'), ('HTSlib', '1.18'), ('kineto', '0.4.0'), ('libaec', '1.0.6'), ] # don't link to OpenSSL static libraries # fix for CMake Error "missing: OPENSSL_CRYPTO_LIBRARY" (if only shared OpenSSL libraries are available) preconfigopts = "sed -i '/OPENSSL_USE_STATIC_LIBS TRUE/d' ../dorado/cmake/OpenSSL.cmake && " # link in the ssl and crypto libs, to fix: # undefined reference to symbol 'SSL_get_peer_certificate@@OPENSSL_1_1_0' preconfigopts += "sed -i 's/OpenSSL::SSL/ssl\\n crypto/g' ../dorado/dorado/utils/CMakeLists.txt && " # don't use vendored HTSlib, use provided HTSlib dependency preconfigopts += "rm -r ../dorado/dorado/3rdparty/htslib/ && " preconfigopts += "sed -i '/add_dependencies.*htslib_project/d' ../dorado/CMakeLists.txt && " preconfigopts += "sed -i '/add_dependencies.*htslib_project/d' ../dorado/dorado/utils/CMakeLists.txt && " preconfigopts += "sed -i '/Htslib.cmake/d' ../dorado/CMakeLists.txt && " # link with -lhts, not -lhtslib preconfigopts += "sed -i 's/htslib/hts/g' ../dorado/CMakeLists.txt && " preconfigopts += "sed -i 's/htslib/hts/g' ../dorado/dorado/utils/CMakeLists.txt && " preconfigopts += "sed -i 's/htslib/hts/g' ../dorado/dorado/torch_utils/CMakeLists.txt && " # disable treating warnings like errors by stripping out -Werror # cfr. https://github.com/nanoporetech/dorado/issues/779 preconfigopts += "sed -i 's/-Werror//g' ../dorado/cmake/Warnings.cmake && " _copts = [ "-DCUDA_TOOLKIT_ROOT_DIR=$EBROOTCUDA", "-DCMAKE_CUDA_COMPILER=$EBROOTCUDA/bin/nvcc", '-DOPENSSL_ROOT_DIR=$EBROOTOPENSSL', "-DDORADO_LIBTORCH_DIR=$EBROOTPYTORCH/lib", # add -pthread flag (in addition to -lpthread) to avoid linking error: # in function `_GLOBAL__sub_I_mutex.cc': mutex.cc:(.text.startup+0x17): undefined reference to `pthread_atfork' '-DCMAKE_C_FLAGS="$CFLAGS -pthread"', ] configopts = ' '.join(_copts) + ' ' sanity_check_paths = { 'files': ['bin/dorado'], 'dirs': [], } sanity_check_commands = ["dorado basecaller --help"] moduleclass = 'bio'