petsc: Fix install_name_tool patch
The PETSc library's config/install.py script checks whether /usr/bin/install_name_tool is an existing file: https://gitlab.com/petsc/petsc/-/blob/master/config/install.py#L368 Therefore, it is not enough to replace it with something that we expect to be on the PATH, as this will cause the linked if statement to be silently skipped. The consequence is that applications linked against this version of petsc will fail at runtime on MacOS with a dynamic loading error. Instead, we should replace install_name_tool with the absolute path of a binary we know will be present at build time. Note that this should be fixed upstream as well, but this is sufficient to fix the runtime error.
This commit is contained in:
parent
b907241a66
commit
8a65fe8da6
@ -1,4 +1,4 @@
|
|||||||
{ stdenv , fetchurl , blas , gfortran , lapack , python }:
|
{ stdenv , darwin , fetchurl , blas , gfortran , lapack , python }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "petsc";
|
pname = "petsc";
|
||||||
@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
|
|||||||
--replace /bin/sh /usr/bin/python
|
--replace /bin/sh /usr/bin/python
|
||||||
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
||||||
substituteInPlace config/install.py \
|
substituteInPlace config/install.py \
|
||||||
--replace /usr/bin/install_name_tool install_name_tool
|
--replace /usr/bin/install_name_tool ${darwin.cctools}/bin/install_name_tool
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
|
Loading…
Reference in New Issue
Block a user