Consume new config file with pypy and extra architectures

This commit is contained in:
Joe Rickerby
2020-03-07 13:39:57 +00:00
parent 7e583dcab7
commit 298df76b8b
+19 -46
View File
@@ -168,65 +168,38 @@ def main():
)
if platform == 'linux':
manylinux_x86_64_image = os.environ.get('CIBW_MANYLINUX_X86_64_IMAGE', 'manylinux2010')
manylinux_i686_image = os.environ.get('CIBW_MANYLINUX_I686_IMAGE', 'manylinux2010')
manylinux_pypy_x86_64_image = os.environ.get('CIBW_MANYLINUX_PYPY_X86_64_IMAGE', 'manylinux2010')
manylinux_aarch64_image = os.environ.get('CIBW_MANYLINUX_AARCH64_IMAGE', 'manylinux2014')
manylinux_ppc64le_image = os.environ.get('CIBW_MANYLINUX_PPC64LE_IMAGE', 'manylinux2014')
manylinux_s390x_image = os.environ.get('CIBW_MANYLINUX_S390X_IMAGE', 'manylinux2014')
pinned_docker_images_file = os.path.join(
os.path.dirname(__file__), 'resources', 'pinned_docker_images.cfg'
)
pinned_docker_images = ConfigParser()
pinned_docker_images.read(pinned_docker_images_file)
# pinned_docker_images looks like a dict of dicts, e.g.
# { 'manylinux1': {'x86_64': '...', 'i686': '...'},
# 'manylinux2010': {'x86_64': '...', 'i686': '...'},
# 'manylinux2014': {'x86_64': '...', 'i686': '...'} }
all_pinned_docker_images = ConfigParser()
all_pinned_docker_images.read(pinned_docker_images_file)
# all_pinned_docker_images looks like a dict of dicts, e.g.
# { 'x86_64': {'manylinux1': '...', 'manylinux2010': '...', 'manylinux2014': '...'},
# 'i686': {'manylinux1': '...', 'manylinux2010': '...', 'manylinux2014': '...'},
# 'pypy_x86_64': {'manylinux2010': '...' }
# ... }
manylinux_images = {}
if manylinux_x86_64_image in pinned_docker_images:
manylinux_images['x86_64'] = pinned_docker_images[manylinux_x86_64_image]['x86_64']
else:
manylinux_images['x86_64'] = manylinux_x86_64_image
for build_platform in ['x86_64', 'i686', 'pypy_x86_64', 'aarch64', 'ppc64le', 's390x']:
pinned_images = all_pinned_docker_images[build_platform]
if manylinux_i686_image in pinned_docker_images:
manylinux_images['i686'] = pinned_docker_images[manylinux_i686_image]['i686']
else:
manylinux_images['i686'] = manylinux_i686_image
config_name = 'CIBW_MANYLINUX_{}_IMAGE'.format(build_platform.upper())
config_value = os.environ.get(config_name)
if manylinux_pypy_x86_64_image in pinned_docker_images:
manylinux_images['pypy_x86_64'] = pinned_docker_images[manylinux_pypy_x86_64_image]['pypy_x86_64']
else:
manylinux_images['pypy_x86_64'] = manylinux_pypy_x86_64_image
if config_value is None:
# default to manylinux2010 if it's available, otherwise manylinux2014
image = pinned_images.get('manylinux2010') or pinned_images.get('manylinux2014')
elif config_value in pinned_images:
image = pinned_images[config_value]
else:
image = config_value
if manylinux_aarch64_image in pinned_docker_images:
manylinux_images['aarch64'] = pinned_docker_images[manylinux_aarch64_image]['aarch64']
else:
manylinux_images['aarch64'] = manylinux_aarch64_image
if manylinux_ppc64le_image in pinned_docker_images:
manylinux_images['ppc64le'] = pinned_docker_images[manylinux_ppc64le_image]['ppc64le']
else:
manylinux_images['ppc64le'] = manylinux_ppc64le_image
if manylinux_s390x_image in pinned_docker_images:
manylinux_images['x390x'] = pinned_docker_images[manylinux_s390x_image]['x390x']
else:
manylinux_images['x390x'] = manylinux_s390x_image
manylinux_images['pypy_x86_64'] = ''
manylinux_images[build_platform] = image
build_options.update(
manylinux_images=manylinux_images
)
elif platform == 'macos':
pass
elif platform == 'windows':
pass
# Python is buffering by default when running on the CI platforms, giving problems interleaving subprocess call output with unflushed calls to 'print'
sys.stdout = Unbuffered(sys.stdout)