[Pythonmac-SIG] Re: [Python-Dev] Re: [Python-checkins]
python/dist/src/Mac/OSX fixapplepython23.py, 1.1, 1.2
Bob Ippolito
bob at redivi.com
Wed Dec 29 11:40:30 CET 2004
On Dec 29, 2004, at 5:23 AM, Jack Jansen wrote:
> On 29-dec-04, at 4:35, Bob Ippolito wrote:
>
>> This is the wrong fix. Distutils is dumber than you think. This
>> patch just breaks C++ compilation in a different way. The correct
>> solution is a patch to distutils of some kind.
>>
>> from distutils/unixccompiler.py:174
>>
>> if target_lang == "c++" and self.compiler_cxx:
>> linker[0] = self.compiler_cxx[0]
>> self.spawn(linker + ld_args)
>>
>> "linker" is the variable expanded LDSHARED (or whatever comes out of
>> sysconfig.customize_compiler).
>
> Bah!
>
> Any suggestions as to what to do to get c++ compilation fixed?
I can think of two ways:
1. Patch distutils to actually do
os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' because CCompiler.spawn
doesn't take an environment dict.
2. Patch distutils to skip over environment variables (basically change
that "0" into something smarter). This is probably less desirable
because who knows where this happens, and who knows what third party
compiler subclasses used this original stupid code as a template.
In either case, setting the environment variable should only be done if
it's not already set, and it should raise if is set to anything lower
than 10.3. For example, an existing MACOSX_DEPLOYMENT_TARGET variable
of 10.4 should be allowed. Values smaller than 10.3 should not be
allowed because they are incompatible with the linker feature we're
trying to enable.
> Also, could you point me to a readily available extension package that
> uses c++?
I have no idea, but I remember this issue was brought up at some point
during one of the many discussions of this issue. I think it was also
mentioned that SciPy's distutils extensions (or is it a fork?) does
something similarly stupid when frobbing in a Fortran compiler.
-bob
More information about the Pythonmac-SIG
mailing list