Mac OS distultils probelm

T

Timo

Hello there,

I'm working on a python extension module that I'm trying to install
using the distutils setup tools and I am running into a strange linker
problem. Here is the situation: I have a bunch of code (swig-wrapped C+
+ in this instance) that I want to compile into a module. The
compilation itself works just fine and so does the initial linking.
The linker command that distutils spits out looks somewhat like this

g++ -bundle -undefined dynamic_lookup mymodule_wrap.o -o
_mymodule.so -framework Carbon -framework Cocoa -framework
ApplicationServices -framework AGL -framework OpenGL -framework GLUT -
framework Cocoa /usr/lib/libz.dylib

However, when I load the module in python a whole bunch of system
symbols are undefined starting in this case with aglSwapBuffers

ImportError: dlopen(_mymodule.so, 2): Symbol not found:
_aglSwapBuffers
Referenced from: _mymodule.so Expected in: dynamic lookup

My understanding is that the _mymodule.so file should "know" that this
symbol came out of the AGL framework and thus look for it there. I
could understand if python wouldn't find the framework because of a
DYLD_LIBRARY_PATH issue or the like but here the problem seems to be
that the information from where the symbol came from is lost.

If I do a "more" on the _mymodule.so file that seems to be indeed what
happens. I see links to "/usr/lib/libz.dylib" and the system libraries
in there but none to the frameworks. However, now comes the really
interesting part. If I execute the *identical* command line from the
same shell I called "python setup.py install" from I get a different
library which *does* include the links to the frameworks. If I install
that file instead of the original everything works as expected.

So there seems to be a strange problem inside distutils. I looked at
that source code but couldn't make any sense out of it. Any idea of
what could cause this and how this could be fixed would be greatly
appreciated

Thanks
Timo
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,902
Latest member
Elena68X5

Latest Threads

Top