Loading pkgs/by-name/pe/petsc/package.nix +132 −75 Original line number Diff line number Diff line { lib, newScope, stdenv, fetchzip, gfortran, replaceVars, python3, python3Packages, blas, lapack, zlib, # propagated by p4est but required by petsc bash, pkg-config, gfortran, bison, mpi, # generic mpi dependency mpiCheckPhaseHook, bash, python3, python3Packages, # Build options petsc-optimized ? true, petsc-scalar-type ? "real", petsc-precision ? "double", debug ? false, scalarType ? "real", precision ? "double", mpiSupport ? true, fortranSupport ? true, pythonSupport ? false, # petsc python binding withExamples ? false, withFullDeps ? false, # full External libraries support Loading @@ -26,41 +27,88 @@ # External libraries options withHdf5 ? withCommonDeps, withMetis ? withCommonDeps, withScalapack ? withFullDeps, withZlib ? (withP4est || withPtscotch), withScalapack ? withCommonDeps && mpiSupport, withParmetis ? withFullDeps, # parmetis is unfree withPtscotch ? withFullDeps, withMumps ? withFullDeps, withPtscotch ? withCommonDeps && mpiSupport, withMumps ? withCommonDeps, withP4est ? withFullDeps, withHypre ? withCommonDeps && mpiSupport, withFftw ? withCommonDeps, withSuperLu ? withCommonDeps, withSuitesparse ? withCommonDeps, # External libraries hdf5-fortran-mpi, blas, lapack, hdf5, metis, parmetis, scotch, scalapack, mumps_par, pkg-config, mumps, p4est, zlib, # propagated by p4est but required by petsc hypre, fftw, superlu, suitesparse, # Used in passthru.tests petsc, }: assert withFullDeps -> withCommonDeps; # This version of PETSc does not support a non-MPI p4est build assert withP4est -> (p4est.mpiSupport && mpiSupport); assert withP4est -> (mpiSupport && withZlib); # Package parmetis depend on metis and mpi support assert withParmetis -> (withMetis && mpiSupport); assert withPtscotch -> mpiSupport; assert withPtscotch -> (mpiSupport && withZlib); assert withScalapack -> mpiSupport; assert withMumps -> withScalapack; assert (withMumps && mpiSupport) -> withScalapack; assert withHypre -> mpiSupport; stdenv.mkDerivation rec { let petscPackages = lib.makeScope newScope (self: { inherit # global override options mpiSupport fortranSupport pythonSupport precision ; enableMpi = self.mpiSupport; petscPackages = self; # external libraries mpi = self.callPackage mpi.override { }; blas = self.callPackage blas.override { }; lapack = self.callPackage lapack.override { }; hdf5 = self.callPackage hdf5.override { fortran = gfortran; cppSupport = !mpiSupport; }; metis = self.callPackage metis.override { }; parmetis = self.callPackage parmetis.override { }; scotch = self.callPackage scotch.override { }; scalapack = self.callPackage scalapack.override { }; mumps = self.callPackage mumps.override { }; p4est = self.callPackage p4est.override { }; hypre = self.callPackage hypre.override { }; fftw = self.callPackage fftw.override { }; superlu = self.callPackage superlu.override { }; suitesparse = self.callPackage suitesparse.override { }; }); in stdenv.mkDerivation (finalAttrs: { pname = "petsc"; version = "3.22.4"; version = "3.23.0"; src = fetchzip { url = "https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-${version}.tar.gz"; hash = "sha256-8WV1ylXytkhiNa7YpWSOIpSvzLCCjdVVe5SiGfhicas="; url = "https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-${finalAttrs.version}.tar.gz"; hash = "sha256-OcI4iyDOR0YTVV+JoOhbfutoW00EmfapNaMnD/JJFsI="; }; strictDeps = true; Loading @@ -70,6 +118,7 @@ stdenv.mkDerivation rec { python3 gfortran pkg-config bison ] ++ lib.optional mpiSupport mpi ++ lib.optionals pythonSupport [ Loading @@ -79,16 +128,21 @@ stdenv.mkDerivation rec { buildInputs = [ blas lapack petscPackages.blas petscPackages.lapack ] ++ lib.optional withHdf5 hdf5-fortran-mpi ++ lib.optional withP4est p4est ++ lib.optional withMetis metis ++ lib.optional withParmetis parmetis ++ lib.optional withPtscotch scotch ++ lib.optional withScalapack scalapack ++ lib.optional withMumps mumps_par; ++ lib.optional withZlib zlib ++ lib.optional withHdf5 petscPackages.hdf5 ++ lib.optional withP4est petscPackages.p4est ++ lib.optional withMetis petscPackages.metis ++ lib.optional withParmetis petscPackages.parmetis ++ lib.optional withPtscotch petscPackages.scotch ++ lib.optional withScalapack petscPackages.scalapack ++ lib.optional withMumps petscPackages.mumps ++ lib.optional withHypre petscPackages.hypre ++ lib.optional withSuperLu petscPackages.superlu ++ lib.optional withFftw petscPackages.fftw ++ lib.optional withSuitesparse petscPackages.suitesparse; propagatedBuildInputs = lib.optional pythonSupport python3Packages.numpy; Loading @@ -109,57 +163,39 @@ stdenv.mkDerivation rec { [ "--with-blas=1" "--with-lapack=1" "--with-scalar-type=${petsc-scalar-type}" "--with-precision=${petsc-precision}" "--with-scalar-type=${scalarType}" "--with-precision=${precision}" "--with-mpi=${if mpiSupport then "1" else "0"}" ] ++ lib.optional pythonSupport "--with-petsc4py=1" ++ lib.optionals mpiSupport [ "--CC=mpicc" "--with-cxx=mpicxx" "--with-fc=mpif90" ] ++ lib.optionals withMetis [ "--with-metis=1" "--with-metis-dir=${metis}" ] ++ lib.optionals withParmetis [ "--with-parmetis=1" "--with-parmetis-dir=${parmetis}" ] ++ lib.optionals withPtscotch [ "--with-ptscotch=1" "--with-ptscotch-include=${lib.getDev scotch}/include" "--with-ptscotch-lib=[-L${lib.getLib scotch}/lib,-lptscotch,-lptesmumps,-lptscotchparmetisv3,-lptscotcherr,-lesmumps,-lscotch,-lscotcherr]" ] ++ lib.optionals withScalapack [ "--with-scalapack=1" "--with-scalapack-dir=${scalapack}" ] ++ lib.optionals withMumps [ "--with-mumps=1" "--with-mumps-dir=${mumps_par}" ] ++ lib.optionals withP4est [ "--with-p4est=1" "--with-zlib-include=${lib.getDev zlib}/include" "--with-zlib-lib=[-L${lib.getLib zlib}/lib,-lz]" ] ++ lib.optionals withHdf5 [ "--with-hdf5=1" "--with-hdf5-fortran-bindings=1" "--with-hdf5-include=${lib.getDev hdf5-fortran-mpi}/include" "--with-hdf5-lib=[-L${lib.getLib hdf5-fortran-mpi}/lib,-lhdf5]" ] ++ lib.optionals petsc-optimized [ ++ lib.optionals (!debug) [ "--with-debugging=0" "COPTFLAGS=-O3" "FOPTFLAGS=-O3" "CXXOPTFLAGS=-O3" "CXXFLAGS=-O3" ]; ] ++ lib.optional (!fortranSupport) "--with-fortran-bindings=0" ++ lib.optional pythonSupport "--with-petsc4py=1" ++ lib.optional withMetis "--with-metis=1" ++ lib.optional withParmetis "--with-parmetis=1" ++ lib.optional withPtscotch "--with-ptscotch=1" ++ lib.optional withScalapack "--with-scalapack=1" ++ lib.optional withMumps "--with-mumps=1" ++ lib.optional (withMumps && !mpiSupport) "--with-mumps-serial=1" ++ lib.optional withP4est "--with-p4est=1" ++ lib.optional withZlib "--with-zlib=1" ++ lib.optional withHdf5 "--with-hdf5=1" ++ lib.optional withHypre "--with-hypre=1" ++ lib.optional withSuperLu "--with-superlu=1" ++ lib.optional withFftw "--with-fftw=1" ++ lib.optional withSuitesparse "--with-suitesparse=1"; hardeningDisable = lib.optionals (!petsc-optimized) [ hardeningDisable = lib.optionals debug [ "fortify" "fortify3" ]; Loading Loading @@ -198,19 +234,40 @@ stdenv.mkDerivation rec { pythonImportsCheck = [ "petsc4py" ]; passthru = { inherit mpiSupport pythonSupport; inherit mpiSupport pythonSupport fortranSupport ; petscPackages = petscPackages.overrideScope ( final: prev: { petsc = finalAttrs.finalPackage; } ); tests = { serial = petsc.override { mpiSupport = false; }; } // lib.optionalAttrs stdenv.hostPlatform.isLinux { fullDeps = petsc.override { withFullDeps = true; withParmetis = false; }; }; }; setupHook = ./setup-hook.sh; meta = with lib; { meta = { description = "Portable Extensible Toolkit for Scientific computation"; homepage = "https://petsc.org/release/"; license = licenses.bsd2; license = lib.licenses.bsd2; platforms = lib.platforms.unix; maintainers = with maintainers; [ maintainers = with lib.maintainers; [ cburstedde qbisi ]; }; } }) pkgs/by-name/sl/slepc/package.nix +2 −8 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ lib, stdenv, fetchFromGitLab, sowing, python3, python3Packages, arpack-mpi, Loading @@ -17,13 +16,13 @@ assert petsc.mpiSupport; assert pythonSupport -> petsc.pythonSupport; stdenv.mkDerivation (finalAttrs: { pname = "slepc"; version = "3.22.2"; version = "3.23.0"; src = fetchFromGitLab { owner = "slepc"; repo = "slepc"; tag = "v${finalAttrs.version}"; hash = "sha256-a5DmsA7NAlhrEaS43TYPk7vtDfhXLEP+5sftu2A9Yt4="; hash = "sha256-Z9CVZQ/Ezb1S2EkTb9amAPxaN4tiUnKrbvQIc3BnVuU="; }; postPatch = '' Loading @@ -33,11 +32,6 @@ stdenv.mkDerivation (finalAttrs: { "slepc.prefixdir,'${python3.sitePackages}'" patchShebangs lib/slepc/bin # Use system bfort substituteInPlace config/packages/sowing.py \ --replace-fail "bfort = os.path.join(archdir,'bin','bfort')" \ "bfort = '${sowing}/bin/bfort'" ''; # Usually this project is being built as part of a `petsc` build or as part of Loading Loading
pkgs/by-name/pe/petsc/package.nix +132 −75 Original line number Diff line number Diff line { lib, newScope, stdenv, fetchzip, gfortran, replaceVars, python3, python3Packages, blas, lapack, zlib, # propagated by p4est but required by petsc bash, pkg-config, gfortran, bison, mpi, # generic mpi dependency mpiCheckPhaseHook, bash, python3, python3Packages, # Build options petsc-optimized ? true, petsc-scalar-type ? "real", petsc-precision ? "double", debug ? false, scalarType ? "real", precision ? "double", mpiSupport ? true, fortranSupport ? true, pythonSupport ? false, # petsc python binding withExamples ? false, withFullDeps ? false, # full External libraries support Loading @@ -26,41 +27,88 @@ # External libraries options withHdf5 ? withCommonDeps, withMetis ? withCommonDeps, withScalapack ? withFullDeps, withZlib ? (withP4est || withPtscotch), withScalapack ? withCommonDeps && mpiSupport, withParmetis ? withFullDeps, # parmetis is unfree withPtscotch ? withFullDeps, withMumps ? withFullDeps, withPtscotch ? withCommonDeps && mpiSupport, withMumps ? withCommonDeps, withP4est ? withFullDeps, withHypre ? withCommonDeps && mpiSupport, withFftw ? withCommonDeps, withSuperLu ? withCommonDeps, withSuitesparse ? withCommonDeps, # External libraries hdf5-fortran-mpi, blas, lapack, hdf5, metis, parmetis, scotch, scalapack, mumps_par, pkg-config, mumps, p4est, zlib, # propagated by p4est but required by petsc hypre, fftw, superlu, suitesparse, # Used in passthru.tests petsc, }: assert withFullDeps -> withCommonDeps; # This version of PETSc does not support a non-MPI p4est build assert withP4est -> (p4est.mpiSupport && mpiSupport); assert withP4est -> (mpiSupport && withZlib); # Package parmetis depend on metis and mpi support assert withParmetis -> (withMetis && mpiSupport); assert withPtscotch -> mpiSupport; assert withPtscotch -> (mpiSupport && withZlib); assert withScalapack -> mpiSupport; assert withMumps -> withScalapack; assert (withMumps && mpiSupport) -> withScalapack; assert withHypre -> mpiSupport; stdenv.mkDerivation rec { let petscPackages = lib.makeScope newScope (self: { inherit # global override options mpiSupport fortranSupport pythonSupport precision ; enableMpi = self.mpiSupport; petscPackages = self; # external libraries mpi = self.callPackage mpi.override { }; blas = self.callPackage blas.override { }; lapack = self.callPackage lapack.override { }; hdf5 = self.callPackage hdf5.override { fortran = gfortran; cppSupport = !mpiSupport; }; metis = self.callPackage metis.override { }; parmetis = self.callPackage parmetis.override { }; scotch = self.callPackage scotch.override { }; scalapack = self.callPackage scalapack.override { }; mumps = self.callPackage mumps.override { }; p4est = self.callPackage p4est.override { }; hypre = self.callPackage hypre.override { }; fftw = self.callPackage fftw.override { }; superlu = self.callPackage superlu.override { }; suitesparse = self.callPackage suitesparse.override { }; }); in stdenv.mkDerivation (finalAttrs: { pname = "petsc"; version = "3.22.4"; version = "3.23.0"; src = fetchzip { url = "https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-${version}.tar.gz"; hash = "sha256-8WV1ylXytkhiNa7YpWSOIpSvzLCCjdVVe5SiGfhicas="; url = "https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-${finalAttrs.version}.tar.gz"; hash = "sha256-OcI4iyDOR0YTVV+JoOhbfutoW00EmfapNaMnD/JJFsI="; }; strictDeps = true; Loading @@ -70,6 +118,7 @@ stdenv.mkDerivation rec { python3 gfortran pkg-config bison ] ++ lib.optional mpiSupport mpi ++ lib.optionals pythonSupport [ Loading @@ -79,16 +128,21 @@ stdenv.mkDerivation rec { buildInputs = [ blas lapack petscPackages.blas petscPackages.lapack ] ++ lib.optional withHdf5 hdf5-fortran-mpi ++ lib.optional withP4est p4est ++ lib.optional withMetis metis ++ lib.optional withParmetis parmetis ++ lib.optional withPtscotch scotch ++ lib.optional withScalapack scalapack ++ lib.optional withMumps mumps_par; ++ lib.optional withZlib zlib ++ lib.optional withHdf5 petscPackages.hdf5 ++ lib.optional withP4est petscPackages.p4est ++ lib.optional withMetis petscPackages.metis ++ lib.optional withParmetis petscPackages.parmetis ++ lib.optional withPtscotch petscPackages.scotch ++ lib.optional withScalapack petscPackages.scalapack ++ lib.optional withMumps petscPackages.mumps ++ lib.optional withHypre petscPackages.hypre ++ lib.optional withSuperLu petscPackages.superlu ++ lib.optional withFftw petscPackages.fftw ++ lib.optional withSuitesparse petscPackages.suitesparse; propagatedBuildInputs = lib.optional pythonSupport python3Packages.numpy; Loading @@ -109,57 +163,39 @@ stdenv.mkDerivation rec { [ "--with-blas=1" "--with-lapack=1" "--with-scalar-type=${petsc-scalar-type}" "--with-precision=${petsc-precision}" "--with-scalar-type=${scalarType}" "--with-precision=${precision}" "--with-mpi=${if mpiSupport then "1" else "0"}" ] ++ lib.optional pythonSupport "--with-petsc4py=1" ++ lib.optionals mpiSupport [ "--CC=mpicc" "--with-cxx=mpicxx" "--with-fc=mpif90" ] ++ lib.optionals withMetis [ "--with-metis=1" "--with-metis-dir=${metis}" ] ++ lib.optionals withParmetis [ "--with-parmetis=1" "--with-parmetis-dir=${parmetis}" ] ++ lib.optionals withPtscotch [ "--with-ptscotch=1" "--with-ptscotch-include=${lib.getDev scotch}/include" "--with-ptscotch-lib=[-L${lib.getLib scotch}/lib,-lptscotch,-lptesmumps,-lptscotchparmetisv3,-lptscotcherr,-lesmumps,-lscotch,-lscotcherr]" ] ++ lib.optionals withScalapack [ "--with-scalapack=1" "--with-scalapack-dir=${scalapack}" ] ++ lib.optionals withMumps [ "--with-mumps=1" "--with-mumps-dir=${mumps_par}" ] ++ lib.optionals withP4est [ "--with-p4est=1" "--with-zlib-include=${lib.getDev zlib}/include" "--with-zlib-lib=[-L${lib.getLib zlib}/lib,-lz]" ] ++ lib.optionals withHdf5 [ "--with-hdf5=1" "--with-hdf5-fortran-bindings=1" "--with-hdf5-include=${lib.getDev hdf5-fortran-mpi}/include" "--with-hdf5-lib=[-L${lib.getLib hdf5-fortran-mpi}/lib,-lhdf5]" ] ++ lib.optionals petsc-optimized [ ++ lib.optionals (!debug) [ "--with-debugging=0" "COPTFLAGS=-O3" "FOPTFLAGS=-O3" "CXXOPTFLAGS=-O3" "CXXFLAGS=-O3" ]; ] ++ lib.optional (!fortranSupport) "--with-fortran-bindings=0" ++ lib.optional pythonSupport "--with-petsc4py=1" ++ lib.optional withMetis "--with-metis=1" ++ lib.optional withParmetis "--with-parmetis=1" ++ lib.optional withPtscotch "--with-ptscotch=1" ++ lib.optional withScalapack "--with-scalapack=1" ++ lib.optional withMumps "--with-mumps=1" ++ lib.optional (withMumps && !mpiSupport) "--with-mumps-serial=1" ++ lib.optional withP4est "--with-p4est=1" ++ lib.optional withZlib "--with-zlib=1" ++ lib.optional withHdf5 "--with-hdf5=1" ++ lib.optional withHypre "--with-hypre=1" ++ lib.optional withSuperLu "--with-superlu=1" ++ lib.optional withFftw "--with-fftw=1" ++ lib.optional withSuitesparse "--with-suitesparse=1"; hardeningDisable = lib.optionals (!petsc-optimized) [ hardeningDisable = lib.optionals debug [ "fortify" "fortify3" ]; Loading Loading @@ -198,19 +234,40 @@ stdenv.mkDerivation rec { pythonImportsCheck = [ "petsc4py" ]; passthru = { inherit mpiSupport pythonSupport; inherit mpiSupport pythonSupport fortranSupport ; petscPackages = petscPackages.overrideScope ( final: prev: { petsc = finalAttrs.finalPackage; } ); tests = { serial = petsc.override { mpiSupport = false; }; } // lib.optionalAttrs stdenv.hostPlatform.isLinux { fullDeps = petsc.override { withFullDeps = true; withParmetis = false; }; }; }; setupHook = ./setup-hook.sh; meta = with lib; { meta = { description = "Portable Extensible Toolkit for Scientific computation"; homepage = "https://petsc.org/release/"; license = licenses.bsd2; license = lib.licenses.bsd2; platforms = lib.platforms.unix; maintainers = with maintainers; [ maintainers = with lib.maintainers; [ cburstedde qbisi ]; }; } })
pkgs/by-name/sl/slepc/package.nix +2 −8 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ lib, stdenv, fetchFromGitLab, sowing, python3, python3Packages, arpack-mpi, Loading @@ -17,13 +16,13 @@ assert petsc.mpiSupport; assert pythonSupport -> petsc.pythonSupport; stdenv.mkDerivation (finalAttrs: { pname = "slepc"; version = "3.22.2"; version = "3.23.0"; src = fetchFromGitLab { owner = "slepc"; repo = "slepc"; tag = "v${finalAttrs.version}"; hash = "sha256-a5DmsA7NAlhrEaS43TYPk7vtDfhXLEP+5sftu2A9Yt4="; hash = "sha256-Z9CVZQ/Ezb1S2EkTb9amAPxaN4tiUnKrbvQIc3BnVuU="; }; postPatch = '' Loading @@ -33,11 +32,6 @@ stdenv.mkDerivation (finalAttrs: { "slepc.prefixdir,'${python3.sitePackages}'" patchShebangs lib/slepc/bin # Use system bfort substituteInPlace config/packages/sowing.py \ --replace-fail "bfort = os.path.join(archdir,'bin','bfort')" \ "bfort = '${sowing}/bin/bfort'" ''; # Usually this project is being built as part of a `petsc` build or as part of Loading