[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 mailing list