Today, I've again tried to install lxml on OS X. For a project I do for a customer (migrating featurecreep CMS sites to Plone), I use the lxml parser. I get regular segfaults, this time using python 2.4 (I use macport for python 2.4).
I investigated again, and came along this post. The scoop is:
after blood, sweat, and some tears (kidding) this is *all* I needed, it seems:
export CFLAGS="-flat_namespace"
...no static builds libxml2 libs, no buildout recipe. I just set that and ran:
python setup.py bdist_egg
--with-xml2-config=/opt/local/bin/xml2-config
--with-xslt-config=/opt/local/bin/xslt-config
which uses the libxml2 and etc. installed by ports. In fact, as long
as /opt/local/bin is on my path that should work without having to set
paths (i.e. from easy_install). All my tests that were segfaulting
are now passing. This appears to be the exact same behavior I got by
setting DYLD_FORCE_FLAT_NAMESPACE at runtime but without the side
affect of applying itself to anything else running in my shell ;)
so, I'm thinking this is just two lines of code added to cflags() ...
if sys.platform in ('darwin',):
result.append('-flat_namespace')
Well. What can I say. Interesting poinst so far for OS X development:
- no -rpath supported
- no static libraries (Yup! No joke)