Loading maintainers/maintainer-list.nix +6 −0 Original line number Diff line number Diff line Loading @@ -17676,6 +17676,12 @@ githubId = 12017109; name = "Rabindra Dhakal"; }; qbisi = { name = "qbisicwate"; email = "qbisicwate@gmail.com"; github = "qbisi"; githubId = 84267544; }; qbit = { name = "Aaron Bieber"; email = "aaron@bolddaemon.com"; Loading pkgs/by-name/ca/casadi/package.nix +9 −5 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ cplex, fatrop, fetchFromGitHub, fetchpatch, gurobi, highs, hpipm, Loading Loading @@ -45,6 +46,14 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-Mft0qhjdAbU82RgjYuKue5p7EqbTbt3ii5yXSsCFHrQ="; }; patches = [ (fetchpatch { name = "fix-FindMUMPS.cmake.patch"; url = "https://github.com/casadi/casadi/pull/3899/commits/274f4b23f73e60c5302bec0479fe1e92682b63d2.patch"; hash = "sha256-3GWEWlN8dKLD6htpnOQLChldcT3hE09JWLeuCfAhY+4="; }) ]; postPatch = '' # fix case of hpipmConfig.cmake Loading @@ -57,11 +66,6 @@ stdenv.mkDerivation (finalAttrs: { '$'{CLANG_LLVM_LIB_DIR} \ ${llvmPackages_17.libclang.lib}/lib # fix mumps lib name. No idea where this comes from. substituteInPlace cmake/FindMUMPS.cmake --replace-fail \ "mumps_seq" \ "mumps" # help casadi find its own libs substituteInPlace casadi/core/casadi_os.cpp --replace-fail \ "std::vector<std::string> search_paths;" \ Loading pkgs/by-name/mu/mumps/package.nix +114 −86 Original line number Diff line number Diff line Loading @@ -6,9 +6,55 @@ lapack, lib, metis, parmetis, withParmetis ? false, # default to false due to unfree license scotch, withPtScotch ? mpiSupport, stdenv, fixDarwinDylibNames, mpi, mpiSupport ? false, mpiCheckPhaseHook, scalapack, }: assert withParmetis -> mpiSupport; assert withPtScotch -> mpiSupport; let profile = if mpiSupport then "debian.PAR" else "debian.SEQ"; metisFlags = if withParmetis then '' IMETIS="-I${parmetis}/include -I${metis}/include" \ LMETIS="-L${parmetis}/lib -lparmetis -L${metis}/lib -lmetis" '' else '' IMETIS=-I${metis}/include \ LMETIS="-L${metis}/lib -lmetis" ''; scotchFlags = if withPtScotch then '' ISCOTCH=-I${scotch.dev}/include \ LSCOTCH="-L${scotch}/lib -lptscotch -lptesmumps -lptscotcherr" '' else '' ISCOTCH=-I${scotch.dev}/include \ LSCOTCH="-L${scotch}/lib -lesmumps -lscotch -lscotcherr" ''; macroFlags = "-Dmetis -Dpord -Dscotch" + lib.optionalString withParmetis " -Dparmetis" + lib.optionalString withPtScotch " -Dptscotch"; # Optimized options # Disable -fopenmp in lines below to benefit from OpenMP optFlags = '' OPTF="-O3 -fallow-argument-mismatch" \ OPTL="-O3" \ OPTC="-O3" ''; in stdenv.mkDerivation (finalAttrs: { name = "mumps"; version = "5.7.3"; Loading @@ -18,28 +64,20 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-ZnIfAuvOBJDYqCtKGlWs0r39nG6X2lAVRuUmeIJenZw="; }; patches = [ # Compatibility with coin-or-mumps version (fetchpatch { url = "https://raw.githubusercontent.com/coin-or-tools/ThirdParty-Mumps/bd0bdf9baa3f3677bd34fb36ce63b2b32cc6cc7d/mumps_mpi.patch"; hash = "sha256-70qZUKBVBpJOSRxYxng5Y6ct1fdCUQUGur3chDhGabQ="; }) ]; postPatch = '' # Compatibility with coin-or-mumps version # https://github.com/coin-or-tools/ThirdParty-Mumps/blob/stable/3.0/get.Mumps#L66 cp libseq/mpi.h libseq/mumps_mpi.h '' + lib.optionalString stdenv.hostPlatform.isDarwin '' postPatch = lib.optionalString stdenv.hostPlatform.isDarwin '' substituteInPlace src/Makefile --replace-fail \ "-Wl,\''$(SONAME),libmumps_common" \ "-Wl,-install_name,$out/lib/libmumps_common" ''; configurePhase = '' cp Make.inc/Makefile.debian.SEQ ./Makefile.inc cp Make.inc/Makefile.${profile} ./Makefile.inc ''; enableParallelBuilding = true; preBuild = '' makeFlagsArray+=(${metisFlags} ${scotchFlags} ORDERINGSF="${macroFlags}" ${optFlags}) ''; makeFlags = Loading @@ -48,84 +86,74 @@ stdenv.mkDerivation (finalAttrs: { "LIBEXT_SHARED=.dylib" ] ++ [ "LSCOTCHDIR=${scotch}/lib" "ISCOTCH=-I${scotch.dev}/include" "LMETISDIR=${metis}/lib" "IMETIS=-I${metis}/include" "SCALAP=-lscalapack" "allshared" ]; installPhase = '' installPhase = '' mkdir $out cp -r include lib $out '' + lib.optionalString (!mpiSupport) '' # Install mumps_seq headers install -Dm 444 -t $out/include/mumps_seq libseq/*.h # Add some compatibility with coin-or-mumps ln -s $out/include $out/include/mumps cp libseq/mumps_mpi.h $out/include ln -s $out/include/mumps_seq/mpi.h $out/include/mumps_mpi.h ''; nativeBuildInputs = [ gfortran ]; nativeBuildInputs = [ gfortran ] ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames ++ lib.optional mpiSupport mpi; buildInputs = [ # Parmetis should be placed before scotch to avoid conflict of header file "parmetis.h" buildInputs = lib.optional withParmetis parmetis ++ lib.optional mpiSupport scalapack ++ [ blas lapack metis scotch ]; preFixup = lib.optionalString stdenv.hostPlatform.isDarwin '' install_name_tool \ -change libmpiseq.dylib \ $out/lib/libmpiseq.dylib \ -change libpord.dylib \ $out/lib/libpord.dylib \ $out/lib/libmumps_common.dylib install_name_tool \ -change libmpiseq.dylib \ $out/lib/libmpiseq.dylib \ -change libpord.dylib \ $out/lib/libpord.dylib \ -id \ $out/lib/libcmumps.dylib \ $out/lib/libcmumps.dylib install_name_tool \ -change libmpiseq.dylib \ $out/lib/libmpiseq.dylib \ -change libpord.dylib \ $out/lib/libpord.dylib \ -id \ $out/lib/libdmumps.dylib \ $out/lib/libdmumps.dylib install_name_tool \ -change libmpiseq.dylib \ $out/lib/libmpiseq.dylib \ -change libpord.dylib \ $out/lib/libpord.dylib \ -id \ $out/lib/libsmumps.dylib \ $out/lib/libsmumps.dylib install_name_tool \ -change libmpiseq.dylib \ $out/lib/libmpiseq.dylib \ -change libpord.dylib \ $out/lib/libpord.dylib \ -id \ $out/lib/libzmumps.dylib \ $out/lib/libzmumps.dylib install_name_tool \ -id \ $out/lib/libmpiseq.dylib \ $out/lib/libmpiseq.dylib install_name_tool \ -id \ $out/lib/libpord.dylib \ $out/lib/libpord.dylib doInstallCheck = true; nativeInstallCheckInputs = lib.optional mpiSupport mpiCheckPhaseHook; installCheckPhase = '' runHook preInstallCheck ${lib.optionalString stdenv.hostPlatform.isDarwin "export DYLD_LIBRARY_PATH=$out/lib\n"} ${lib.optionalString mpiSupport "export MPIRUN='mpirun -n 2'\n"} cd examples make all $MPIRUN ./ssimpletest <input_simpletest_real $MPIRUN ./dsimpletest <input_simpletest_real $MPIRUN ./csimpletest <input_simpletest_cmplx $MPIRUN ./zsimpletest <input_simpletest_cmplx $MPIRUN ./c_example $MPIRUN ./multiple_arithmetics_example $MPIRUN ./ssimpletest_save_restore <input_simpletest_real $MPIRUN ./dsimpletest_save_restore <input_simpletest_real $MPIRUN ./csimpletest_save_restore <input_simpletest_cmplx $MPIRUN ./zsimpletest_save_restore <input_simpletest_cmplx $MPIRUN ./c_example_save_restore runHook postInstallCheck ''; passthru = { inherit withParmetis withPtScotch mpiSupport; }; meta = { description = "MUltifrontal Massively Parallel sparse direct Solver"; homepage = "http://mumps-solver.org/"; license = lib.licenses.cecill-c; maintainers = with lib.maintainers; [ nim65s ]; maintainers = with lib.maintainers; [ nim65s qbisi ]; platforms = lib.platforms.unix; # Dependency of scalapack for mpiSupport is broken on darwin platform broken = mpiSupport && stdenv.hostPlatform.isDarwin; }; }) pkgs/top-level/all-packages.nix +2 −0 Original line number Diff line number Diff line Loading @@ -681,6 +681,8 @@ with pkgs; inherit (darwin) DarwinTools; }; mumps_par = callPackage ../by-name/mu/mumps/package.nix { mpiSupport = true; }; mix2nix = callPackage ../development/tools/mix2nix { }; n98-magerun = callPackage ../development/tools/misc/n98-magerun { }; Loading
maintainers/maintainer-list.nix +6 −0 Original line number Diff line number Diff line Loading @@ -17676,6 +17676,12 @@ githubId = 12017109; name = "Rabindra Dhakal"; }; qbisi = { name = "qbisicwate"; email = "qbisicwate@gmail.com"; github = "qbisi"; githubId = 84267544; }; qbit = { name = "Aaron Bieber"; email = "aaron@bolddaemon.com"; Loading
pkgs/by-name/ca/casadi/package.nix +9 −5 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ cplex, fatrop, fetchFromGitHub, fetchpatch, gurobi, highs, hpipm, Loading Loading @@ -45,6 +46,14 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-Mft0qhjdAbU82RgjYuKue5p7EqbTbt3ii5yXSsCFHrQ="; }; patches = [ (fetchpatch { name = "fix-FindMUMPS.cmake.patch"; url = "https://github.com/casadi/casadi/pull/3899/commits/274f4b23f73e60c5302bec0479fe1e92682b63d2.patch"; hash = "sha256-3GWEWlN8dKLD6htpnOQLChldcT3hE09JWLeuCfAhY+4="; }) ]; postPatch = '' # fix case of hpipmConfig.cmake Loading @@ -57,11 +66,6 @@ stdenv.mkDerivation (finalAttrs: { '$'{CLANG_LLVM_LIB_DIR} \ ${llvmPackages_17.libclang.lib}/lib # fix mumps lib name. No idea where this comes from. substituteInPlace cmake/FindMUMPS.cmake --replace-fail \ "mumps_seq" \ "mumps" # help casadi find its own libs substituteInPlace casadi/core/casadi_os.cpp --replace-fail \ "std::vector<std::string> search_paths;" \ Loading
pkgs/by-name/mu/mumps/package.nix +114 −86 Original line number Diff line number Diff line Loading @@ -6,9 +6,55 @@ lapack, lib, metis, parmetis, withParmetis ? false, # default to false due to unfree license scotch, withPtScotch ? mpiSupport, stdenv, fixDarwinDylibNames, mpi, mpiSupport ? false, mpiCheckPhaseHook, scalapack, }: assert withParmetis -> mpiSupport; assert withPtScotch -> mpiSupport; let profile = if mpiSupport then "debian.PAR" else "debian.SEQ"; metisFlags = if withParmetis then '' IMETIS="-I${parmetis}/include -I${metis}/include" \ LMETIS="-L${parmetis}/lib -lparmetis -L${metis}/lib -lmetis" '' else '' IMETIS=-I${metis}/include \ LMETIS="-L${metis}/lib -lmetis" ''; scotchFlags = if withPtScotch then '' ISCOTCH=-I${scotch.dev}/include \ LSCOTCH="-L${scotch}/lib -lptscotch -lptesmumps -lptscotcherr" '' else '' ISCOTCH=-I${scotch.dev}/include \ LSCOTCH="-L${scotch}/lib -lesmumps -lscotch -lscotcherr" ''; macroFlags = "-Dmetis -Dpord -Dscotch" + lib.optionalString withParmetis " -Dparmetis" + lib.optionalString withPtScotch " -Dptscotch"; # Optimized options # Disable -fopenmp in lines below to benefit from OpenMP optFlags = '' OPTF="-O3 -fallow-argument-mismatch" \ OPTL="-O3" \ OPTC="-O3" ''; in stdenv.mkDerivation (finalAttrs: { name = "mumps"; version = "5.7.3"; Loading @@ -18,28 +64,20 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-ZnIfAuvOBJDYqCtKGlWs0r39nG6X2lAVRuUmeIJenZw="; }; patches = [ # Compatibility with coin-or-mumps version (fetchpatch { url = "https://raw.githubusercontent.com/coin-or-tools/ThirdParty-Mumps/bd0bdf9baa3f3677bd34fb36ce63b2b32cc6cc7d/mumps_mpi.patch"; hash = "sha256-70qZUKBVBpJOSRxYxng5Y6ct1fdCUQUGur3chDhGabQ="; }) ]; postPatch = '' # Compatibility with coin-or-mumps version # https://github.com/coin-or-tools/ThirdParty-Mumps/blob/stable/3.0/get.Mumps#L66 cp libseq/mpi.h libseq/mumps_mpi.h '' + lib.optionalString stdenv.hostPlatform.isDarwin '' postPatch = lib.optionalString stdenv.hostPlatform.isDarwin '' substituteInPlace src/Makefile --replace-fail \ "-Wl,\''$(SONAME),libmumps_common" \ "-Wl,-install_name,$out/lib/libmumps_common" ''; configurePhase = '' cp Make.inc/Makefile.debian.SEQ ./Makefile.inc cp Make.inc/Makefile.${profile} ./Makefile.inc ''; enableParallelBuilding = true; preBuild = '' makeFlagsArray+=(${metisFlags} ${scotchFlags} ORDERINGSF="${macroFlags}" ${optFlags}) ''; makeFlags = Loading @@ -48,84 +86,74 @@ stdenv.mkDerivation (finalAttrs: { "LIBEXT_SHARED=.dylib" ] ++ [ "LSCOTCHDIR=${scotch}/lib" "ISCOTCH=-I${scotch.dev}/include" "LMETISDIR=${metis}/lib" "IMETIS=-I${metis}/include" "SCALAP=-lscalapack" "allshared" ]; installPhase = '' installPhase = '' mkdir $out cp -r include lib $out '' + lib.optionalString (!mpiSupport) '' # Install mumps_seq headers install -Dm 444 -t $out/include/mumps_seq libseq/*.h # Add some compatibility with coin-or-mumps ln -s $out/include $out/include/mumps cp libseq/mumps_mpi.h $out/include ln -s $out/include/mumps_seq/mpi.h $out/include/mumps_mpi.h ''; nativeBuildInputs = [ gfortran ]; nativeBuildInputs = [ gfortran ] ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames ++ lib.optional mpiSupport mpi; buildInputs = [ # Parmetis should be placed before scotch to avoid conflict of header file "parmetis.h" buildInputs = lib.optional withParmetis parmetis ++ lib.optional mpiSupport scalapack ++ [ blas lapack metis scotch ]; preFixup = lib.optionalString stdenv.hostPlatform.isDarwin '' install_name_tool \ -change libmpiseq.dylib \ $out/lib/libmpiseq.dylib \ -change libpord.dylib \ $out/lib/libpord.dylib \ $out/lib/libmumps_common.dylib install_name_tool \ -change libmpiseq.dylib \ $out/lib/libmpiseq.dylib \ -change libpord.dylib \ $out/lib/libpord.dylib \ -id \ $out/lib/libcmumps.dylib \ $out/lib/libcmumps.dylib install_name_tool \ -change libmpiseq.dylib \ $out/lib/libmpiseq.dylib \ -change libpord.dylib \ $out/lib/libpord.dylib \ -id \ $out/lib/libdmumps.dylib \ $out/lib/libdmumps.dylib install_name_tool \ -change libmpiseq.dylib \ $out/lib/libmpiseq.dylib \ -change libpord.dylib \ $out/lib/libpord.dylib \ -id \ $out/lib/libsmumps.dylib \ $out/lib/libsmumps.dylib install_name_tool \ -change libmpiseq.dylib \ $out/lib/libmpiseq.dylib \ -change libpord.dylib \ $out/lib/libpord.dylib \ -id \ $out/lib/libzmumps.dylib \ $out/lib/libzmumps.dylib install_name_tool \ -id \ $out/lib/libmpiseq.dylib \ $out/lib/libmpiseq.dylib install_name_tool \ -id \ $out/lib/libpord.dylib \ $out/lib/libpord.dylib doInstallCheck = true; nativeInstallCheckInputs = lib.optional mpiSupport mpiCheckPhaseHook; installCheckPhase = '' runHook preInstallCheck ${lib.optionalString stdenv.hostPlatform.isDarwin "export DYLD_LIBRARY_PATH=$out/lib\n"} ${lib.optionalString mpiSupport "export MPIRUN='mpirun -n 2'\n"} cd examples make all $MPIRUN ./ssimpletest <input_simpletest_real $MPIRUN ./dsimpletest <input_simpletest_real $MPIRUN ./csimpletest <input_simpletest_cmplx $MPIRUN ./zsimpletest <input_simpletest_cmplx $MPIRUN ./c_example $MPIRUN ./multiple_arithmetics_example $MPIRUN ./ssimpletest_save_restore <input_simpletest_real $MPIRUN ./dsimpletest_save_restore <input_simpletest_real $MPIRUN ./csimpletest_save_restore <input_simpletest_cmplx $MPIRUN ./zsimpletest_save_restore <input_simpletest_cmplx $MPIRUN ./c_example_save_restore runHook postInstallCheck ''; passthru = { inherit withParmetis withPtScotch mpiSupport; }; meta = { description = "MUltifrontal Massively Parallel sparse direct Solver"; homepage = "http://mumps-solver.org/"; license = lib.licenses.cecill-c; maintainers = with lib.maintainers; [ nim65s ]; maintainers = with lib.maintainers; [ nim65s qbisi ]; platforms = lib.platforms.unix; # Dependency of scalapack for mpiSupport is broken on darwin platform broken = mpiSupport && stdenv.hostPlatform.isDarwin; }; })
pkgs/top-level/all-packages.nix +2 −0 Original line number Diff line number Diff line Loading @@ -681,6 +681,8 @@ with pkgs; inherit (darwin) DarwinTools; }; mumps_par = callPackage ../by-name/mu/mumps/package.nix { mpiSupport = true; }; mix2nix = callPackage ../development/tools/mix2nix { }; n98-magerun = callPackage ../development/tools/misc/n98-magerun { };