Fix OS X installer build script to handle the pretty-printed _sysconfigdata.py

when removing references to temporary build files.  This is not an elegant
solution but it does isolate changes to just build-installer.py.
This commit is contained in:
Ned Deily 2013-08-01 15:39:47 -07:00
parent 284e5ce67e
commit 362532bc48
1 changed files with 48 additions and 8 deletions

View File

@ -982,22 +982,62 @@ def buildPython():
# the end-users system. Also remove the directories from _sysconfigdata.py
# (added in 3.3) if it exists.
include_path = '-I%s/libraries/usr/local/include' % (WORKDIR,)
lib_path = '-L%s/libraries/usr/local/lib' % (WORKDIR,)
path_to_lib = os.path.join(rootDir, 'Library', 'Frameworks',
'Python.framework', 'Versions',
version, 'lib', 'python%s'%(version,))
paths = [os.path.join(path_to_lib, 'config' + config_suffix, 'Makefile'),
os.path.join(path_to_lib, '_sysconfigdata.py')]
for path in paths:
if not os.path.exists(path):
continue
# fix Makefile
path = os.path.join(path_to_lib, 'config' + config_suffix, 'Makefile')
fp = open(path, 'r')
data = fp.read()
fp.close()
for p in (include_path, lib_path):
data = data.replace(" " + p, '')
data = data.replace(p + " ", '')
fp = open(path, 'w')
fp.write(data)
fp.close()
# fix _sysconfigdata if it exists
#
# TODO: make this more robust! test_sysconfig_module of
# distutils.tests.test_sysconfig.SysconfigTestCase tests that
# the output from get_config_var in both sysconfig and
# distutils.sysconfig is exactly the same for both CFLAGS and
# LDFLAGS. The fixing up is now complicated by the pretty
# printing in _sysconfigdata.py. Also, we are using the
# pprint from the Python running the installer build which
# may not cosmetically format the same as the pprint in the Python
# being built (and which is used to originally generate
# _sysconfigdata.py).
import pprint
path = os.path.join(path_to_lib, '_sysconfigdata.py')
if os.path.exists(path):
fp = open(path, 'r')
data = fp.read()
fp.close()
# create build_time_vars dict
exec(data)
vars = {}
for k, v in build_time_vars.items():
if type(v) == type(''):
for p in (include_path, lib_path):
v = v.replace(' ' + p, '')
v = v.replace(p + ' ', '')
vars[k] = v
data = data.replace(' -L%s/libraries/usr/local/lib'%(WORKDIR,), '')
data = data.replace(' -I%s/libraries/usr/local/include'%(WORKDIR,), '')
fp = open(path, 'w')
fp.write(data)
# duplicated from sysconfig._generate_posix_vars()
fp.write('# system configuration generated and used by'
' the sysconfig module\n')
fp.write('build_time_vars = ')
pprint.pprint(vars, stream=fp)
fp.close()
# Add symlinks in /usr/local/bin, using relative links