Merge pull request #2497 from pygame-community/release/2.4.0.dev2 #2171
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: ManyLinux | |
# Run CI only when a release is created, on changes to main branch, or any PR | |
# to main. Do not run CI on any other branch. Also, skip any non-source changes | |
# from running on CI | |
on: | |
push: | |
branches: main | |
paths-ignore: | |
- 'docs/**' | |
- 'examples/**' | |
- '.gitignore' | |
- '*.rst' | |
- '*.md' | |
- '.github/workflows/*.yml' | |
# re-include current file to not be excluded | |
- '!.github/workflows/build-manylinux.yml' | |
pull_request: | |
branches: main | |
paths-ignore: | |
- 'docs/**' | |
- 'examples/**' | |
- '.gitignore' | |
- '*.rst' | |
- '*.md' | |
- '.github/workflows/*.yml' | |
# re-include current file to not be excluded | |
- '!.github/workflows/build-manylinux.yml' | |
# the github release drafter can call this workflow | |
workflow_call: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}-manylinux | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: ${{ matrix.arch }} | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: read | |
packages: write | |
strategy: | |
fail-fast: false # if a particular matrix build fails, don't skip the rest | |
matrix: | |
arch: [x86_64, i686] | |
env: | |
# load pip config from this file. Define this in 'CIBW_ENVIRONMENT' | |
# because this should not affect cibuildwheel machinery | |
# also define environment variables needed for testing | |
CIBW_ENVIRONMENT: PIP_CONFIG_FILE=buildconfig/pip_config.ini PORTMIDI_INC_PORTTIME=1 SDL_VIDEODRIVER=dummy SDL_AUDIODRIVER=disk | |
CIBW_BUILD: "cp3{8,9,10,11,12}-* pp3{8,9,10}-*" | |
CIBW_ARCHS: ${{ matrix.arch }} | |
# skip musllinux for now | |
CIBW_SKIP: '*-musllinux_*' | |
# command that runs before every build | |
CIBW_BEFORE_BUILD: | | |
pip install Sphinx"<7.2.0" | |
python setup.py docs | |
CIBW_TEST_COMMAND: python -m pygame.tests -v --exclude opengl,music,timing --time_out 300 | |
# To 'solve' this issue: | |
# >>> process 338: D-Bus library appears to be incorrectly set up; failed to read | |
# machine uuid: Failed to open "/var/lib/dbus/machine-id": No such file or directory | |
CIBW_BEFORE_TEST: | | |
if [ ! -f /var/lib/dbus/machine-id ]; then | |
dbus-uuidgen > /var/lib/dbus/machine-id | |
fi | |
# Increase pip debugging output | |
CIBW_BUILD_VERBOSITY: 2 | |
steps: | |
- uses: actions/[email protected] | |
- name: Log in to the Container registry | |
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Inspect image, skip build if image exists | |
id: inspect | |
continue-on-error: true | |
run: docker manifest inspect ghcr.io/${{ github.repository }}_${{ matrix.arch }}:${{ hashFiles('buildconfig/manylinux-build/**') }} | |
- name: Extract metadata (tags, labels) for Docker | |
id: meta | |
uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 | |
with: | |
images: ghcr.io/${{ github.repository }}_${{ matrix.arch }} | |
tags: type=raw,value=${{ hashFiles('buildconfig/manylinux-build/**') }} | |
- name: Build and push Docker image | |
if: steps.inspect.outcome == 'failure' | |
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 | |
with: | |
context: ${{ github.workspace }}/buildconfig/manylinux-build/docker_base | |
file: ${{ github.workspace }}/buildconfig/manylinux-build/docker_base/Dockerfile-${{ matrix.arch }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
- name: Build and test wheels | |
env: | |
# set custom pygame images | |
CIBW_MANYLINUX_X86_64_IMAGE: ghcr.io/${{ github.repository }}_x86_64:${{ steps.meta.outputs.version }} | |
CIBW_MANYLINUX_PYPY_X86_64_IMAGE: ghcr.io/${{ github.repository }}_x86_64:${{ steps.meta.outputs.version }} | |
CIBW_MANYLINUX_I686_IMAGE: ghcr.io/${{ github.repository }}_i686:${{ steps.meta.outputs.version }} | |
CIBW_MANYLINUX_PYPY_I686_IMAGE: ghcr.io/${{ github.repository }}_i686:${{ steps.meta.outputs.version }} | |
uses: pypa/[email protected] | |
# We upload the generated files under github actions assets | |
- name: Upload dist | |
uses: actions/upload-artifact@v3 | |
with: | |
name: pygame-wheels-manylinux | |
path: ./wheelhouse/*.whl | |