[Distutils] Shared libs with setuptools/distutils ?

Andi Vajda vajda at osafoundation.org
Sat Mar 8 04:34:07 CET 2008


On Mar 7, 2008, at 18:42, "Phillip J. Eby" <pje at telecommunity.com>  
wrote:

> At 06:11 PM 3/7/2008 -0800, Andi Vajda wrote:
>> If I want to support multiple Python extension modules built with  
>> JCC to run in the same Python process and hence share the same Java  
>> VM, there is some code between these modules that needs to be shared.
>>
>> Currently, the JCC runtime code (not much, really) is compiled into  
>> each JCC-built extension module. There is one C++ class, JCCEnv,  
>> that really needs to be shared among all JCC-built modules.  
>> Building that class into a shared library (instead of a python  
>> module library) could be to be the way to go. Then every such  
>> module would be linked against this shared library.
>>
>> I gave this a quick manual try on Mac and it seems to work.
>>
>> But do distutils or setuptools have built-in ways of building a  
>> regular shared library (in particular, on Mac OS X, a .dylib, not a  
>> bundle) or is there some hacking needed there still ? (google shows  
>> that there have been nibbles of interest over the past years about  
>> this but it's unclear whether this was done or not). It would make  
>> the JCC build considerably more complicated if I had to add hand- 
>> crafted code for each and every platform/compiler that is supported  
>> by JCC (that list is growing). Having a distutils or setuptools way  
>> of building a regular shared library would be very helpful here.  
>> Has support for that that been added yet ?
>
> Not really, but there is some experimental code in the setuptools  
> trunk, IIRC.  If you look at the 'tests/test_shlib' subdirectory  
> there is some sample code for building a shared library.  I don't  
> know if it works right on OS X...  and there were some hairy things  
> involved in doing it on Linux.  Patches welcome.  :)
>
> (Chances are good, though, that you'll be better off using the  
> import + API struct approach to sharing stuff.  IIRC, there are  
> still a lot of hoops to jump through to get shared libs working on  
> OS X and Linux.)
>

Yes, I thought of that first but how do I do this with a C++ class and  
all its methods ? We're not talking about a single function pointer  
here :(

Andi..



More information about the Distutils-SIG mailing list