From ad4db6e3abc06917e8dc171f401b2ece716ce757 Mon Sep 17 00:00:00 2001 From: qbisi Date: Tue, 4 Feb 2025 19:42:47 +0800 Subject: [PATCH] python312Packages.petsc4py: init at 3.22.3 --- .../petsc/fix-petsc4py-install-prefix.patch | 22 ++++++++++++++ pkgs/by-name/pe/petsc/package.nix | 30 +++++++++++++++---- pkgs/top-level/python-packages.nix | 6 ++++ 3 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 pkgs/by-name/pe/petsc/fix-petsc4py-install-prefix.patch diff --git a/pkgs/by-name/pe/petsc/fix-petsc4py-install-prefix.patch b/pkgs/by-name/pe/petsc/fix-petsc4py-install-prefix.patch new file mode 100644 index 000000000000..dd3a50114f07 --- /dev/null +++ b/pkgs/by-name/pe/petsc/fix-petsc4py-install-prefix.patch @@ -0,0 +1,22 @@ +diff --git a/config/BuildSystem/config/packages/petsc4py.py b/config/BuildSystem/config/packages/petsc4py.py +index 4a58243..831aa04 100644 +--- a/config/BuildSystem/config/packages/petsc4py.py ++++ b/config/BuildSystem/config/packages/petsc4py.py +@@ -37,7 +37,7 @@ class Configure(config.package.Package): + + def Install(self): + import os +- installLibPath = os.path.join(self.installDir, 'lib') ++ installLibPath = os.path.join(self.installDir, 'lib', '@PYTHON_SITEPACKAGES@') + if self.setCompilers.isDarwin(self.log): + apple = 'You may need to\n (csh/tcsh) setenv MACOSX_DEPLOYMENT_TARGET 10.X\n (sh/bash) MACOSX_DEPLOYMENT_TARGET=10.X; export MACOSX_DEPLOYMENT_TARGET\nbefore running make on PETSc' + else: +@@ -70,7 +70,7 @@ class Configure(config.package.Package): + newdir += 'NUMPY_INCLUDE="'+numpy_include+'" ' + + self.addDefine('HAVE_PETSC4PY',1) +- self.addDefine('PETSC4PY_INSTALL_PATH','"'+os.path.join(self.installdir.dir,'lib')+'"') ++ self.addDefine('PETSC4PY_INSTALL_PATH','"'+installLibPath+'"') + self.addMakeMacro('PETSC4PY','yes') + self.addMakeRule('petsc4pybuild','', \ + ['@echo "*** Building petsc4py ***"',\ diff --git a/pkgs/by-name/pe/petsc/package.nix b/pkgs/by-name/pe/petsc/package.nix index 6a13227e4031..87009b8a8f91 100644 --- a/pkgs/by-name/pe/petsc/package.nix +++ b/pkgs/by-name/pe/petsc/package.nix @@ -4,7 +4,10 @@ fetchzip, cctools, gfortran, + replaceVars, python3, + python3Packages, + withPetsc4py ? false, blas, lapack, mpiSupport ? true, @@ -51,11 +54,19 @@ stdenv.mkDerivation rec { }; strictDeps = true; - nativeBuildInputs = [ - python3 - gfortran - pkg-config - ] ++ lib.optional mpiSupport mpi; + + nativeBuildInputs = + [ + python3 + gfortran + pkg-config + ] + ++ lib.optional mpiSupport mpi + ++ lib.optionals withPetsc4py [ + python3Packages.setuptools + python3Packages.cython + ]; + buildInputs = [ blas @@ -69,6 +80,14 @@ stdenv.mkDerivation rec { ++ lib.optional withScalapack scalapack ++ lib.optional withMumps mumps_par; + propagatedBuildInputs = lib.optional withPetsc4py python3Packages.numpy; + + patches = [ + (replaceVars ./fix-petsc4py-install-prefix.patch { + PYTHON_SITEPACKAGES = python3.sitePackages; + }) + ]; + postPatch = '' patchShebangs ./lib/petsc/bin @@ -86,6 +105,7 @@ stdenv.mkDerivation rec { "--with-precision=${petsc-precision}" "--with-mpi=${if mpiSupport then "1" else "0"}" ] + ++ lib.optional withPetsc4py "--with-petsc4py=1" ++ lib.optionals mpiSupport [ "--CC=mpicc" "--with-cxx=mpicxx" diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b98d245a8297..85ddafd5b6fe 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -10342,6 +10342,12 @@ self: super: with self; { pesq = callPackage ../development/python-modules/pesq { }; + petsc4py = toPythonModule (pkgs.petsc.override { + python3 = python; + python3Packages = self; + withPetsc4py = true; + }); + pex = callPackage ../development/python-modules/pex { }; pexif = callPackage ../development/python-modules/pexif { };