If you need to build ZooKeeper Python bindings in 32-bit mode on 64-bit Mac OS X, it can be hard to do since ZooKeeper building scripts ignore the usual “-arch” flags for the compiler. But there is a simple workaround for this. And here it is.
Why?
If you have Mac OS X and you need Oracle InstantClient for your work as I do, you are in trouble: the 64-bit InstantClient crashes with “segfault” error code 11 on 64-bit Mac OS X. The only solution is to use 32-bit InstantClient, which does work.
But this workaround entails to every single bit of software, that uses InstantClient, should be 32-bit too. For example, if you code Python as I do, you need cx_Oracle to be 32-bit to work with 32-bit InstantClient (64-bit cx_Oracle binary part cannot work with 32-bit InstantClient libraries, obviously). And if you have 32-bit cx_Oracle, you ought to have 32-bit Python to load that 32-bit cx_Oracle. And if you have 32-bit Python, you ought to make all other binary libraries to be 32-bit. Thank you, Oracle, for this fun!
And if you use ZooKeeper together with InstantClient as I do, you have to build 32-bit ZooKeeper binaries and libraries. Well, lets work up to it from the beginning.
[Read more…]