-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cleanup RPATH
settings
#42919
Cleanup RPATH
settings
#42919
Conversation
Previously, we needed to provide both `usr/lib` and `usr/lib/julia` as elements on the `RPATH`, because `libjulia` lived in `usr/lib`, and needed to be able to find dependent libraries both within a build tree (when most libraries live in `usr/lib`) and within an install tree (when most libraries live in `usr/lib/julia`). Nowadays, everything is either in `usr/lib` or in `usr/lib/julia` with the exception of `libjulia`, but since it's really `libjulia-internal` that does all the `dlopen()`'ing, we can simply use `$$ORIGIN` (or the equivalent `@loader_path/` on macOS) and completely ignore the rest of the RPATH shenanigans we do.
This broke FreeBSD (more so than it already was): https://build.julialang.org/#/builders/78/builds/4690/steps/5/logs/stdio. Seems one or more of those removed rpath specifications is required. |
It also broke musl: #42940 |
@staticfloat @vtjnash Could we revert this to fix #42944 and #42940, and then reland a fixed version later? |
Oh, hmmm. Would reverting this PR break Julia on macOS Monterey? |
We can probably keep the change that affects macOS and revert the part that doesn't. (The changes reflected in the diff are in two different |
The change to RPATH setting for macOS seems to have improved the situation for users on Monterey, but the other changes in #42919 that affect other platforms seem to have caused regressions on musl Linux (#42940) and FreeBSD (#42944). The easiest thing to do here is to keep the changes from #42919 as they apply to macOS but revert the others.
* Partially revert #42919 The change to RPATH setting for macOS seems to have improved the situation for users on Monterey, but the other changes in #42919 that affect other platforms seem to have caused regressions on musl Linux (#42940) and FreeBSD (#42944). The easiest thing to do here is to keep the changes from #42919 as they apply to macOS but revert the others. * Un-revert the `RPATH_LIB` definition
Should the macOS specific part of this be backported to 1.6/1.7 for Monterey support or should this one not affect it? |
Previously, we needed to provide both `usr/lib` and `usr/lib/julia` as elements on the `RPATH`, because `libjulia` lived in `usr/lib`, and needed to be able to find dependent libraries both within a build tree (when most libraries live in `usr/lib`) and within an install tree (when most libraries live in `usr/lib/julia`). Nowadays, everything is either in `usr/lib` or in `usr/lib/julia` with the exception of `libjulia`, but since it's really `libjulia-internal` that does all the `dlopen()`'ing, we can simply use `$$ORIGIN` (or the equivalent `@loader_path/` on macOS) and completely ignore the rest of the RPATH shenanigans we do. (cherry picked from commit 236523f)
* Partially revert #42919 The change to RPATH setting for macOS seems to have improved the situation for users on Monterey, but the other changes in #42919 that affect other platforms seem to have caused regressions on musl Linux (#42940) and FreeBSD (#42944). The easiest thing to do here is to keep the changes from #42919 as they apply to macOS but revert the others. * Un-revert the `RPATH_LIB` definition (cherry picked from commit 653cad3)
Previously, we needed to provide both `usr/lib` and `usr/lib/julia` as elements on the `RPATH`, because `libjulia` lived in `usr/lib`, and needed to be able to find dependent libraries both within a build tree (when most libraries live in `usr/lib`) and within an install tree (when most libraries live in `usr/lib/julia`). Nowadays, everything is either in `usr/lib` or in `usr/lib/julia` with the exception of `libjulia`, but since it's really `libjulia-internal` that does all the `dlopen()`'ing, we can simply use `$$ORIGIN` (or the equivalent `@loader_path/` on macOS) and completely ignore the rest of the RPATH shenanigans we do.
* Partially revert JuliaLang#42919 The change to RPATH setting for macOS seems to have improved the situation for users on Monterey, but the other changes in JuliaLang#42919 that affect other platforms seem to have caused regressions on musl Linux (JuliaLang#42940) and FreeBSD (JuliaLang#42944). The easiest thing to do here is to keep the changes from JuliaLang#42919 as they apply to macOS but revert the others. * Un-revert the `RPATH_LIB` definition
Previously, we needed to provide both `usr/lib` and `usr/lib/julia` as elements on the `RPATH`, because `libjulia` lived in `usr/lib`, and needed to be able to find dependent libraries both within a build tree (when most libraries live in `usr/lib`) and within an install tree (when most libraries live in `usr/lib/julia`). Nowadays, everything is either in `usr/lib` or in `usr/lib/julia` with the exception of `libjulia`, but since it's really `libjulia-internal` that does all the `dlopen()`'ing, we can simply use `$$ORIGIN` (or the equivalent `@loader_path/` on macOS) and completely ignore the rest of the RPATH shenanigans we do.
* Partially revert JuliaLang#42919 The change to RPATH setting for macOS seems to have improved the situation for users on Monterey, but the other changes in JuliaLang#42919 that affect other platforms seem to have caused regressions on musl Linux (JuliaLang#42940) and FreeBSD (JuliaLang#42944). The easiest thing to do here is to keep the changes from JuliaLang#42919 as they apply to macOS but revert the others. * Un-revert the `RPATH_LIB` definition
Previously, we needed to provide both
usr/lib
andusr/lib/julia
aselements on the
RPATH
, becauselibjulia
lived inusr/lib
, andneeded to be able to find dependent libraries both within a build tree
(when most libraries live in
usr/lib
) and within an install tree (whenmost libraries live in
usr/lib/julia
).Nowadays, everything is either in
usr/lib
or inusr/lib/julia
withthe exception of
libjulia
, but since it's reallylibjulia-internal
that does all the
dlopen()
'ing, we can simply use$$ORIGIN
(or theequivalent
@loader_path/
on macOS) and completely ignore the rest ofthe RPATH shenanigans we do.