-
-
Notifications
You must be signed in to change notification settings - Fork 154
99 lines (85 loc) · 3.42 KB
/
build-multiarch.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# Tests pygame on more exotic architectures. This is not something that is
# actively supported, but source code support for this is nice to have. We
# don't do any releases from here.
name: Multiarch
# Run CI only 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-multiarch.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-multiarch.yml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-multiarch
cancel-in-progress: true
jobs:
build-multiarch:
name: ${{ matrix.arch }} [${{ matrix.distro }}]
runs-on: ubuntu-22.04
strategy:
fail-fast: false # if a particular matrix build fails, don't skip the rest
matrix:
# maybe more things could be added in here in the future (if needed)
include:
- { arch: s390x, distro: bullseye }
- { arch: ppc64le, distro: bullseye }
- { arch: armv6, distro: bullseye }
- { arch: armv7, distro: bullseye }
- { arch: riscv64, distro: ubuntu22.04 }
steps:
- uses: actions/[email protected]
- name: Build sources and run tests
uses: uraimo/[email protected]
id: build
with:
arch: ${{ matrix.arch }}
distro: ${{ matrix.distro }}
# Not required, but speeds up builds
githubToken: ${{ github.token }}
# Create an artifacts directory
setup: mkdir -p ~/artifacts
# Mount the artifacts directory as /artifacts in the container
dockerRunArgs: --volume ~/artifacts:/artifacts
# The shell to run commands with in the container
shell: /bin/sh
# Install some dependencies in the container. This speeds up builds if
# you are also using githubToken. Any dependencies installed here will
# be part of the container image that gets cached, so subsequent
# builds don't have to re-install them. The image layer is cached
# publicly in your project's package repository, so it is vital that
# no secrets are present in the container state or logs.
install: |
apt-get update --fix-missing
apt-get upgrade -y
apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libfreetype6-dev libportmidi-dev fontconfig -y
apt-get install python3-setuptools python3-dev python3-pip python3-wheel python3-sphinx -y
# Build a wheel, install it for running unit tests
run: |
export PIP_CONFIG_FILE=buildconfig/pip_config.ini
echo "\nBuilding pygame wheel\n"
python3 setup.py docs
pip3 wheel . --wheel-dir /artifacts -vvv
echo "\nInstalling wheel\n"
pip3 install --no-index --pre --find-links /artifacts pygame-ce
echo "\nRunning tests\n"
export SDL_VIDEODRIVER=dummy
export SDL_AUDIODRIVER=disk
python3 -m pygame.tests -v --exclude opengl,music,timing --time_out 300