[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