forked from python/cpython
-
Notifications
You must be signed in to change notification settings - Fork 26
150 lines (150 loc) · 6.96 KB
/
jit.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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
name: JIT
on: push
jobs:
jit:
name: ${{ matrix.target }} (${{ matrix.debug && 'Debug' || 'Release' }})
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
target:
- i686-pc-windows-msvc/msvc
- x86_64-pc-windows-msvc/msvc
- x86_64-apple-darwin/clang
- x86_64-unknown-linux-gnu/gcc
# - aarch64-apple-darwin/clang
- aarch64-unknown-linux-gnu/gcc
- aarch64-unknown-linux-gnu/clang
# - powerpc64le-unknown-linux-gnu/gcc
- x86_64-unknown-linux-gnu/clang
debug:
- true
- false
llvm:
- 16
include:
- target: i686-pc-windows-msvc/msvc
architecture: Win32
runner: windows-latest
compiler: msvc
- target: x86_64-pc-windows-msvc/msvc
architecture: x64
runner: windows-latest
compiler: msvc
- target: x86_64-apple-darwin/clang
architecture: x86_64
runner: macos-latest
compiler: clang
exclude: test_embed
- target: x86_64-unknown-linux-gnu/gcc
architecture: x86_64
runner: ubuntu-latest
compiler: gcc
# - target: aarch64-apple-darwin/clang
# architecture: aarch64
# runner: macos-latest
# compiler: clang
- target: aarch64-unknown-linux-gnu/gcc
architecture: aarch64
runner: ubuntu-latest
compiler: gcc
exclude: test_asyncio test_cmd_line test_concurrent_futures test_faulthandler test_gdb test_multiprocessing_fork test_multiprocessing_forkserver test_multiprocessing_spawn test_os test_perf_profiler test_posix test_signal test_socket test_subprocess test_venv
- target: aarch64-unknown-linux-gnu/clang
architecture: aarch64
runner: ubuntu-latest
compiler: clang
exclude: test_asyncio test_cmd_line test_concurrent_futures test_faulthandler test_gdb test_multiprocessing_fork test_multiprocessing_forkserver test_multiprocessing_spawn test_os test_perf_profiler test_posix test_signal test_socket test_subprocess test_venv
# - target: powerpc64le-unknown-linux-gnu/gcc
# architecture: ppc64le
# runner: ubuntu-latest
# compiler: gcc
# exclude: test_asyncio test_cmd_line test_concurrent_futures test_faulthandler test_gdb test_multiprocessing_fork test_multiprocessing_forkserver test_multiprocessing_spawn test_os test_perf_profiler test_posix test_signal test_socket test_subprocess test_venv
- target: x86_64-unknown-linux-gnu/clang
architecture: x86_64
runner: ubuntu-latest
compiler: clang
exclude: test_tools
env:
CC: ${{ matrix.compiler }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Emulated Linux
if: runner.os == 'Linux' && matrix.architecture != 'x86_64'
run: |
echo "::group::Install LLVM"
sudo apt purge --auto-remove llvm python3-lldb-14 llvm-14
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }}
echo "::endgroup::"
echo "::group::Configure Python (Build)"
export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
./configure --prefix="$(pwd)/../build"
echo "::endgroup::"
echo "::group::Build Python (Build)"
make install --jobs 2
make clean --jobs 2
echo "::endgroup::"
echo "::group::Configure Python (Host)"
export HOST=${{ matrix.architecture }}-linux-gnu
sudo apt install --yes gcc-$HOST qemu-user
${{ !matrix.debug && matrix.compiler == 'clang' && './configure --enable-optimizations' || '' }}
${{ !matrix.debug && matrix.compiler == 'clang' && 'make profile-run-stamp --jobs 2' || '' }}
export CC="${{ matrix.compiler == 'clang' && 'clang --target=$HOST' || '$HOST-gcc' }}"
export CPP="$CC --preprocess"
export HOSTRUNNER=qemu-${{ matrix.architecture }}
export QEMU_LD_PREFIX="/usr/$HOST"
./configure ${{ matrix.debug && '--with-pydebug' || '--enable-optimizations --with-lto' }} --build=x86_64-linux-gnu --host=$HOST --with-build-python=../build/bin/python3 --with-pkg-config=no ac_cv_buggy_getaddrinfo=no ac_cv_file__dev_ptc=no ac_cv_file__dev_ptmx=yes
echo "::endgroup::"
echo "::group::Build Python (Host)"
make all --jobs 2
echo "::endgroup::"
echo "::group::Test Python"
./python -m test --exclude ${{ matrix.exclude }} --multiprocess 0 --timeout 3600 --verbose2 --verbose3
echo "::endgroup::"
- name: Native Linux
if: runner.os == 'Linux' && matrix.architecture == 'x86_64'
run: |
echo "::group::Install LLVM"
sudo apt purge --auto-remove llvm python3-lldb-14 llvm-14
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }}
echo "::endgroup::"
echo "::group::Configure Python"
export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
./configure ${{ matrix.debug && '--with-pydebug' || '--enable-optimizations --with-lto' }}
echo "::endgroup::"
echo "::group::Build Python"
make all --jobs 2
echo "::endgroup::"
echo "::group::Test Python"
./python -m test --exclude ${{ matrix.exclude }} --multiprocess 0 --timeout 3600 --verbose2 --verbose3
echo "::endgroup::"
- name: macOS
if: runner.os == 'macOS'
run: |
echo "::group::Install LLVM"
brew install llvm@${{ matrix.llvm }}
export SDKROOT="$(xcrun --show-sdk-path)"
echo "::endgroup::"
echo "::group::Configure Python"
./configure ${{ matrix.debug && '--with-pydebug' || '--enable-optimizations --with-lto' }}
echo "::endgroup::"
echo "::group::Build Python"
make all --jobs 3
echo "::endgroup::"
echo "::group::Test Python"
./python.exe -m test --exclude ${{ matrix.exclude }} --multiprocess 0 --timeout 3600 --verbose2 --verbose3
echo "::endgroup::"
- name: Windows
if: runner.os == 'Windows'
run: |
echo "::group::Install LLVM"
choco install llvm --allow-downgrade --version ${{ matrix.llvm }}
echo "::endgroup::"
echo "::group::Build Python"
./PCbuild/build.bat ${{ matrix.debug && '-d' || '--pgo' }} -p ${{ matrix.architecture }}
echo "::endgroup::"
echo "::group::Test Python"
./PCbuild/rt.bat ${{ matrix.debug && '-d' }} -p ${{ matrix.architecture }} -q --exclude ${{ matrix.exclude }} --multiprocess 0 --timeout 3600 --verbose2 --verbose3
echo "::endgroup::"