[Distutils] Dynamic linking on Linux, Mac OS, et al
Phillip J. Eby
pje at telecommunity.com
Sat Jan 14 20:56:58 CET 2006
At 10:06 AM 1/14/2006 -0500, Jim Fulton wrote:
>On many Linux (Unix?) platforms, you can pass an -rpath/-R option to the
>linker at build time that causes the run-time linker to use specific
>paths to load libraries. This feature is supported by disutils through
>its --rpath/-R build_ext options.
But that's not relocatable (to different directories), and eggs are
intended to be "zero-install" for simple use cases. So, the solution I
came up with uses '.' in the rpath, and a stub loader that changes
directories long enough to get the extension to load and find its library
(or libraries). This appears to work decently enough on Linux.
>BTW, I often have need to be able to create what we call "application
>buildouts" that contain various facilities needed by a particular
>application. These facilities are mostly Python-based but often include
>things like relational databases, ICU, ldap servers, etc. We want
>to be able to have buildouts for multiple applications (or multiple
>application versions) on a single development machine. Each buildout
>needs to be able to control versions of things it uses (including
>Python versions). We try to minimize the dependence on system libraries,
>as these are usually different on development and deployment systems
>and because we may need different versions for different applications on
>a development machine. I'm just beginning to learn about eggs.
>I certainly hope I'll have the same flexibility when installing eggs
>that I have now when using distutils.
I'm not sure I can answer that question, or that I even know what your
question is, actually. :) Eggs don't really try to encompass building
arbitrary executables, only Python code, C/C++/Pyrex/SWIG extensions, and
libraries linked to the extensions. It sort of sounds like you're saying
you'd like to be able to build a bunch of non-Python stuff too, which is
likely to remain out of scope for the foreseeable future. If you have
managed to shoehorn the distutils into doing it for you, great, but I would
be surprised if such extensions would be egg-able in any meaningful way.
More information about the Distutils-SIG