From c316132f2510574608e87aaa0e62330d9c44024c Mon Sep 17 00:00:00 2001 From: natsukium Date: Thu, 5 Dec 2024 17:57:47 +0900 Subject: [PATCH 1/8] mmseqs2: 15-6f452 -> 16-747c6 Diff: https://github.com/soedinglab/mmseqs2/compare/15-6f452...16-747c6 --- pkgs/applications/science/biology/mmseqs2/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/science/biology/mmseqs2/default.nix b/pkgs/applications/science/biology/mmseqs2/default.nix index 18acee7a5f14..0dbdf30ce3ab 100644 --- a/pkgs/applications/science/biology/mmseqs2/default.nix +++ b/pkgs/applications/science/biology/mmseqs2/default.nix @@ -16,13 +16,13 @@ stdenv.mkDerivation rec { pname = "mmseqs2"; - version = "15-6f452"; + version = "16-747c6"; src = fetchFromGitHub { owner = "soedinglab"; repo = pname; rev = version; - sha256 = "sha256-L+zOWrGkCLz/wqpBuji8H4/93sDFpcfnDOE8FHq1j84="; + sha256 = "sha256-O7tx+gdVAmZLihPnWSo9RWNVzfPjI61LGY/XeaGHrI0="; }; nativeBuildInputs = [ cmake xxd perl installShellFiles ]; @@ -44,7 +44,7 @@ stdenv.mkDerivation rec { description = "Ultra fast and sensitive sequence search and clustering suite"; mainProgram = "mmseqs"; homepage = "https://mmseqs.com/"; - license = licenses.gpl3; + license = licenses.mit; maintainers = with maintainers; [ natsukium ]; platforms = platforms.unix; }; From 8680ed927c1c21fcf099721d9f8728d8b3b1e7a0 Mon Sep 17 00:00:00 2001 From: natsukium Date: Thu, 5 Dec 2024 17:59:21 +0900 Subject: [PATCH 2/8] mmseqs2: format with nixfmt --- .../science/biology/mmseqs2/default.nix | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/pkgs/applications/science/biology/mmseqs2/default.nix b/pkgs/applications/science/biology/mmseqs2/default.nix index 0dbdf30ce3ab..220820c27bf0 100644 --- a/pkgs/applications/science/biology/mmseqs2/default.nix +++ b/pkgs/applications/science/biology/mmseqs2/default.nix @@ -1,17 +1,18 @@ -{ lib -, stdenv -, fetchFromGitHub -, cmake -, xxd -, perl -, installShellFiles -, enableAvx2 ? stdenv.hostPlatform.avx2Support -, enableSse4_1 ? stdenv.hostPlatform.sse4_1Support -, enableMpi ? false -, mpi -, openmp -, zlib -, bzip2 +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + xxd, + perl, + installShellFiles, + enableAvx2 ? stdenv.hostPlatform.avx2Support, + enableSse4_1 ? stdenv.hostPlatform.sse4_1Support, + enableMpi ? false, + mpi, + openmp, + zlib, + bzip2, }: stdenv.mkDerivation rec { @@ -25,14 +26,23 @@ stdenv.mkDerivation rec { sha256 = "sha256-O7tx+gdVAmZLihPnWSo9RWNVzfPjI61LGY/XeaGHrI0="; }; - nativeBuildInputs = [ cmake xxd perl installShellFiles ]; + nativeBuildInputs = [ + cmake + xxd + perl + installShellFiles + ]; cmakeFlags = lib.optional enableAvx2 "-DHAVE_AVX2=1" ++ lib.optional enableSse4_1 "-DHAVE_SSE4_1=1" ++ lib.optional enableMpi "-DHAVE_MPI=1"; buildInputs = - lib.optionals stdenv.cc.isClang [ openmp zlib bzip2 ] + lib.optionals stdenv.cc.isClang [ + openmp + zlib + bzip2 + ] ++ lib.optional enableMpi mpi; postInstall = '' From 1681591eda561f10e015d8ac9f6187c6ea891dfe Mon Sep 17 00:00:00 2001 From: natsukium Date: Thu, 5 Dec 2024 18:08:52 +0900 Subject: [PATCH 3/8] mmseqs2: refactor --- .../science/biology/mmseqs2/default.nix | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pkgs/applications/science/biology/mmseqs2/default.nix b/pkgs/applications/science/biology/mmseqs2/default.nix index 220820c27bf0..35ae0d194992 100644 --- a/pkgs/applications/science/biology/mmseqs2/default.nix +++ b/pkgs/applications/science/biology/mmseqs2/default.nix @@ -15,15 +15,15 @@ bzip2, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "mmseqs2"; version = "16-747c6"; src = fetchFromGitHub { owner = "soedinglab"; - repo = pname; - rev = version; - sha256 = "sha256-O7tx+gdVAmZLihPnWSo9RWNVzfPjI61LGY/XeaGHrI0="; + repo = "mmseqs2"; + rev = "refs/tags/${finalAttrs.version}"; + hash = "sha256-O7tx+gdVAmZLihPnWSo9RWNVzfPjI61LGY/XeaGHrI0="; }; nativeBuildInputs = [ @@ -32,10 +32,12 @@ stdenv.mkDerivation rec { perl installShellFiles ]; - cmakeFlags = - lib.optional enableAvx2 "-DHAVE_AVX2=1" - ++ lib.optional enableSse4_1 "-DHAVE_SSE4_1=1" - ++ lib.optional enableMpi "-DHAVE_MPI=1"; + + cmakeFlags = [ + (lib.cmakeBool "HAVE_AVX2" enableAvx2) + (lib.cmakeBool "HAVE_SSE4_1" enableSse4_1) + (lib.cmakeBool "HAVE_MPI" enableMpi) + ]; buildInputs = lib.optionals stdenv.cc.isClang [ @@ -58,4 +60,4 @@ stdenv.mkDerivation rec { maintainers = with maintainers; [ natsukium ]; platforms = platforms.unix; }; -} +}) From a29846ad2be290360f6ac2cb33e253b9261e2b30 Mon Sep 17 00:00:00 2001 From: natsukium Date: Thu, 5 Dec 2024 18:48:33 +0900 Subject: [PATCH 4/8] mmseqs2: enable cuda support --- .../science/biology/mmseqs2/default.nix | 40 +++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/pkgs/applications/science/biology/mmseqs2/default.nix b/pkgs/applications/science/biology/mmseqs2/default.nix index 35ae0d194992..63e44645a813 100644 --- a/pkgs/applications/science/biology/mmseqs2/default.nix +++ b/pkgs/applications/science/biology/mmseqs2/default.nix @@ -1,5 +1,6 @@ { lib, + config, stdenv, fetchFromGitHub, cmake, @@ -10,6 +11,8 @@ enableSse4_1 ? stdenv.hostPlatform.sse4_1Support, enableMpi ? false, mpi, + cudaSupport ? config.cudaSupport, + cudaPackages, openmp, zlib, bzip2, @@ -26,18 +29,27 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-O7tx+gdVAmZLihPnWSo9RWNVzfPjI61LGY/XeaGHrI0="; }; - nativeBuildInputs = [ - cmake - xxd - perl - installShellFiles - ]; + nativeBuildInputs = + [ + cmake + xxd + perl + installShellFiles + ] + ++ lib.optionals cudaSupport [ + cudaPackages.cuda_nvcc + ]; - cmakeFlags = [ - (lib.cmakeBool "HAVE_AVX2" enableAvx2) - (lib.cmakeBool "HAVE_SSE4_1" enableSse4_1) - (lib.cmakeBool "HAVE_MPI" enableMpi) - ]; + cmakeFlags = + [ + (lib.cmakeBool "HAVE_AVX2" enableAvx2) + (lib.cmakeBool "HAVE_SSE4_1" enableSse4_1) + (lib.cmakeBool "HAVE_MPI" enableMpi) + ] + ++ lib.optionals cudaSupport [ + (lib.cmakeBool "ENABLE_CUDA" true) + (lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" cudaPackages.flags.cmakeCudaArchitecturesString) + ]; buildInputs = lib.optionals stdenv.cc.isClang [ @@ -45,7 +57,11 @@ stdenv.mkDerivation (finalAttrs: { zlib bzip2 ] - ++ lib.optional enableMpi mpi; + ++ lib.optional enableMpi mpi + ++ lib.optionals cudaSupport [ + cudaPackages.cuda_cudart + cudaPackages.cuda_cccl + ]; postInstall = '' installShellCompletion --bash --cmd mmseqs $out/util/bash-completion.sh From a603559dccdd16d5ff45997afabcc5158dbb7ebd Mon Sep 17 00:00:00 2001 From: natsukium Date: Thu, 5 Dec 2024 18:49:47 +0900 Subject: [PATCH 5/8] mmseqs2: use system zstd --- pkgs/applications/science/biology/mmseqs2/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/applications/science/biology/mmseqs2/default.nix b/pkgs/applications/science/biology/mmseqs2/default.nix index 63e44645a813..331d436784c5 100644 --- a/pkgs/applications/science/biology/mmseqs2/default.nix +++ b/pkgs/applications/science/biology/mmseqs2/default.nix @@ -16,7 +16,12 @@ openmp, zlib, bzip2, + pkgsStatic, }: +let + # require static library, libzstd.a + inherit (pkgsStatic) zstd; +in stdenv.mkDerivation (finalAttrs: { pname = "mmseqs2"; @@ -35,6 +40,7 @@ stdenv.mkDerivation (finalAttrs: { xxd perl installShellFiles + zstd ] ++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc @@ -45,6 +51,7 @@ stdenv.mkDerivation (finalAttrs: { (lib.cmakeBool "HAVE_AVX2" enableAvx2) (lib.cmakeBool "HAVE_SSE4_1" enableSse4_1) (lib.cmakeBool "HAVE_MPI" enableMpi) + (lib.cmakeBool "USE_SYSTEM_ZSTD" true) ] ++ lib.optionals cudaSupport [ (lib.cmakeBool "ENABLE_CUDA" true) From 8161f18b42abc290c599462a8899b826661c0ad7 Mon Sep 17 00:00:00 2001 From: natsukium Date: Thu, 5 Dec 2024 18:50:23 +0900 Subject: [PATCH 6/8] mmseqs2: enable neon on aarch64 --- pkgs/applications/science/biology/mmseqs2/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/applications/science/biology/mmseqs2/default.nix b/pkgs/applications/science/biology/mmseqs2/default.nix index 331d436784c5..576ba0599174 100644 --- a/pkgs/applications/science/biology/mmseqs2/default.nix +++ b/pkgs/applications/science/biology/mmseqs2/default.nix @@ -52,6 +52,7 @@ stdenv.mkDerivation (finalAttrs: { (lib.cmakeBool "HAVE_SSE4_1" enableSse4_1) (lib.cmakeBool "HAVE_MPI" enableMpi) (lib.cmakeBool "USE_SYSTEM_ZSTD" true) + (lib.cmakeBool "HAVE_ARM8" stdenv.hostPlatform.isAarch64) ] ++ lib.optionals cudaSupport [ (lib.cmakeBool "ENABLE_CUDA" true) From c84109b099378bd08482978bb03097bcfb06a0c8 Mon Sep 17 00:00:00 2001 From: natsukium Date: Thu, 5 Dec 2024 18:53:30 +0900 Subject: [PATCH 7/8] mmseqs2: move to pkgs/by-name/mm/mmseqs2 --- .../mmseqs2/default.nix => by-name/mm/mmseqs2/package.nix} | 4 ++-- pkgs/top-level/all-packages.nix | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) rename pkgs/{applications/science/biology/mmseqs2/default.nix => by-name/mm/mmseqs2/package.nix} (97%) diff --git a/pkgs/applications/science/biology/mmseqs2/default.nix b/pkgs/by-name/mm/mmseqs2/package.nix similarity index 97% rename from pkgs/applications/science/biology/mmseqs2/default.nix rename to pkgs/by-name/mm/mmseqs2/package.nix index 576ba0599174..ea16ae7f621f 100644 --- a/pkgs/applications/science/biology/mmseqs2/default.nix +++ b/pkgs/by-name/mm/mmseqs2/package.nix @@ -13,7 +13,7 @@ mpi, cudaSupport ? config.cudaSupport, cudaPackages, - openmp, + llvmPackages, zlib, bzip2, pkgsStatic, @@ -61,7 +61,7 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = lib.optionals stdenv.cc.isClang [ - openmp + llvmPackages.openmp zlib bzip2 ] diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f2a1810377b4..6db3c2c4bbcc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -17442,10 +17442,6 @@ with pkgs; inherit (perlPackages) perl TextFormat; }; - mmseqs2 = callPackage ../applications/science/biology/mmseqs2 { - inherit (llvmPackages) openmp; - }; - obitools3 = callPackage ../applications/science/biology/obitools/obitools3.nix { }; raxml-mpi = raxml.override { useMpi = true; }; From 47799668defc81ae0d4f620159d606f7203a4577 Mon Sep 17 00:00:00 2001 From: natsukium Date: Thu, 5 Dec 2024 19:44:48 +0900 Subject: [PATCH 8/8] mmseqs2: add passthru.tests --- pkgs/by-name/mm/mmseqs2/package.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkgs/by-name/mm/mmseqs2/package.nix b/pkgs/by-name/mm/mmseqs2/package.nix index ea16ae7f621f..71be0aefcd91 100644 --- a/pkgs/by-name/mm/mmseqs2/package.nix +++ b/pkgs/by-name/mm/mmseqs2/package.nix @@ -17,6 +17,7 @@ zlib, bzip2, pkgsStatic, + runCommand, }: let # require static library, libzstd.a @@ -76,6 +77,14 @@ stdenv.mkDerivation (finalAttrs: { rm -r $out/util/ ''; + passthru.tests = { + example = runCommand "mmseqs2-test" { } '' + ${lib.getExe finalAttrs.finalPackage} createdb ${finalAttrs.src}/examples/DB.fasta targetDB > $out + ${lib.getExe finalAttrs.finalPackage} createindex targetDB tmp >> $out + ${lib.getExe finalAttrs.finalPackage} easy-search ${finalAttrs.src}/examples/QUERY.fasta targetDB alnRes.m8 tmp >> $out + ''; + }; + meta = with lib; { description = "Ultra fast and sensitive sequence search and clustering suite"; mainProgram = "mmseqs";