On Apr 22, 2021, at 00:09, Marcus Calhoun-Lopez wrote:

> I must admit that whan issues like code signing come up, I tend to
> tune out, so please forgive me if this is well trodden territory.
> 
> While working on the netgen, I added the following code to get the
> destroot phase working (where ${pdv} is 3.8, 3.9, etc.):
>    destroot.env-append
> PYTHONPATH=${destroot}${prefix}/lib/python${pdv}/site-packages/ \
> 
> DYLD_LIBRARY_PATH=${destroot}${prefix}/lib
> 
> In the CMake file, PYTHONPATH is respected by execute_process [1], but
> DYLD_LIBRARY_PATH is not.
> From what I can tell, this is an OS issue and not a cmake problem [2].
> Apparently, the solution is to run codesign on cmake.
> Is this at all feasible?
> Is there another possible workaround anyone can think of?
> I am afraid I know little to nothing about how codesign [3] works.
> 
> Thank you,
> Marcus
> 
> [1] https://cmake.org/cmake/help/latest/command/execute_process.html
> [2] https://gitlab.kitware.com/cmake/cmake/-/issues/20678
> [3] 
> https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html

https://gitlab.kitware.com/cmake/cmake/-/issues/20678 seems to be about 
restrictions encountered when using a binary distributed by cmake.org. The 
reporter said he did not experience those restrictions when building cmake 
himself or when using cmake from Homebrew, so I would not expect you to 
experience those restrictions with cmake from MacPorts either. Presumably the 
binary from cmake.org is built with settings (hardened runtime?) that cause 
this to occur, settings that we are presumably not using.

DYLD_LIBRARY_PATH needs to be set when invoking the binary that needs it. Ever 
since OS X 10.11, DYLD environment variables are not inherited by subprocesses, 
so you can't just set it at the top level and expect it to be there in whatever 
subprocess or subsubprocess needs it. (Other environment variables are still 
inherited.) So you might need to follow the execution path a little and figure 
out where the executable that needs DYLD_LIBRARY_PATH is being run and set 
DYLD_LIBRARY_PATH when running it.

Reply via email to