commit: 19d9b88f5b3bd9d6f09eff93909ddf692ba41c3c Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net> AuthorDate: Tue Jan 26 21:04:03 2021 +0000 Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net> CommitDate: Tue Jan 26 21:04:03 2021 +0000 URL: https://gitweb.gentoo.org/proj/sci.git/commit/?id=19d9b88f
sci-biology/sailfish: initial attempts at getting this to work the build system is a mess of things wanting to fetch things Package-Manager: Portage-3.0.14, Repoman-3.0.2 Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net> .../files/sailfish-allow-newer-boost.patch | 13 +++ sci-biology/sailfish/files/sailfish-no-curl.patch | 121 +++++++++++++++++++++ sci-biology/sailfish/sailfish-0.10.0.ebuild | 61 ++++++++--- sci-biology/sailfish/sailfish-9999.ebuild | 49 +++++++-- 4 files changed, 219 insertions(+), 25 deletions(-) diff --git a/sci-biology/sailfish/files/sailfish-allow-newer-boost.patch b/sci-biology/sailfish/files/sailfish-allow-newer-boost.patch new file mode 100644 index 000000000..985f83f4a --- /dev/null +++ b/sci-biology/sailfish/files/sailfish-allow-newer-boost.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ee4b34c..3c58830 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -176,7 +176,7 @@ endif() + ## + # Set the latest version and look for what we need + ## +-set(Boost_ADDITIONAL_VERSIONS "1.53" "1.53.0" "1.54" "1.55" "1.56" "1.57.0" "1.58" "1.59") ++set(Boost_ADDITIONAL_VERSIONS "1.72.0" "1.74.0" "1.75.0") + find_package(Boost 1.53.0 COMPONENTS iostreams filesystem system thread timer chrono program_options serialization) + message("BOOST_INCLUDEDIR = ${BOOST_INCLUDEDIR}") + message("BOOST_LIBRARYDIR = ${BOOST_LIBRARYDIR}") diff --git a/sci-biology/sailfish/files/sailfish-no-curl.patch b/sci-biology/sailfish/files/sailfish-no-curl.patch new file mode 100644 index 000000000..2ec97808e --- /dev/null +++ b/sci-biology/sailfish/files/sailfish-no-curl.patch @@ -0,0 +1,121 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1be4117..ee4b34c 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -230,9 +230,6 @@ elseif(FETCH_BOOST) + message("Build system will fetch and build Boost") + message("==================================================================") + ExternalProject_Add(libboost +- DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external +- DOWNLOAD_COMMAND curl -k -L http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz -o boost_1_59_0.tar.gz && +- tar xzf boost_1_59_0.tar.gz + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/boost_1_59_0 + INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install + #PATCH_COMMAND patch -p2 < ${CMAKE_CURRENT_SOURCE_DIR}/external/boost156.patch +@@ -292,10 +289,6 @@ if (NOT JELLYFISH_FOUND) + message("Build system will fetch and build Jellyfish") + message("==================================================================") + ExternalProject_Add(libjellyfish +- DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external +- DOWNLOAD_COMMAND curl -k -L https://github.com/gmarcais/Jellyfish/releases/download/v2.2.5/jellyfish-2.2.5.tar.gz -o jellyfish-2.2.5.tgz && +- rm -fr jellyfish-2.2.5 && +- tar -xzvf jellyfish-2.2.5.tgz + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/jellyfish-2.2.5 + INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install + CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/external/jellyfish-2.2.5/configure --prefix=<INSTALL_DIR> CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} CXXFLAGS=${JELLYFISH_CXX_FLAGS} +@@ -335,11 +328,7 @@ if ("${TBB_COMPILER}" STREQUAL "gcc") + endif() + + ExternalProject_Add(libtbb +- DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external +- URL http://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb43_20140724oss_src.tgz +- DOWNLOAD_COMMAND curl -k -L http://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb43_20140724oss_src.tgz -o tbb_20140724oss_src.tgz && +- tar -xzvf tbb_20140724oss_src.tgz +- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/tbb43_20140724oss ++ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/tbb43_20140724oss + INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install + PATCH_COMMAND "${TBB_PATCH_STEP}" + CONFIGURE_COMMAND "" +@@ -407,11 +396,6 @@ message("TBB_LIBRARIES = ${TBB_LIBRARIES}") + message("Build system will compile libgff") + message("==================================================================") + ExternalProject_Add(libgff +- DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external +- DOWNLOAD_COMMAND curl -k -L https://github.com/Kingsford-Group/libgff/archive/v1.0.tar.gz -o libgff.tgz && +- tar -xzvf libgff.tgz && +- rm -fr libgff && +- mv libgff-1.0 libgff + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/libgff + UPDATE_COMMAND sh -c "mkdir -p <SOURCE_DIR>/build" + INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install +@@ -445,9 +429,6 @@ if (NOT HAVE_FAST_MALLOC) + message("Build system will fetch and use JEMalloc") + message("==================================================================") + ExternalProject_Add(libjemalloc +- DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external +- DOWNLOAD_COMMAND curl -k -L https://github.com/COMBINE-lab/jemalloc/archive/3.6.0.tar.gz -o jemalloc-3.6.0.tar.gz && +- tar -xzf jemalloc-3.6.0.tar.gz + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/jemalloc-3.6.0 + BUILD_IN_SOURCE TRUE + INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install +@@ -465,9 +446,6 @@ endif () + message("Build system will fetch and build SparseHash") + message("==================================================================") + ExternalProject_Add(libsparsehash +- DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external +- DOWNLOAD_COMMAND curl -k -L https://github.com/COMBINE-lab/sparsehash/archive/sparsehash-2.0.2.tar.gz -o sparsehash-2.0.2.tar.gz && +- tar -xzf sparsehash-2.0.2.tar.gz + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/sparsehash-sparsehash-2.0.2 + BUILD_IN_SOURCE TRUE + INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install +@@ -487,7 +465,6 @@ ExternalProject_Add(libsparsehash + # + #### + if(NOT FETCHED_RAPMAP) +- exec_program(${CMAKE_CURRENT_SOURCE_DIR}/scripts/fetchRapMap.sh) + set(FETCHED_RAPMAP TRUE CACHE BOOL "Has RapMap been fetched?" FORCE) + endif() + +diff --git a/scripts/fetchRapMap.sh b/scripts/fetchRapMap.sh +deleted file mode 100755 +index cab05a1..0000000 +--- a/scripts/fetchRapMap.sh ++++ /dev/null +@@ -1,37 +0,0 @@ +-#!/bin/bash +- +-CURR_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +-EXTERNAL_DIR=${CURR_DIR}/../external +-INSTALL_DIR=${CURR_DIR}/../external/install +- +-if [ -d ${EXTERNAL_DIR}/RapMap ] ; then +- rm -fr ${EXTERNAL_DIR}/RapMap +-fi +- +-if [ -d ${INSTALL_DIR}/include/rapmap ] ; then +- rm -fr ${INSTALL_DIR}/include/rapmap +-fi +- +-if [ -d ${INSTALL_DIR}/src/rapmap ] ; then +- rm -fr ${INSTALL_DIR}/src/rapmap +-fi +- +-mkdir -p ${EXTERNAL_DIR} +-curl -k -L https://github.com/COMBINE-lab/RapMap/archive/quasi-mph.zip -o ${EXTERNAL_DIR}/rapmap.zip +-rm -fr ${EXTERNAL_DIR}/RapMap +-unzip ${EXTERNAL_DIR}/rapmap.zip -d ${EXTERNAL_DIR} +-mv ${EXTERNAL_DIR}/RapMap-quasi-mph ${EXTERNAL_DIR}/RapMap +- +-mkdir -p ${INSTALL_DIR}/include/rapmap +-mkdir -p ${INSTALL_DIR}/src/rapmap +- +-rm ${EXTERNAL_DIR}/RapMap/src/xxhash.c +-rm ${EXTERNAL_DIR}/RapMap/include/xxhash.h +- +-cp -r ${EXTERNAL_DIR}/RapMap/external/libdivsufsort.zip ${EXTERNAL_DIR} +-cp -r ${EXTERNAL_DIR}/RapMap/src/*.c ${INSTALL_DIR}/src/rapmap +-cp -r ${EXTERNAL_DIR}/RapMap/src/*.cpp ${INSTALL_DIR}/src/rapmap +-cp -r ${EXTERNAL_DIR}/RapMap/include/tclap ${INSTALL_DIR}/include/rapmap +-cp -r ${EXTERNAL_DIR}/RapMap/include/*.h ${INSTALL_DIR}/include/rapmap +-cp -r ${EXTERNAL_DIR}/RapMap/include/*.hpp ${INSTALL_DIR}/include/rapmap +-cp -r ${EXTERNAL_DIR}/RapMap/include/emphf ${INSTALL_DIR}/include/rapmap diff --git a/sci-biology/sailfish/sailfish-0.10.0.ebuild b/sci-biology/sailfish/sailfish-0.10.0.ebuild index 228fcfdbb..8ababe879 100644 --- a/sci-biology/sailfish/sailfish-0.10.0.ebuild +++ b/sci-biology/sailfish/sailfish-0.10.0.ebuild @@ -1,25 +1,27 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=6 +EAPI=7 -inherit cmake-utils multilib +inherit cmake multilib DESCRIPTION="Rapid Mapping-based Isoform Quantification from RNA-Seq Reads" -HOMEPAGE="http://www.cs.cmu.edu/~ckingsf/software/sailfish/" -SRC_URI="https://github.com/kingsfordgroup/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" +HOMEPAGE="https://www.cs.cmu.edu/~ckingsf/software/sailfish/" +SRC_URI="https://github.com/kingsfordgroup/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz + https://github.com/COMBINE-lab/RapMap/archive/quasi-mph.zip" LICENSE="GPL-3+" SLOT="0" KEYWORDS="" -IUSE="" -PATCHES=( "${FILESDIR}"/${PN}-0.9.2-no-boost-static.patch ) - -DEPEND="dev-libs/boost:0 - dev-libs/jemalloc - dev-cpp/tbb - sci-biology/jellyfish:2" +DEPEND=" + dev-libs/boost:0 + dev-libs/jemalloc + dev-libs/libdivsufsort + dev-cpp/tbb + dev-cpp/sparsehash + sci-biology/jellyfish:2 +" RDEPEND="${DEPEND}" # a C++-11 compliant compiler is needs, aka >=gcc-4.7 @@ -31,8 +33,41 @@ RDEPEND="${DEPEND}" # contains bundled jellyfish-2.2.5 # contains bundled sparsehash-2.0.2 +PATCHES=( + "${FILESDIR}/${PN}-0.9.2-no-boost-static.patch" + "${FILESDIR}/${PN}-no-curl.patch" + "${FILESDIR}/${PN}-allow-newer-boost.patch" +) + +src_unpack() { + default + mkdir -p "${S}/external" + cp "${DISTDIR}/quasi-mph.zip" "${S}/external/rapmap.zip" || die + mv "${WORKDIR}/RapMap-quasi-mph" "${S}/external/RapMap" || die + mkdir -p "${S}/external/install/lib" + cp "${EPREFIX}/usr/$(get_libdir)/libdivsufsort.so" "${S}/external/install/lib/" || die + cp "${EPREFIX}/usr/$(get_libdir)/libdivsufsort64.so" "${S}/external/install/lib/" || die + cp "${EPREFIX}/usr/$(get_libdir)/libjellyfish-2.0.so" "${S}/external/install/lib/" || die +} + +src_prepare() { + cmake_src_prepare + # use the dynamic library + sed -i -e 's/libdivsufsort.a/libdivsufsort.so/g' \ + -e 's/libdivsufsort64.a/libdivsufsort64.so/g' \ + -e 's/libjellyfish-2.0.a/libjellyfish-2.0.so/g' \ + src/CMakeLists.txt || die +} + +src_configure() { + JELLYFISH_INCLUDE_DIR="/usr/include/jellyfish2" cmake_src_configure + # jellyfish2 instead of jellyfish + find -type f -name "*.hpp" -exec sed -i -e 's/#include \"jellyfish\//#include \"jellyfish2\//g' {} + || die + find -type f -name "*.hpp" -exec sed -i -e 's/#include <jellyfish\//#include <jellyfish2\//g' {} + || die +} + src_install() { - cmake-utils_src_install + cmake_src_install rm -r "${ED}"/usr/tests || die rm -f "${ED}"/usr/bin/jellyfish "${ED}"/usr/$(get_libdir)/libjellyfish || die } diff --git a/sci-biology/sailfish/sailfish-9999.ebuild b/sci-biology/sailfish/sailfish-9999.ebuild index 29a967af8..27d1abdc8 100644 --- a/sci-biology/sailfish/sailfish-9999.ebuild +++ b/sci-biology/sailfish/sailfish-9999.ebuild @@ -1,25 +1,26 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=6 +EAPI=7 -inherit cmake-utils git-r3 multilib +inherit cmake git-r3 multilib DESCRIPTION="Rapid Mapping-based Isoform Quantification from RNA-Seq Reads" -HOMEPAGE="http://www.cs.cmu.edu/~ckingsf/software/sailfish/" -SRC_URI="" +HOMEPAGE="https://www.cs.cmu.edu/~ckingsf/software/sailfish/" EGIT_REPO_URI="https://github.com/kingsfordgroup/sailfish.git" LICENSE="GPL-3" SLOT="0" -IUSE="" -PATCHES=( "${FILESDIR}"/${PN}-0.9.2-no-boost-static.patch ) +PATCHES=( "${FILESDIR}/${PN}-0.9.2-no-boost-static.patch" ) -DEPEND="dev-libs/boost:0 - dev-libs/jemalloc - dev-cpp/tbb - sci-biology/jellyfish:2" +DEPEND=" + dev-libs/boost:0 + dev-libs/jemalloc + dev-libs/libdivsufsort + dev-cpp/tbb + sci-biology/jellyfish:2 +" RDEPEND="${DEPEND}" # TODO: disable running wget/curl during src_compile @@ -30,8 +31,32 @@ RDEPEND="${DEPEND}" # contains bundled jellyfish-2.2.5 # contains bundled sparsehash-2.0.2 +src_unpack() { + default + mkdir -p "${S}/external" + cp "${DISTDIR}/quasi-mph.zip" "${S}/external/rapmap.zip" || die + mkdir -p "${S}/external/install/lib" + cp "${EPREFIX}/usr/$(get_libdir)/libdivsufsort.so" "${S}/external/install/lib/" || die + cp "${EPREFIX}/usr/$(get_libdir)/libdivsufsort64.so" "${S}/external/install/lib/" || die + cp "${EPREFIX}/usr/$(get_libdir)/libjellyfish-2.0.so" "${S}/external/install/lib/" || die +} + +src_prepare() { + cmake_src_prepare + # use the dynamic library + sed -i -e 's/libdivsufsort.a/libdivsufsort.so/g' \ + -e 's/libdivsufsort64.a/libdivsufsort64.so/g' \ + -e 's/libjellyfish-2.0.a/libjellyfish-2.0.so/g' \ + src/CMakeLists.txt || die + + # jellyfish2 instead of jellyfish + pushd external/install/include/rapmap + find -type f -name "*.hpp" -exec sed -i -e 's/jellyfish/jellyfish2/g' {} + || die + popd +} + src_install() { - cmake-utils_src_install + cmake_src_install rm -r "${ED}"/usr/tests || die rm -f "${ED}"/usr/bin/jellyfish "${ED}"/usr/$(get_libdir)/libjellyfish || die }