Skip to content

CPython 3.12 Support #1459

CPython 3.12 Support

CPython 3.12 Support #1459

Workflow file for this run

on:
push:
pull_request:
schedule:
- cron: '13 11 * * *'
jobs:
pythonbuild:
runs-on: 'macos-11'
steps:
- uses: actions/checkout@v3
- name: Install Rust
uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
- name: Emit rustc version
run: |
rustc --version > .rustc-version
- uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-pythonbuild-${{ hashFiles('Cargo.lock', '.rustc-version') }}
- name: Build
run: |
cargo build --release
- name: Upload pythonbuild Executable
uses: actions/upload-artifact@v3
with:
name: pythonbuild
path: target/release/pythonbuild
build:
strategy:
fail-fast: false
matrix:
build:
# macOS on Apple hardware. Can't do PGO because GitHub Apple hardware
# is Intel.
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.8'
optimizations: 'debug'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.8'
optimizations: 'noopt'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.8'
optimizations: 'lto'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.9'
optimizations: 'debug'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.9'
optimizations: 'noopt'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.9'
optimizations: 'lto'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.10'
optimizations: 'debug'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.10'
optimizations: 'noopt'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.10'
optimizations: 'lto'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.11'
optimizations: 'debug'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.11'
optimizations: 'noopt'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.11'
optimizations: 'lto'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.12'
optimizations: 'debug'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.12'
optimizations: 'noopt'
- target_triple: 'aarch64-apple-darwin'
py: 'cpython-3.12'
optimizations: 'lto'
# macOS on Intel hardware. This is pretty straightforward. We exclude
# noopt because it doesn't provide any compelling advantages over PGO
# or LTO builds.
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.8'
optimizations: 'debug'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.8'
optimizations: 'lto'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.8'
optimizations: 'pgo'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.8'
optimizations: 'pgo+lto'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.9'
optimizations: 'debug'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.9'
optimizations: 'lto'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.9'
optimizations: 'pgo'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.9'
optimizations: 'pgo+lto'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.10'
optimizations: 'debug'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.10'
optimizations: 'lto'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.10'
optimizations: 'pgo'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.10'
optimizations: 'pgo+lto'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.11'
optimizations: 'debug'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.11'
optimizations: 'lto'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.11'
optimizations: 'pgo'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.11'
optimizations: 'pgo+lto'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.12'
optimizations: 'debug'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.12'
optimizations: 'lto'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.12'
optimizations: 'pgo'
- target_triple: 'x86_64-apple-darwin'
py: 'cpython-3.12'
optimizations: 'pgo+lto'
needs:
- pythonbuild
runs-on: 'macos-11'
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Download pythonbuild
uses: actions/download-artifact@v3
with:
name: pythonbuild
path: build
- name: Build
run: |
export APPLE_HOST_SDK_PATH=/Applications/Xcode_12.5.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk
if [ "${{ matrix.build.target_triple }}" = "aarch64-apple-darwin" ]; then
export APPLE_SDK_PATH=/Applications/Xcode_12.5.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk
elif [ "${{ matrix.build.target_triple }}" = "aarch64-apple-ios" ]; then
export APPLE_SDK_PATH=/Applications/Xcode_12.5.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.5.sdk
elif [ "${{ matrix.build.target_triple }}" = "x86_64-apple-darwin" ]; then
export APPLE_SDK_PATH=/Applications/Xcode_12.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk
elif [ "${{ matrix.build.target_triple }}" = "x86_64-apple-ios" ]; then
export APPLE_SDK_PATH=/Applications/Xcode_12.4.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk
else
echo "unhandled target triple: ${{ matrix.build.target_triple }}"
exit 1
fi
./build-macos.py --target-triple ${{ matrix.build.target_triple }} --python ${{ matrix.build.py }} --optimizations ${{ matrix.build.optimizations }}
- uses: actions/checkout@v3
with:
repository: 'phracker/MacOSX-SDKs'
ref: master
path: macosx-sdks
- name: Validate Distribution
run: |
chmod +x build/pythonbuild
if [ "${{matrix.build.target_triple }}" = "x86_64-apple-darwin" ]; then
EXTRA_ARGS="--run"
fi
build/pythonbuild validate-distribution --macos-sdks-path macosx-sdks ${EXTRA_ARGS} dist/*.tar.zst
- name: Upload Distributions
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.build.py }}-${{ matrix.build.target_triple }}
path: dist/*