| name: Reusable macOS |
| |
| on: |
| workflow_call: |
| inputs: |
| config_hash: |
| required: true |
| type: string |
| free-threading: |
| required: false |
| type: boolean |
| default: false |
| os: |
| description: OS to run the job |
| required: true |
| type: string |
| |
| jobs: |
| build_macos: |
| name: build and test (${{ inputs.os }}) |
| timeout-minutes: 60 |
| env: |
| HOMEBREW_NO_ANALYTICS: 1 |
| HOMEBREW_NO_AUTO_UPDATE: 1 |
| HOMEBREW_NO_INSTALL_CLEANUP: 1 |
| HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 |
| PYTHONSTRICTEXTENSIONBUILD: 1 |
| TERM: linux |
| runs-on: ${{ inputs.os }} |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Runner image version |
| run: echo "IMAGE_VERSION=${ImageVersion}" >> $GITHUB_ENV |
| - name: Restore config.cache |
| uses: actions/cache@v4 |
| with: |
| path: config.cache |
| key: ${{ github.job }}-${{ inputs.os }}-${{ env.IMAGE_VERSION }}-${{ inputs.config_hash }} |
| - name: Install Homebrew dependencies |
| run: | |
| brew install pkg-config [email protected] xz gdbm tcl-tk@8 |
| # Because alternate versions are not symlinked into place by default: |
| brew link tcl-tk@8 |
| - name: Configure CPython |
| run: | |
| GDBM_CFLAGS="-I$(brew --prefix gdbm)/include" \ |
| GDBM_LIBS="-L$(brew --prefix gdbm)/lib -lgdbm" \ |
| ./configure \ |
| --config-cache \ |
| --with-pydebug \ |
| ${{ inputs.free-threading && '--disable-gil' || '' }} \ |
| --prefix=/opt/python-dev \ |
| --with-openssl="$(brew --prefix [email protected])" |
| - name: Build CPython |
| run: make -j8 |
| - name: Display build info |
| run: make pythoninfo |
| - name: Tests |
| run: make test |