From 0a4874ad9defee588b3e790777427f5d7a41ae54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Kupcsik?= Date: Sat, 4 Apr 2026 14:58:27 +0200 Subject: [PATCH] salmon: 1.10.3 -> 1.11.4 Upgrade and adapt to major revamp of salmon build system --- pkgs/by-name/sa/salmon/fetch-pufferfish.patch | 60 ------------------- pkgs/by-name/sa/salmon/fix_pufferfish.patch | 21 +++++++ pkgs/by-name/sa/salmon/package.nix | 58 ++++++++++++++---- 3 files changed, 67 insertions(+), 72 deletions(-) delete mode 100644 pkgs/by-name/sa/salmon/fetch-pufferfish.patch create mode 100644 pkgs/by-name/sa/salmon/fix_pufferfish.patch diff --git a/pkgs/by-name/sa/salmon/fetch-pufferfish.patch b/pkgs/by-name/sa/salmon/fetch-pufferfish.patch deleted file mode 100644 index a8682426fcc4..000000000000 --- a/pkgs/by-name/sa/salmon/fetch-pufferfish.patch +++ /dev/null @@ -1,60 +0,0 @@ -diff --git a/scripts/fetchPufferfish.sh b/scripts/fetchPufferfish.sh -index 95e30053..8866767c 100755 ---- a/scripts/fetchPufferfish.sh -+++ b/scripts/fetchPufferfish.sh -@@ -11,10 +11,6 @@ CURR_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) - EXTERNAL_DIR=${CURR_DIR}/../external - INSTALL_DIR=${CURR_DIR}/../external/install - --if [ -d ${EXTERNAL_DIR}/pufferfish ] ; then -- rm -fr ${EXTERNAL_DIR}/pufferfish --fi -- - if [ -d ${INSTALL_DIR}/include/pufferfish ] ; then - rm -fr ${INSTALL_DIR}/include/pufferfish - fi -@@ -23,42 +19,10 @@ if [ -d ${INSTALL_DIR}/src/pufferfish ] ; then - rm -fr ${INSTALL_DIR}/src/pufferfish - fi - --SVER=salmon-v1.10.3 --#SVER=develop --#SVER=sketch-mode -- --EXPECTED_SHA256=52b6699de0d33814b73edb3455175568c2330d8014be017dce7b564e54134860 -- --mkdir -p ${EXTERNAL_DIR} --curl -k -L https://github.com/COMBINE-lab/pufferfish/archive/${SVER}.zip -o ${EXTERNAL_DIR}/pufferfish.zip -- --hashcheck="" --if exists sha256sum; then -- hashcheck="sha256sum" --elif exists shasum; then -- hashcheck="shasum -a256" --else -- unset hashcheck --fi -- -- --if [ -z "${hashcheck-}" ]; then -- echo "Couldn't find shasum command; can't verify contents of downloaded pufferfish"; --else -- -- if [[ $SVER != develop && $SVER != onetbb ]]; then -- echo "${EXPECTED_SHA256} ${EXTERNAL_DIR}/pufferfish.zip" | ${hashcheck} -c - || { echo "pufferfish.zip did not match expected SHA1! Exiting."; exit 1; } -- else -- echo "not testing sha since pulling from develop" -- fi --fi -- -- --rm -fr ${EXTERNAL_DIR}/pufferfish --unzip ${EXTERNAL_DIR}/pufferfish.zip -d ${EXTERNAL_DIR} --mv ${EXTERNAL_DIR}/pufferfish-${SVER} ${EXTERNAL_DIR}/pufferfish - - mkdir -p ${INSTALL_DIR}/include/pufferfish -+# This is needed later when pufferfish is compiled for Salmon -+cp -r ${pufferFishSrc} ${EXTERNAL_DIR}/pufferfish - - cp ${EXTERNAL_DIR}/pufferfish/include/ProgOpts.hpp ${INSTALL_DIR}/include/pufferfish - cp ${EXTERNAL_DIR}/pufferfish/include/BooPHF.hpp ${INSTALL_DIR}/include/pufferfish diff --git a/pkgs/by-name/sa/salmon/fix_pufferfish.patch b/pkgs/by-name/sa/salmon/fix_pufferfish.patch new file mode 100644 index 000000000000..65e64633c096 --- /dev/null +++ b/pkgs/by-name/sa/salmon/fix_pufferfish.patch @@ -0,0 +1,21 @@ +diff --git a/cmake/SalmonDependencies.cmake b/cmake/SalmonDependencies.cmake +index b6bebe0..a67571a 100644 +--- a/cmake/SalmonDependencies.cmake ++++ b/cmake/SalmonDependencies.cmake +@@ -86,6 +86,8 @@ if(ZLIBNG_FOUND) + set(SALMON_ZLIB_LIBRARIES ZLIBNG::ZLIBNG) + set(ZLIB_INCLUDE_DIR ${ZLIBNG_INCLUDE_DIR}) + set(ZLIB_LIBRARY ZLIBNG::ZLIBNG) ++ add_library(zlibstatic ALIAS ${ZLIB_LIBRARY}) ++ message(STATUS "Created zlibstatic alias for pufferfish embedded mode") + elseif(SALMON_FETCH_MISSING_DEPS) + message(STATUS "zlib-ng not found; fetching pinned zlib-ng release in compatibility mode") + set(ZLIB_COMPAT ON CACHE BOOL "" FORCE) +@@ -421,6 +423,7 @@ else() + set(SALMON_CURL_LIBRARIES "" CACHE INTERNAL "" FORCE) + endif() + if(SALMON_USE_SYSTEM_DEPS) ++ find_package(OpenSSL REQUIRED) + find_package(HTSlib QUIET) + endif() + if(HTSlib_FOUND) diff --git a/pkgs/by-name/sa/salmon/package.nix b/pkgs/by-name/sa/salmon/package.nix index ad1ed4fd5620..4caba4faf339 100644 --- a/pkgs/by-name/sa/salmon/package.nix +++ b/pkgs/by-name/sa/salmon/package.nix @@ -3,45 +3,62 @@ stdenv, boost, bzip2, + catch2_3, cereal, cmake, curl, fetchFromGitHub, + htslib, icu, jemalloc, + libdeflate, libgff, libiconv, libstaden-read, - pkg-config, + mimalloc, onetbb, + openssl, + pkg-config, + python3, xz, - zlib, + zlib-ng, }: stdenv.mkDerivation (finalAttrs: { pname = "salmon"; - version = "1.10.3"; + version = "1.11.4"; + # SALMON_PUFFERFISH_GIT_TAG defined in cmake/SalmonDependencies.cmake pufferFishSrc = fetchFromGitHub { owner = "COMBINE-lab"; repo = "pufferfish"; - rev = "salmon-v${finalAttrs.version}"; - hash = "sha256-g4pfNuc620WQ7UDv8PQHVbbTVt78aGVqcHHMszmBIkA="; + fetchSubmodules = true; + rev = "ace68c1c022816ba8c50a1a07c5d08f2abd597d6"; + hash = "sha256-Zwl45sUYSmHOqsYLZPscigjgd1V3Waza0jRvhvNh7jU="; + }; + + # SALMON_FQFEEDER_GIT_TAG defined in cmake/SalmonDependencies.cmake + FQFeederSrc = fetchFromGitHub { + owner = "rob-p"; + repo = "FQFeeder"; + rev = "f5b08d1002351c192b69048ac9f6cf4c7c116265"; + hash = "sha256-csRKUdNlEKKHNIvKRRTt79+27LBmnsJpswzBnWtA/XU="; }; src = fetchFromGitHub { owner = "COMBINE-lab"; repo = "salmon"; rev = "v${finalAttrs.version}"; - hash = "sha256-HGcDqu0XzgrU3erHavigXCoj3VKk82ixMLY10Kk9MW4="; + hash = "sha256-BjWXNQtycSwCTe40kujN/YzCNhGjkz2ULGOYtI01yos="; }; - patches = [ - # Use pufferfish source fetched by nix - ./fetch-pufferfish.patch - ]; + patches = [ ./fix_pufferfish.patch ]; - postPatch = "patchShebangs ."; + postPatch = '' + patchShebangs . + + substituteInPlace CMakeLists.txt --replace-fail "CMP0167 OLD" "CMP0167 NEW" + ''; buildInputs = [ (boost.override { @@ -49,21 +66,38 @@ stdenv.mkDerivation (finalAttrs: { enabledStatic = true; }) bzip2 + catch2_3 cereal curl + htslib icu jemalloc + libdeflate libgff libstaden-read + mimalloc onetbb + openssl xz - zlib + zlib-ng ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ]; nativeBuildInputs = [ cmake pkg-config + python3 + ]; + + cmakeFlags = [ + "-DSALMON_PUFFERFISH_SOURCE_DIR=${finalAttrs.pufferFishSrc}" + "-DSALMON_FQFEEDER_SOURCE_DIR=${finalAttrs.FQFeederSrc}" + ]; + + # These are needed to please htslib + env.NIX_LDFLAGS = toString [ + "-lcrypto" + "-ldeflate" ]; strictDeps = true;