[Distutils] Shared libs with setuptools/distutils ?
Phillip J. Eby
pje at telecommunity.com
Sat Mar 8 03:42:51 CET 2008
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.)
More information about the Distutils-SIG