diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index 13fcc881..6c3963ff 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -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)