At 3:58 PM -0400 10/1/01, Jens Vagelpohl wrote:
i think i found a working solution. since my knowledge of compilers and linkers isn't the greatest i'll just explain what i did.
trying to compile python2.1.1 on OS X 10.1 failed for me displaying the very same error. searching through apple's discussion i found the following link:
http://fink.sourceforge.net/doc/porting/shared.php
it explains that some linker/compiler default options have changed. in order to get python compiled and running i edited the toplevel Makefile after running ./configure and edited the lines starting with LDSHARED and BLDSHARED, this is what they look like now in my setup:
LDSHARED= $(CC) $(LDFLAGS) -bundle -flat_namespace -undefined suppress BLDSHARED= $(CC) $(LDFLAGS) -bundle -flat_namespace -undefined suppress
notice the "-flat_namespace" switch, this gets rid of the new default "twolevel_namespace" that complains about "undefined warning".
running "make" was now successful and i was able to compile and run Zope 2. 4.1. you will probably have to recompile your python to set that switch under 10.1.
i only did some light testing, no guarantees and before using this in production you might want to read up on those compiler/linker options...
jens
On Sunday, September 30, 2001, at 07:19 , Mitchell L Model wrote:
Trouble compiling Zope 2.4.1 on Mac OS 10.1:
<...> Wonderful! Thanks!! Great information. Having said that, and having spent a couple of hours experimenting, let me try to clarify things a bit: 1. Python 2.2a4 defaults to --with-dylib, so you don't need that when making Python 2.2a4 as you did for 2.1. 2. Likewise, you don't need to set OPT the way the 2.1 README says for Mac OS 10. 3. Similarly, the Python2.2a4 configure.in knows to add -flat_namespace to Makefile.pre and therefore Makefile. 4. Both 2.1 and 2.2a4 correctly specify -undefined suppress. So, whereas I did need to fix the Python 2.1 Makefile to build it, I didn't need to fix the Python 2.2a4 Makefile to build it. (I guess I didn't try building Python 2.1 yesterday, or I would have realized the problem wasn't in Zope, but in Python, as you discovered.) From my experience this evening, I'm surprised that fixing the Python Makefile would allow you to compile Zope. It turns out that the zope configuration process uses the Makefile.pre.in installed in (typically) /usr/local/lib/python2.{1,2}/config. It also turns out that although Python 2.2a4 correctly adds -flat_namespace to Makefile.pre and Makefile, it doesn't add it to Makefile.pre.in! So for both 2.1 and 2.2 I had to add: LDSHARED= $(CC) $(LDFLAGS) -flat_namespace -undefined suppress to Makefile.pre.in, either in the Python src directory before doing 'make install' or in the /usr/local/lib/python2.{1,2}/config after doing the install. I'll report this problem to the Python developers. Thanks for you hints and your careful reading of the fink documentation on shared libraries. (fink is a fabulous resource!) -- --- Mitchell