Closed petrushy closed 8 years ago
Sorry, I'm not super familiar with this code. It happens at https://github.com/conda/conda-build/blob/af94221ff9d1154e0fa0e33243604a33d65561a8/conda_build/post.py#L284-L290
which is called from https://github.com/conda/conda-build/blob/af94221ff9d1154e0fa0e33243604a33d65561a8/conda_build/post.py#L305
The four ../../../.. do seem fishy to me. You can try inserting pdb or ipdb breakpoints at those locations to perhaps step through and figure out where those are coming in. It may be that you do not have things installed into your build environment correctly, so the libraries don't get found in the right place?
I don't have time to debug this right now myself, but I welcome PRs, and will return to this when I have time if you haven't already solved it.
Thanks, i'll keep digging..
After the execution of the patchelf in the post.py the RPATH in the build the rpath is right (from readelf):
0x000000000000000f (RPATH) Library rpath: [$ORIGIN/../../..:$ORIGIN/../../../../jre/lib/amd64:$ORIGIN/../../../../jre/lib/amd64/server]
(the ../../../.. is refering to the lib directory, as the file is in lib/python2.7/site-specific/orekit/)
But something happens after this when this is packaged, unpacked or something I think... later it's somehow in the _test returned to only the first term.
If you extract just the package, what do its rpaths look like?
The package usually lives in (miniconda prefix)/conda-bld/linux-64
I don't know if conda does anything to rpath when installing, but if the package contents are ok, then it's either that, or more simply a bad local cached package. You can check the latter by examining the contents of the (root prefix)/pkgs folder.
On Fri, Jul 15, 2016, 17:23 Petrus Hyvönen notifications@github.com wrote:
Thanks, i'll keep digging..
After the execution of the patchelf in the post.py the RPATH in the build the rpath is right (from readelf):
0x000000000000000f (RPATH) Library rpath: [$ORIGIN/../../..:$ORIGIN/../../../../jre/lib/amd64:$ORIGIN/../../../../jre/lib/amd64/server]
(the ../../../.. is refering to the lib directory, as the file is in lib/python2.7/site-specific/orekit/)
But something happens after this when this is packaged, unpacked or something I think... later it's somehow in the _test returned to only the first term.
— You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/conda/conda-build/issues/1116#issuecomment-233083585, or mute the thread https://github.com/notifications/unsubscribe-auth/AACV-cI1xgRlZ2EKqQIl9sQXmJFUVZEbks5qWAhqgaJpZM4JNf44 .
Hi, yes you are right, there was something about bad cache. I don't know which was the main issue but I removed: envs/_test conda-bld/work conda-bld/linux-64 pkgs/ all related to this package
Then things started to work.. Many thanks.
Hi there, thank you for your contribution!
This issue has been automatically locked because it has not had recent activity after being closed.
Please open a new issue if needed.
Thanks!
Hi,
I am a bit confused on the shared library so please excuse if this issue is due to some misunderstanding.
I am trying to build a package that depends on java, and needs access to the jvm libraries. I'm on linux, latest version conda-build.
in my meta.yml i have set the rpath explicitly: rpaths:
When building it seems to detect that there are paths that should be part of the rpath in the shared library:
"setting rpath to: $ORIGIN/../../..:$ORIGIN/../../../../jre/lib/amd64:$ORIGIN/../../../../jre/lib/amd64/server"
I am not sure where this is done, the version in conda-bld/work has the initial full path to the libraries: 0x000000000000000f (RPATH) Library rpath: [/home/phy/anaconda2/envs/_build/lib:/home/phy/anaconda2/jre/lib/amd64:/home/phy/anaconda2/jre/lib/amd64/server]
But when the test phase in the build comes, the shared library is not found, and when performing an readelf -d on the shared library in the envs/_test the rpath looks like: 0x0000000000000001 (NEEDED) Shared library: [libjava.so] 0x0000000000000001 (NEEDED) Shared library: [libjvm.so] 0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6] 0x0000000000000001 (NEEDED) Shared library: [libm.so.6] 0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1] 0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] 0x000000000000000f (RPATH) Library rpath: [$ORIGIN/../../..]
I am a bit confused that the detected rpath doesn't seem to make it to the final somehow. Is there a way to debug this better?