diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 8d2f9fd17732..d3f71f314dfb 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -6770,6 +6770,13 @@ githubId = 11205987; name = "Daniel Salazar"; }; + dsalwasser = { + name = "Daniel Salwasser"; + email = "daniel.salwasser@outlook.com"; + github = "dsalwasser"; + githubId = 148379503; + keys = [ { fingerprint = "DBA9 AE6B 84A9 C08E C4AD 1E46 6CD2 0B2D 0655 BDF6"; } ]; + }; dschrempf = { name = "Dominik Schrempf"; email = "dominik.schrempf@gmail.com"; diff --git a/pkgs/by-name/ka/kaminpar/package.nix b/pkgs/by-name/ka/kaminpar/package.nix new file mode 100644 index 000000000000..85b095bb6131 --- /dev/null +++ b/pkgs/by-name/ka/kaminpar/package.nix @@ -0,0 +1,88 @@ +{ + lib, + stdenv, + fetchFromGitHub, + fetchpatch2, + cmake, + numactl, + mpi, + sparsehash, + tbb_2022_0, + gtest, + mpiCheckPhaseHook, +}: +let + kassert-src = fetchFromGitHub { + owner = "kamping-site"; + repo = "kassert"; + rev = "988b7d54b79ae6634f2fcc53a0314fb1cf2c6a23"; + + fetchSubmodules = true; + hash = "sha256-CBglUfVl9lgEa1t95G0mG4CCj0OWnIBwk7ep62rwIAA="; + }; + + kagen-src = fetchFromGitHub { + owner = "KarlsruheGraphGeneration"; + repo = "KaGen"; + rev = "70386f48e513051656f020360c482ce6bff9a24f"; + + fetchSubmodules = true; + hash = "sha256-5EvRPpjUZpmAIEgybXjNU/mO0+gsAyhlwbT+syDUr48="; + }; +in +stdenv.mkDerivation (finalAttrs: { + pname = "kaminpar"; + version = "3.5.1"; + + src = fetchFromGitHub { + owner = "KaHIP"; + repo = "KaMinPar"; + tag = "v${finalAttrs.version}"; + hash = "sha256-1azBj1DSEb7b8u+S51Sncn6EVMgu+SuFJcK4QVVhRk4="; + }; + + patches = [ + # require gtest to be preinstalled by default if building tests + (fetchpatch2 { + url = "https://github.com/KaHip/KaMinPar/commit/9cb9883eea076d11cffcf4b0d14bf1f4f95a00e4.patch?full_index=1"; + hash = "sha256-aUO5E0HTZqjfu5BUzyRdSZgyQYcE4PGqZaJvLD40sn8="; + }) + ]; + + nativeBuildInputs = [ cmake ]; + + buildInputs = lib.optional stdenv.hostPlatform.isLinux numactl; + + propagatedBuildInputs = [ + mpi + sparsehash + tbb_2022_0 + ]; + + cmakeFlags = [ + (lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) + (lib.cmakeBool "KAMINPAR_BUILD_DISTRIBUTED" true) + (lib.cmakeBool "KAMINPAR_BUILD_WITH_MTUNE_NATIVE" false) + (lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_KASSERT" "${kassert-src}") + (lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_KAGEN" "${kagen-src}") + ]; + + doCheck = true; + + __darwinAllowLocalNetworking = true; + + nativeCheckInputs = [ + gtest + mpiCheckPhaseHook + ]; + + meta = { + description = "Parallel heuristic solver for the balanced k-way graph partitioning problem"; + homepage = "https://github.com/KaHIP/KaMinPar"; + changelog = "https://github.com/KaHIP/KaMinPar/releases/tag/v${finalAttrs.version}"; + mainProgram = "KaMinPar"; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ dsalwasser ]; + }; +})