MacOS Python build #2174
This file contains hidden or 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: MacOS Python build | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| schedule: | |
| - cron: '13 11 * * *' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.pull_request.number || github.sha }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| pythonbuild: | |
| runs-on: 'macos-13' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Emit rustc version | |
| run: | | |
| rustc --version > .rustc-version | |
| - uses: actions/cache@v4 | |
| 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@v4 | |
| with: | |
| name: pythonbuild | |
| path: target/release/pythonbuild | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build: | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.9' | |
| options: 'debug' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.9' | |
| options: 'pgo' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.9' | |
| options: 'pgo+lto' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.10' | |
| options: 'debug' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.10' | |
| options: 'pgo' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.10' | |
| options: 'pgo+lto' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.11' | |
| options: 'debug' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.11' | |
| options: 'pgo' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.11' | |
| options: 'pgo+lto' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.12' | |
| options: 'debug' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.12' | |
| options: 'pgo' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.12' | |
| options: 'pgo+lto' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.13' | |
| options: 'debug' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.13' | |
| options: 'pgo' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.13' | |
| options: 'pgo+lto' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.13' | |
| options: 'freethreaded+debug' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.13' | |
| options: 'freethreaded+pgo' | |
| - target_triple: 'aarch64-apple-darwin' | |
| runner: macos-14 | |
| py: 'cpython-3.13' | |
| options: 'freethreaded+pgo+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' | |
| runner: macos-13 | |
| py: 'cpython-3.9' | |
| options: 'debug' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.9' | |
| options: 'pgo' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.9' | |
| options: 'pgo+lto' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.10' | |
| options: 'debug' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.10' | |
| options: 'pgo' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.10' | |
| options: 'pgo+lto' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.11' | |
| options: 'debug' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.11' | |
| options: 'pgo' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.11' | |
| options: 'pgo+lto' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.12' | |
| options: 'debug' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.12' | |
| options: 'pgo' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.12' | |
| options: 'pgo+lto' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.13' | |
| options: 'debug' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.13' | |
| options: 'pgo' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.13' | |
| options: 'pgo+lto' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.13' | |
| options: 'freethreaded+debug' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.13' | |
| options: 'freethreaded+pgo' | |
| - target_triple: 'x86_64-apple-darwin' | |
| runner: macos-13 | |
| py: 'cpython-3.13' | |
| options: 'freethreaded+pgo+lto' | |
| needs: | |
| - pythonbuild | |
| runs-on: ${{ matrix.build.runner }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Download pythonbuild | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: pythonbuild | |
| path: build | |
| - name: Build | |
| run: | | |
| if [ "${{ matrix.build.target_triple }}" = "aarch64-apple-darwin" ]; then | |
| export APPLE_SDK_PATH=/Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk | |
| elif [ "${{ matrix.build.target_triple }}" = "x86_64-apple-darwin" ]; then | |
| export APPLE_SDK_PATH=/Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.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 }} --options ${{ matrix.build.options }} | |
| - name: Upload Distributions | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.build.py }}-${{ matrix.build.target_triple }}-${{ matrix.build.options }} | |
| path: dist/* | |
| - uses: actions/checkout@v4 | |
| with: | |
| repository: 'phracker/MacOSX-SDKs' | |
| ref: master | |
| path: macosx-sdks | |
| - name: Validate Distribution | |
| run: | | |
| chmod +x build/pythonbuild | |
| build/pythonbuild validate-distribution --macos-sdks-path macosx-sdks --run dist/*.tar.zst |