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:
parent
284e5ce67e
commit
362532bc48
|
@ -982,22 +982,62 @@ def buildPython():
|
||||||
# the end-users system. Also remove the directories from _sysconfigdata.py
|
# the end-users system. Also remove the directories from _sysconfigdata.py
|
||||||
# (added in 3.3) if it exists.
|
# (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',
|
path_to_lib = os.path.join(rootDir, 'Library', 'Frameworks',
|
||||||
'Python.framework', 'Versions',
|
'Python.framework', 'Versions',
|
||||||
version, 'lib', 'python%s'%(version,))
|
version, 'lib', 'python%s'%(version,))
|
||||||
paths = [os.path.join(path_to_lib, 'config' + config_suffix, 'Makefile'),
|
|
||||||
os.path.join(path_to_lib, '_sysconfigdata.py')]
|
# fix Makefile
|
||||||
for path in paths:
|
path = os.path.join(path_to_lib, 'config' + config_suffix, 'Makefile')
|
||||||
if not os.path.exists(path):
|
fp = open(path, 'r')
|
||||||
continue
|
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')
|
fp = open(path, 'r')
|
||||||
data = fp.read()
|
data = fp.read()
|
||||||
fp.close()
|
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 = 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()
|
fp.close()
|
||||||
|
|
||||||
# Add symlinks in /usr/local/bin, using relative links
|
# Add symlinks in /usr/local/bin, using relative links
|
||||||
|
|
Loading…
Reference in New Issue