[Pythonmac-SIG] how to recover from a framework build?
Bill Janssen
janssen at parc.com
Fri Jul 31 04:08:20 CEST 2009
Ned Deily <nad at acm.org> wrote:
> Sorry, I don't use Xcode for Python development but I'm having a hard
> time imagining what sequence of events would have caused the SDK to be
> overwritten. I'm assuming you mean:
>
> /Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/Python.framework
>
> Did you try to build Python within Xcode or something?
Nope. I unpacked the sources to /tmp, then did a "make
frameworkinstall", I believe it was. I expected things to wind up in
/Library/Frameworks/Python.Framework, which they did. I was surprised
to see that the library under /Developer had the same timestamps.
> >> Secondly, when I then ran my Python-Cocoa app, it picked up the
> >> framework
> >> in /Library/Frameworks/Python..., which didn't have objc, so it
> >> bombed
> >> on that. I just deleted /Library/Frameworks/Python.... That
> >> seemed to
> >> fix that.
> > Can anyone explain to me why this happened? Is this a side-effect of
> > overwriting the /Developer version of the library?
>
> The normal install path for a frameworks build is /Library/Frameworks/
> Python.frameworks/Version/... . And it appears that
> /Developer/SDKs/MacOSX10.5.sdk/Library/Frameworks is a symlink to
> /Library/Frameworks.
Hmmm. OK, that makes it clearer what happened. Here's the link line that
Xcode uses (I presume this comes from the Python-Cocoa project
template):
Ld /p/goodstuff/build/cocoa-gadget.build/Release/goodStuff.build/Objects-normal/ppc/goodStuff normal ppc
cd /p/goodstuff
setenv MACOSX_DEPLOYMENT_TARGET 10.5
/Developer/usr/bin/gcc-4.0 -arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk -L/p/goodstuff/build/Release -F/p/goodstuff/build/Release -filelist /p/goodstuff/build/cocoa-gadget.build/Release/goodStuff.build/Objects-normal/ppc/goodStuff.LinkFileList -mmacosx-version-min=10.5 -framework Cocoa -framework Python -framework WebKit -o /p/goodstuff/build/cocoa-gadget.build/Release/goodStuff.build/Objects-normal/ppc/goodStuff
ld warning: in /Developer/SDKs/MacOSX10.5.sdk/Library/Frameworks//Python.framework/Python, file is not of required architecture
Undefined symbols:
"_Py_SetProgramName", referenced from:
_main in main.o
"_Py_Initialize", referenced from:
_main in main.o
"_PySys_SetArgv", referenced from:
_main in main.o
"_PyRun_SimpleFileExFlags", referenced from:
_main in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Apparently gcc resolved "-framework Python" to
"/Developer/SDKs/MacOSX10.5.sdk/Library/Frameworks/Python.framework", my
new build. But why did it use that in preference to
"/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/Python.framework",
which also exists? Ah, the "ld" page says that "The default framework
search path is /Library/Frameworks then /System/Library/Frameworks."
I probably want to add "-Z -F/System/Library/Frameworks" to the default
template.
Bill
More information about the Pythonmac-SIG
mailing list