diff options
author | Jens Vagelpohl <jens@plyp.com> | 2022-11-12 18:23:36 +0100 |
---|---|---|
committer | Jens Vagelpohl <jens@plyp.com> | 2022-11-12 18:23:36 +0100 |
commit | 66722ad99996e2dc3bcab8ee343847316eea86ea (patch) | |
tree | 88b72a49261bb7999325f536b5aa2be4ca6003fd /.github/workflows | |
parent | 2d0223b8b929c4d6e4b47a1dcb7277f1d8355dd1 (diff) | |
download | zope-proxy-66722ad99996e2dc3bcab8ee343847316eea86ea.tar.gz |
- Add support for building arm64 wheels on macOS
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/tests.yml | 107 |
1 files changed, 81 insertions, 26 deletions
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 62f6596..c908bac 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -117,9 +117,9 @@ jobs: steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} ### @@ -134,7 +134,7 @@ jobs: echo "dir=$(pip cache dir)" >>$GITHUB_OUTPUT - name: pip cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip-${{ matrix.python-version }} @@ -154,12 +154,39 @@ jobs: pip install -U pip pip install -U setuptools wheel twine cffi - - name: Build zope.proxy (Python 3.10 on MacOS) + - name: Build zope.proxy (macOS x86_64, Python 3.8+) if: > startsWith(runner.os, 'Mac') - && startsWith(matrix.python-version, '3.10') + && !(startsWith(matrix.python-version, 'pypy') + || matrix.python-version == '2.7' + || matrix.python-version == '3.5' + || matrix.python-version == '3.6' + || matrix.python-version == '3.7') env: - _PYTHON_HOST_PLATFORM: macosx-11-x86_64 + MACOSX_DEPLOYMENT_TARGET: 10.9 + _PYTHON_HOST_PLATFORM: macosx-10.9-x86_64 + ARCHFLAGS: -arch x86_64 + run: | + # Next, build the wheel *in place*. This helps ccache, and also lets us cache the configure + # output (pip install uses a random temporary directory, making this difficult). + python setup.py build_ext -i + python setup.py bdist_wheel + # Also install it, so that we get dependencies in the (pip) cache. + pip install -U 'faulthandler; python_version == "2.7" and platform_python_implementation == "CPython"' + pip install .[test] + + - name: Build zope.proxy (macOS arm64, Python 3.8+) + if: > + startsWith(runner.os, 'Mac') + && !(startsWith(matrix.python-version, 'pypy') + || matrix.python-version == '2.7' + || matrix.python-version == '3.5' + || matrix.python-version == '3.6' + || matrix.python-version == '3.7') + env: + MACOSX_DEPLOYMENT_TARGET: 11.0 + _PYTHON_HOST_PLATFORM: macosx-11.0-arm64 + ARCHFLAGS: -arch arm64 run: | # Next, build the wheel *in place*. This helps ccache, and also lets us cache the configure # output (pip install uses a random temporary directory, making this difficult). @@ -172,7 +199,11 @@ jobs: - name: Build zope.proxy (all other versions) if: > !startsWith(runner.os, 'Mac') - || !startsWith(matrix.python-version, '3.10') + || startsWith(matrix.python-version, 'pypy') + || matrix.python-version == '2.7' + || matrix.python-version == '3.5' + || matrix.python-version == '3.6' + || matrix.python-version == '3.7' run: | # Next, build the wheel *in place*. This helps ccache, and also lets us cache the configure # output (pip install uses a random temporary directory, making this difficult). @@ -186,8 +217,32 @@ jobs: run: | ls -l dist twine check dist/* - - name: Upload zope.proxy wheel - uses: actions/upload-artifact@v2 + - name: Upload zope.proxy wheel (macOS x86_64) + if: > + startsWith(runner.os, 'Mac') + uses: actions/upload-artifact@v3 + with: + name: zope.proxy-${{ runner.os }}-${{ matrix.python-version }}.whl + path: dist/*x86_64.whl + - name: Upload zope.proxy wheel (macOS arm64) + if: > + startsWith(runner.os, 'Mac') + && !(startsWith(matrix.python-version, 'pypy') + || matrix.python-version == '2.7' + || matrix.python-version == '3.5' + || matrix.python-version == '3.6' + || matrix.python-version == '3.7') + uses: actions/upload-artifact@v3 + with: + # The arm64 wheel is uploaded with a different name just so it can be + # manually downloaded when desired. The wheel itself *cannot* be tested + # on the GHA runner, which uses x86_64 architecture. + name: zope.proxy-${{ runner.os }}-${{ matrix.python-version }}-arm64.whl + path: dist/*arm64.whl + - name: Upload zope.proxy wheel (all other platforms) + if: > + !startsWith(runner.os, 'Mac') + uses: actions/upload-artifact@v3 with: name: zope.proxy-${{ runner.os }}-${{ matrix.python-version }}.whl path: dist/*whl @@ -233,9 +288,9 @@ jobs: steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} ### @@ -250,7 +305,7 @@ jobs: echo "dir=$(pip cache dir)" >>$GITHUB_OUTPUT - name: pip cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip-${{ matrix.python-version }} @@ -258,7 +313,7 @@ jobs: ${{ runner.os }}-pip- - name: Download zope.proxy wheel - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: zope.proxy-${{ runner.os }}-${{ matrix.python-version }}.whl path: dist/ @@ -310,9 +365,9 @@ jobs: steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} ### @@ -327,7 +382,7 @@ jobs: echo "dir=$(pip cache dir)" >>$GITHUB_OUTPUT - name: pip cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip-${{ matrix.python-version }} @@ -335,7 +390,7 @@ jobs: ${{ runner.os }}-pip- - name: Download zope.proxy wheel - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: zope.proxy-${{ runner.os }}-${{ matrix.python-version }}.whl path: dist/ @@ -361,9 +416,9 @@ jobs: steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} ### @@ -378,7 +433,7 @@ jobs: echo "dir=$(pip cache dir)" >>$GITHUB_OUTPUT - name: pip cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip-${{ matrix.python-version }} @@ -386,7 +441,7 @@ jobs: ${{ runner.os }}-pip- - name: Download zope.proxy wheel - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: zope.proxy-${{ runner.os }}-${{ matrix.python-version }}.whl path: dist/ @@ -414,9 +469,9 @@ jobs: steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} ### @@ -431,7 +486,7 @@ jobs: echo "dir=$(pip cache dir)" >>$GITHUB_OUTPUT - name: pip cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip_manylinux-${{ matrix.image }}-${{ matrix.python-version }} @@ -468,14 +523,14 @@ jobs: bash .manylinux.sh - name: Upload zope.proxy wheels - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: path: wheelhouse/*whl name: manylinux_${{ matrix.image }}_wheels.zip - name: Restore pip cache permissions run: sudo chown -R $(whoami) ${{ steps.pip-cache.outputs.dir }} - name: Publish package to PyPI - uses: pypa/gh-action-pypi-publish@v1.4.1 + uses: pypa/gh-action-pypi-publish@release/v1 if: > github.event_name == 'push' && startsWith(github.ref, 'refs/tags') |