diff options
author | snehring <7978778+snehring@users.noreply.github.com> | 2024-01-10 20:18:48 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-10 19:18:48 -0700 |
commit | f1ffd95ff987056b2be0361a160ccaaafadc9192 (patch) | |
tree | bff8f6d2347affa8a74100b2481790467f41327d | |
parent | d0bc7cb86dc106ee04894b987e01808f9a9bebff (diff) | |
download | spack-f1ffd95ff987056b2be0361a160ccaaafadc9192.tar.gz spack-f1ffd95ff987056b2be0361a160ccaaafadc9192.tar.bz2 spack-f1ffd95ff987056b2be0361a160ccaaafadc9192.tar.xz spack-f1ffd95ff987056b2be0361a160ccaaafadc9192.zip |
dorado: switching to source build (#42039)
* dorado: switching to source build
* dorado: fixing formatting issue
-rw-r--r-- | var/spack/repos/builtin/packages/dorado/cmake-htslib.patch | 111 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/dorado/package.py | 41 |
2 files changed, 141 insertions, 11 deletions
diff --git a/var/spack/repos/builtin/packages/dorado/cmake-htslib.patch b/var/spack/repos/builtin/packages/dorado/cmake-htslib.patch new file mode 100644 index 0000000000..a918ee5a78 --- /dev/null +++ b/var/spack/repos/builtin/packages/dorado/cmake-htslib.patch @@ -0,0 +1,111 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 64d6091e..323412a4 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -316,10 +316,6 @@ target_link_libraries(dorado_lib + minimap2 + ) + +-if(NOT WIN32) +- add_dependencies(dorado_lib htslib_project) +-endif() +- + if(NOT DORADO_DISABLE_DORADO) + if(NOT WIN32) + # Set up RPATHs so we can find dependencies +diff --git a/cmake/Htslib.cmake b/cmake/Htslib.cmake +index caabc1a3..c72fe534 100644 +--- a/cmake/Htslib.cmake ++++ b/cmake/Htslib.cmake +@@ -1,68 +1,4 @@ +-if(NOT TARGET htslib) # lazy include guard +- if(WIN32) +- message(STATUS "Fetching htslib") +- download_and_extract(https://cdn.oxfordnanoportal.com/software/analysis/htslib-win.tar.gz htslib-win) +- set(HTSLIB_DIR ${DORADO_3RD_PARTY_DOWNLOAD}/htslib-win CACHE STRING +- "Path to htslib repo") +- add_library(htslib SHARED IMPORTED) +- set_target_properties(htslib PROPERTIES +- "IMPORTED_IMPLIB" ${HTSLIB_DIR}/hts-3.lib +- "IMPORTED_LOCATION" ${HTSLIB_DIR}/hts-3.dll +- "INTERFACE_INCLUDE_DIRECTORIES" ${HTSLIB_DIR}) +- target_link_directories(htslib INTERFACE ${HTSLIB_DIR}) +- else() +- message(STATUS "Setting up htslib build") +- set(HTSLIB_DIR ${DORADO_3RD_PARTY_SOURCE}/htslib CACHE STRING "Path to htslib repo") +- set(htslib_PREFIX ${CMAKE_BINARY_DIR}/3rdparty/htslib) ++include_directories(${HTSLIB_PREFIX}/include) + +- find_program(MAKE_COMMAND make REQUIRED) +- find_program(AUTOCONF_COMMAND autoconf REQUIRED) +- find_program(AUTOHEADER_COMMAND autoheader REQUIRED) +- execute_process(COMMAND bash -c "${AUTOCONF_COMMAND} -V | sed 's/.* //; q'" +- OUTPUT_VARIABLE AUTOCONF_VERS) +- if (AUTOCONF_VERS VERSION_GREATER_EQUAL 2.70 AND NOT CMAKE_GENERATOR STREQUAL "Xcode") +- set(AUTOCONF_COMMAND autoreconf --install) +- endif() +- +- # The Htslib build apparently requires BUILD_IN_SOURCE=1, which is a problem when +- # switching between build targets because htscodecs object files aren't regenerated. +- # To avoid this, copy the source tree to a build-specific directory and do the build there. +- set(HTSLIB_BUILD ${CMAKE_BINARY_DIR}/htslib_build) +- file(COPY ${HTSLIB_DIR} DESTINATION ${HTSLIB_BUILD}) +- +- if (CMAKE_SYSTEM_NAME STREQUAL "iOS") +- # We need cross-compilation mode for iOS builds. Otherwise we end up trying to link a MacOS library +- # into an iOS target. +- set(CONFIGURE_FLAGS --host=aarch64-apple-darwin "CFLAGS=-isysroot ${CMAKE_OSX_SYSROOT}" "CC=${CMAKE_C_COMPILER}" "LDFLAGS=-isysroot ${CMAKE_OSX_SYSROOT}") +- # By default the dylib install name will be some local path that won't work on the device. +- set(INSTALL_NAME ${CMAKE_INSTALL_NAME_TOOL} -id "@executable_path/Frameworks/libhts.3.dylib" ${htslib_PREFIX}/lib/libhts.3.dylib) +- endif() +- +- include(ExternalProject) +- ExternalProject_Add(htslib_project +- PREFIX ${HTSLIB_BUILD} +- SOURCE_DIR ${HTSLIB_BUILD}/htslib +- BUILD_IN_SOURCE 1 +- CONFIGURE_COMMAND ${AUTOHEADER_COMMAND} +- COMMAND ${AUTOCONF_COMMAND} +- COMMAND ./configure --disable-bz2 --disable-lzma --disable-libcurl --disable-s3 --disable-gcs ${CONFIGURE_FLAGS} +- BUILD_COMMAND ${MAKE_COMMAND} install prefix=${htslib_PREFIX} +- COMMAND ${INSTALL_NAME} +- INSTALL_COMMAND "" +- BUILD_BYPRODUCTS ${htslib_PREFIX}/lib/libhts.a +- LOG_CONFIGURE 0 +- LOG_BUILD 0 +- LOG_TEST 0 +- LOG_INSTALL 0 +- ) +- +- add_library(htslib STATIC IMPORTED) +- # Need to ensure this directory exists before we can add it to INTERFACE_INCLUDE_DIRECTORIES +- file(MAKE_DIRECTORY ${htslib_PREFIX}/include) +- set_target_properties(htslib +- PROPERTIES +- "IMPORTED_LOCATION" ${htslib_PREFIX}/lib/libhts.a +- "INTERFACE_INCLUDE_DIRECTORIES" ${htslib_PREFIX}/include) +- message(STATUS "Done Building htslib") +- endif() +-endif() ++add_library(htslib SHARED IMPORTED) ++set_target_properties(htslib PROPERTIES IMPORTED_LOCATION ${HTSLIB_PREFIX}/lib/libhts.so) +diff --git a/dorado/utils/CMakeLists.txt b/dorado/utils/CMakeLists.txt +index 9bbf7067..e78feabe 100644 +--- a/dorado/utils/CMakeLists.txt ++++ b/dorado/utils/CMakeLists.txt +@@ -117,13 +117,9 @@ if(APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "iOS") + target_link_libraries(dorado_utils PUBLIC ${IOKIT}) + endif() + +-if(NOT WIN32) +- add_dependencies(dorado_utils htslib_project) +-endif() +- + # GCC 8 ICEs trying to compile this file with ASAN+optimisations enabled, so knock down the optimisation to try and help it out. + if (ECM_ENABLE_SANITIZERS AND (CMAKE_CXX_COMPILER_ID MATCHES "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)) + set_source_files_properties(duplex_utils.cpp PROPERTIES COMPILE_OPTIONS "-O0") + endif() + +-enable_warnings_as_errors(dorado_utils) +\ No newline at end of file ++enable_warnings_as_errors(dorado_utils) diff --git a/var/spack/repos/builtin/packages/dorado/package.py b/var/spack/repos/builtin/packages/dorado/package.py index c75d1fdb70..70e3c49879 100644 --- a/var/spack/repos/builtin/packages/dorado/package.py +++ b/var/spack/repos/builtin/packages/dorado/package.py @@ -6,18 +6,37 @@ from spack.package import * -class Dorado(Package): - """ - Dorado is a high-performance, easy-to-use, open source basecaller for Oxford Nanopore reads. - """ +class Dorado(CMakePackage, CudaPackage): + """Dorado is a high-performance, easy-to-use, open source basecaller + for Oxford Nanopore reads.""" homepage = "https://github.com/nanoporetech/dorado" - url = "https://cdn.oxfordnanoportal.com/software/analysis/dorado-0.5.1-linux-x64.tar.gz" + git = "https://github.com/nanoporetech/dorado.git" + url = "https://github.com/nanoporetech/dorado/archive/refs/tags/v0.5.1.tar.gz" - version("0.5.1", sha256="7d95f4d47e0024db8ca275a5c591ebcaf2e17bfbff714fa824b212fb58a98802") + maintainers("snehring") - def install(self, spec, prefix): - mkdirp(prefix.bin) - install("bin/dorado", prefix.bin) - mkdirp(prefix.lib) - install_tree("lib/.", prefix.lib) + version("0.5.1", commit="a7fb3e3d4afa7a11cb52422e7eecb1a2cdb7860f", submodules=True) + + depends_on("autoconf", type="build") + depends_on("automake", type="build") + depends_on("git", type="build") + depends_on("curl", type="build") + depends_on("cuda") + depends_on("hdf5@1.17:+hl+cxx+szip") + depends_on("htslib@1.15.1") + depends_on("openssl") + depends_on("zstd") + depends_on("libdeflate") + depends_on("zlib-api") + + patch("cmake-htslib.patch") + + def setup_build_environment(self, env): + env.prepend_path("LD_LIBRARY_PATH", self.spec["libdeflate"].prefix.lib64) + env.prepend_path("LIBRARY_PATH", self.spec["libdeflate"].prefix.lib64) + + def cmake_args(self): + htslib_prefix = self.spec["htslib"].prefix + args = [f"-DHTSLIB_PREFIX={htslib_prefix}", f"-DDORADO_INSTALL_PATH={self.prefix}"] + return args |