-
-
Notifications
You must be signed in to change notification settings - Fork 10
WIP: Fix loader path #3
base: master
Are you sure you want to change the base?
Conversation
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
Seem to be running into an interesting issue ( conda/conda-build#1184 ) w.r.t. the prefix. |
I'd be happy to give this a shot. Is there a way of testing (conveniently) that at least some of the changes continue to work so that we have confidence with future changes? |
So I see 3 solutions that are immediately obvious to me. Though maybe there are others.
I think the right long term solution is 3 to have deployment stages as is being discussed in issue ( conda-forge/conda-forge.github.io#204 ). Though I don't know if getting all the way there will be the right way to test this. Still having staged deployments (so that we don't catastrophically break the system when making releases) feels like the right long term solution. It allows for rapid development which is highly desirable, but minimize damage to those using that stage. Only when we are really comfortable do we release something proper to The less elegant but more easily realized solution is 2. A form of staged deployments that would use a Edit: Needless to say 1 isn't exactly convenient. So maybe we should work on one of the other two. |
Do you have any thoughts on this, @mingwandroid? |
The root of all these problems is that To fix this, since I was pushed for time, I simply added these files to
You need to rebuild any packages which have |
@jakirkham can this be closed? |
Fixes #1
Not sure if this actually fixes the issue or not as I haven't tested it yet. However, this is a neat trick that may improve the situation.
Basically we delete the existing
LC_RPATH
. Then we change all the existing linked library paths to point to absolute paths with the fullPREFIX
. At this point,conda-build
picks up on the absolute paths and fixes them. It also goes back and adds the correctLC_RPATH
. The last step would not be possible if we hadn't already removed it.This only has an effect on local builds of this recipe and not on conda-forge builds. To ensure we don't mess up a user's
gcc
package (as all the libraries we are mucking with are hard linked to the same file in thegcc
package), we make fresh copies of all the libraries we mess with. As a result, we can be confident that we have mucked only with our copies of these libraries for build purposes.In short, we trick
conda-build
into fixing these libraries for us.Caveats: As the
libgfortran
package is just part ofgcc
on OS X, there is no guarantee that our "fixed"libgfortran
will have its files installed orgcc
will. It depends on who "wins" (is last) in the install. Similarly this situation may present itself withlibgcc
. Sadly there is nothing we can really do about this ATM. One will need to specifyDYLD_FALLBACK_LIBRARY_PATH
for these cases. Note that the latter will be tricky for people building on 10.11. See issue ( conda-forge/staged-recipes#913 ) for some discussion on this last point.