-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Fix ROOT-10484 by implementing dyld support for RPATH. #6969
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
Conversation
|
Starting build on |
|
Build failed on mac11.0/cxx17. Failing tests: |
|
@phsft-bot build with flags -DCTEST_TEST_EXCLUDE_NONE=On |
|
Starting build on |
|
Build failed on mac11.0/cxx17. Failing tests: |
|
Starting build on |
|
Build failed on mac11.0/cxx17. Failing tests: |
oshadura
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@vgvassilev wow! changes are so minimal, we always have this feature and never tested it? I afraid I am not sure if CI has R enabled (I see -Dr=Off is everywhere)
|
The intent was that we only wanted to see what was failing. We are working on a bigger patch which will come in this PR. |
|
@phsft-bot build! |
|
Starting build on |
301c273 to
f10cb97
Compare
|
Starting build on |
f10cb97 to
d8cc34b
Compare
|
Starting build on |
d8cc34b to
badb317
Compare
|
Starting build on |
|
Build failed on ROOT-fedora30/cxx14. Failing tests: |
|
Build failed on ROOT-debian10-i386/cxx14. |
knowall-bot
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please apply the code formatting changes without bloating the history:
Run:
git checkout fix-root10484"
wget https://raw.githubusercontent.com/llvm/llvm-project/main/clang/tools/clang-format/git-clang-format
chmod +x git-clang-format
git rebase -i -x "git-clang-format master && git commit -a --allow-empty --fixup=HEAD" --strategy-option=theirs origin/master
git log --oneline # to inspect the results
git rebase --autosquash -i master # squash without poluting the history
interpreter/cling/lib/Interpreter/DynamicLibraryManagerSymbol.cpp
Outdated
Show resolved
Hide resolved
interpreter/cling/lib/Interpreter/DynamicLibraryManagerSymbol.cpp
Outdated
Show resolved
Hide resolved
badb317 to
d136c79
Compare
|
Starting build on |
d136c79 to
6872abc
Compare
|
Starting build on |
Some libraries are layered can depend on other libraries on a private paths. That is, libA can depend on libB which is neither on the LD_LIBRARY_PATH nor on a known system path. The posix linker injects "variables" such as @rpath which is expanded at link time to resolve the libraries on a relative path. Prior to this patch, cling's Dyld-based symbol resolution could not trace down such cases causing failures in symbol resolution when a symbol is only defined in libB (a private library). This patch implements the basic posix linker substitutions allowing cling's Dyld-based symbol resolution implementation to follow more closely the linker rules. Kudos Alexander Penev (@alexander-penev).
859a822 to
6b52af7
Compare
|
Starting build on |
|
Build failed on ROOT-ubuntu16/nortcxxmod. Warnings:
|
|
Build failed on ROOT-debian10-i386/cxx14. Errors:
Failing tests: |
|
Starting build on |
|
Build failed on ROOT-ubuntu16/nortcxxmod. |
|
Build failed on ROOT-performance-centos8-multicore/default. |
|
Build failed on ROOT-debian10-i386/cxx14. Errors:
|
d911414 to
673f76f
Compare
|
Starting build on |
|
Build failed on ROOT-ubuntu16/nortcxxmod. Errors:
|
|
Build failed on ROOT-performance-centos8-multicore/default. Errors:
|
673f76f to
ca11bbe
Compare
|
Starting build on |
|
Build failed on ROOT-debian10-i386/cxx14. Errors:
|
PR root-project#6969 allowed ROOT to build pcm files for the R package via the RInterface.pcm. However, various headers of R define macros which are defined by math.h and others (ERROR in RooFit). When the global module index is enabled, ROOT loads RInterface on a lookup for (Range). Then the exported macros "shadow" the ones which are still in the index and we do not load the correct corresponding module. This obsure problem seems to be coming from a current deficiency in the implementation/interaction between clang and the index. Pre-loading the RInterface, if enabled, seems to resolve the issue at a reasoanble compromise rather than trying to disable the module altoghether or undefine the fragile macros. as the global module index is not smart enough to figure it needs to offer
PR root-project#6969 allowed ROOT to build pcm files for the R package via the RInterface.pcm. However, various headers of R define macros which are defined by math.h and others (ERROR in RooFit). When the global module index is enabled, ROOT loads RInterface on a lookup for (Range). Then the exported macros "shadow" the ones which are still in the index and we do not load the correct corresponding module. This obscure problem seems to be coming from a current deficiency in the implementation/interaction between clang and the index. Pre-loading the RInterface, if enabled, seems to resolve the issue at a reasonable compromise rather than trying to disable the module altogether or undefine the fragile macros. as the global module index is not smart enough to figure it needs to offer
PR root-project#6969 allowed ROOT to build pcm files for the R package via the RInterface.pcm. However, various headers of R define macros which are defined by math.h and others (ERROR in RooFit). When the global module index is enabled, ROOT loads RInterface on a lookup for (Range). Then the exported macros "shadow" the ones which are still in the index and we do not load the correct corresponding module. This obscure problem seems to be coming from a current deficiency in the implementation/interaction between clang and the index. Pre-loading the RInterface, if enabled, seems to resolve the issue at a reasonable compromise rather than trying to disable the module altogether or undefine the fragile macros.
PR root-project#6969 allowed ROOT to build pcm files for the R package via the RInterface.pcm. However, various headers of R define macros which are defined by math.h and others (ERROR in RooFit). When the global module index is enabled, ROOT loads RInterface on a lookup for (Range). Then the exported macros "shadow" the ones which are still in the index and we do not load the correct corresponding module. This obscure problem seems to be coming from a current deficiency in the implementation/interaction between clang and the index. Pre-loading the RInterface, if enabled, seems to resolve the issue at a reasonable compromise rather than trying to disable the module altogether or undefine the fragile macros.
PR root-project#6969 allowed ROOT to build pcm files for the R package via the RInterface.pcm. However, various headers of R define macros which are defined by math.h and others (ERROR in RooFit). When the global module index is enabled, ROOT loads RInterface on a lookup for (Range). Then the exported macros "shadow" the ones which are still in the index and we do not load the correct corresponding module. This obscure problem seems to be coming from a current deficiency in the implementation/interaction between clang and the index. Pre-loading the RInterface, if enabled, seems to resolve the issue at a reasonable compromise rather than trying to disable the module altogether or undefine the fragile macros.
PR #6969 allowed ROOT to build pcm files for the R package via the RInterface.pcm. However, various headers of R define macros which are defined by math.h and others (ERROR in RooFit). When the global module index is enabled, ROOT loads RInterface on a lookup for (Range). Then the exported macros "shadow" the ones which are still in the index and we do not load the correct corresponding module. This obscure problem seems to be coming from a current deficiency in the implementation/interaction between clang and the index. Pre-loading the RInterface, if enabled, seems to resolve the issue at a reasonable compromise rather than trying to disable the module altogether or undefine the fragile macros.
PR root-project#6969 allowed ROOT to build pcm files for the R package via the RInterface.pcm. However, various headers of R define macros which are defined by math.h and others (ERROR in RooFit). When the global module index is enabled, ROOT loads RInterface on a lookup for (Range). Then the exported macros "shadow" the ones which are still in the index and we do not load the correct corresponding module. This obscure problem seems to be coming from a current deficiency in the implementation/interaction between clang and the index. Pre-loading the RInterface, if enabled, seems to resolve the issue at a reasonable compromise rather than trying to disable the module altogether or undefine the fragile macros.
Some libraries are layered can depend on other libraries on a private paths. That is, libA can depend on libB which is neither on the LD_LIBRARY_PATH nor on a known system path. The posix linker injects "variables" such as @rpath which is expanded at link time to resolve the libraries on a relative path.
Prior to this patch, cling's Dyld-based symbol resolution could not trace down such cases causing failures in symbol resolution when a symbol is only defined in libB (a private library).
This patch implements the basic posix linker substitutions allowing cling's Dyld-based symbol resolution implementation to follow more closely the linker rules.
Performance
That PR should reduce the number of
statcalls improving #7774Kudos Alexander Penev (@alexander-penev).