[PyQt] Python modules shouldn't link directly to Python framework
on OS X
woklist at kyngchaos.com
Fri Nov 21 18:52:02 GMT 2008
On Nov 21, 2008, at 11:03 AM, Phil Thompson wrote:
>> This will take care of not-linking the python framework - in
>> siputils.py, ModuleMakefile().finalise(), change:
>> self.LFLAGS.append("-F%s" % string.join(dl, os.sep))
>> self.LFLAGS.append("-framework Python")
>> self.LFLAGS.append("-undefined dynamic_lookup")
> Thanks - it will be in SIP v4.8.
When I saw your reply, I suddenly remembered an old ld manpage that
mentioned that dynamic_lookup isn't supported on older OSX versions -
10.2 or earlier.
The default "compatibility" mode on 10.4 and earlier is 10.1, and on
10.5 is 10.5, and thus dynamic_lookup won't work by default on 10.3 or
10.4. You can set this with C flag -macosx_version_min, or macro flag
MACOSX_DEPLOYMENT_TARGET. (I always build for a specific version using
MACOSX_DEPLOYMENT_TARGET, such as 10.4 or 10.5, so I don't run into
Note that the current python 2.5 and 2.6 binaries for OSX are 10.3
minimum. The system python in OSX 10.4 and 10.3 is v2.3 (the minimum
for SIP). Earlier OSX versions have pre-2.3 pythons (I think). So
supporting OSX before 10.3 is difficult if not impossible.
Also, if (and only if) macosx_version_min or MACOSX_DEPLOYMENT_TARGET
are not set by the user, SIP should add a min version 10.3 to
compilation flags. That could be tricky, since
MACOSX_DEPLOYMENT_TARGET is read while running make, while SIP creates
the makefiles. Maybe SIP documentation just needs a note for OSX
users to set MACOSX_DEPLOYMENT_TARGET to a minimum of 10.3. ie:
python configure.py ...
My brain not up to the task of working out anything more complex such
as testing for MACOSX_DEPLOYMENT_TARGET or -macosx_version_min in
makefiles or during configuration. The key is that SIP should respect
what the user sets (if it's at least 10.3), before defaulting to 10.3.
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
"I ache, therefore I am. Or in my case - I am, therefore I ache."
More information about the PyQt