[Pythonmac-SIG] How to get setuptools to build a Universal Binary?

Christopher Barker Chris.Barker at noaa.gov
Wed Jan 7 22:20:06 CET 2009


Joe Strout wrote:
>> I just downloaded the mysqldb module from sourceforge to have a look 
>> at how it decides how to compile its C extension. It looks like it's 
>> getting the CFLAGS and LFLAGS from mysql_config. You'll need a 
>> universal binary of libmysqlclient (as Chris already pointed out).

ouch, this does complicate things a bit -- as I have no idea how to get 
a "universal" mysql_config -- it may be telling distutils to build the 
extension with only one architecture.

> OK, but to be clear, libmysqlclient isn't something from somewhere else 
> that mysqldb uses -- it's the C extension of mysqldb itself, right? 
> Something built when I do "python setup.py install" in the mysqldb 
> source directory?

nope -- see my other note.

the extensions that distutils builds will be called something like 
_mysql. It will be in site_packages, and in your app bundle, along with 
.py and .pyc files, NOT in with FrameWorks.


>> At any rate, you'll want to try to see what CFLAGS/LFLAGS were used to 
>> compile libmysqlclient. You might try to run the following command in 
>> terminal:
>>
>> $ mysql_config --cflags

here's mine:
$ /usr/local/mysql/bin/mysql_config --cflags
-I/usr/local/mysql/include  -g -Os -arch ppc -fno-common 
-D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ 
-DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL

Darn -- there is an "-arch ppc" in there. However, it may be that 
distutils still add the "arch i386" who knows?

if you get it to build, you can then look at what it builds, and see if 
that's Universal or not:

$ file name_of_lib

You can find what it builds in the "build" directory that distutils 
creates when you run "setup.py build". It will be in something like:

build/lib.macosx-10.3-ppc-2.5

and I think will be called -mysql.so

but I don't actually have it building here.

I suppose I should try -- now that I've gone this far!

-Chris



-- 
Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

Chris.Barker at noaa.gov


More information about the Pythonmac-SIG mailing list