Samuel Cochran <sj26@sj26.com> writes:
> System Integrity Protection strips dynamic linker (dyld) environment variables, such as DYLD_LIBRARY_PATH, during
exec(2)[1]
Yeah. I wish Apple would just fix that silliness ... I'll spare you the
rant about why it's stupid, but it is. (BTW, last I looked, it's not
exec(2) per se that's doing the damage; the problem is that we're
invoking a sub-shell that's considered a protected program for some
reason, and it's only the use of that that causes DYLD_LIBRARY_PATH
to get removed from the process environment.)
> so we need to rewrite the load paths inside binaries when relocating then during make temp-install before make check
ondarwin.
Interesting proposal, but I think it needs work.
* As coded, this only fixes the problem for references to libpq, not
any of our other shared libraries.
* It's also unpleasant that it hard-wires knowledge of libpq's version
numbering in a place pretty far removed from anywhere that should know
that.
* Just to be annoying, this won't work at all on 32-bit OSX versions
unless we link everything with -headerpad_max_install_names. (I know
Apple forgot about 32-bit machines long ago, but our buildfarm hasn't.)
* Speaking of not working, I don't think this "find" invocation will
report any failure exits from install_name_tool.
* This doesn't fix anything for executables that never get installed,
for instance isolationtester.
We could probably fix the first four problems with some more sweat,
but I'm not seeing a plausible answer to the last one. Overwriting
isolationtester's rpath to make "make check" work would just break
it for "make installcheck".
regards, tom lane