[Distutils] Dynamic linking on Linux, Mac OS, et al

Stephen Langer stephen.langer at nist.gov
Wed Jan 11 21:32:30 CET 2006


On Jan 6, 2006, at 10:27 PM, Bob Ippolito wrote:
> On Jan 6, 2006, at 6:55 PM, Stephen Langer wrote:
>> On Jan 6, 2006, at 11:33 AM, Bob Ippolito wrote:
>>> On Jan 6, 2006, at 8:19 AM, Phillip J. Eby wrote:
>>>>
>>>> The issue for the PyICU/PyLucene etc. use cases is that there  
>>>> are a whole
>>>> bunch of SWIG wrappers for different extensions, but with a  
>>>> large common
>>>> library for type mapping etc.  The authors want a shared library  
>>>> for *their
>>>> own code* that is used by multiple extensions.  This is not  
>>>> separately
>>>> distributed code.
>>>
>>> It'd be better if these projects just fixed themselves to do things
>>> the "right" way, using a Python extension and a function table.
>>
>>   Can you explain to me in more detail what the "right" way is?  I  
>> have a large number of swig wrapper files for a large number of C+ 
>> + files.  The program has a small number of core shared libraries  
>> that are always loaded, and a few that are optional.  The shared  
>> library code is written in C++.  Sometimes classes defined in the  
>> core libraries are used as base classes for classes defined in the  
>> optional libraries.  All of this can be handled easily with shared  
>> libraries.  How can it be done with function tables?
>
> Numeric, Numarray, pygame, PyObjC, etc. are good references for how  
> to export bits of C API as a function table.  I don't use C++  
> unless I have to, so I'm not familiar enough with it to say whether  
> or not it's going to cause problems given how you want to use it.   
> Maybe it's not possible without refactoring the optional library  
> code to work some other way.

Ok, I've looked at some of these examples.  I haven't had the time to  
go through their mechanisms in detail, but it seems that under the  
hood they don't do anything terribly different from what swig does.   
I still don't see how they pertain to solving the shared library  
problem, and how doing things the "right" way makes shared libraries  
unnecessary.

If extension A and extension B both require routine Z, and there's no  
python extension for routine Z, isn't the best solution to put Z in a  
shared library?

I hope I'm not being dense here.  We have lots of python extensions,  
all of which link to a relatively small number of shared libraries,  
and I'd like to understand why this setup is "wrong".

  -- Steve



--
-- EMail: stephen.langer at nist.gov                    Phone: (301)  
975-5423 --
-- WWW:  http://math.nist.gov/mcsd/Staff/SLanger/    Fax:   (301)  
990-4127 --
-- Mail: NIST; 100 Bureau Drive -- Stop 8910; Gaithersburg, Md   
20899-8910 --

-- "I don't think this will work.  That's why it's  
science."               --
--                                      Naomi Langer,  17 Feb  
2003         --




More information about the Distutils-SIG mailing list