From 7bd6c49f8a58d02ae5a9567d4303f9a8d17b513e Mon Sep 17 00:00:00 2001 From: ddelange <14880945+ddelange@users.noreply.github.com> Date: Tue, 27 Sep 2022 21:57:03 +0200 Subject: [PATCH] Add arm64 mac and linux wheels (#954) --- .github/workflows/install-postgres.sh | 9 +++-- .github/workflows/release.yml | 52 +++++++++++++++++++-------- tests/test_introspection.py | 2 +- 3 files changed, 45 insertions(+), 18 deletions(-) diff --git a/.github/workflows/install-postgres.sh b/.github/workflows/install-postgres.sh index c3f27186..4ffbb4d6 100755 --- a/.github/workflows/install-postgres.sh +++ b/.github/workflows/install-postgres.sh @@ -27,11 +27,16 @@ if [ "${ID}" = "debian" -o "${ID}" = "ubuntu" ]; then apt-get install -y --no-install-recommends \ "postgresql-${PGVERSION}" \ "postgresql-contrib-${PGVERSION}" +elif [ "${ID}" = "almalinux" ]; then + yum install -y \ + "postgresql-server" \ + "postgresql-devel" \ + "postgresql-contrib" elif [ "${ID}" = "centos" ]; then - el="EL-${VERSION_ID}-$(arch)" + el="EL-${VERSION_ID%.*}-$(arch)" baseurl="https://download.postgresql.org/pub/repos/yum/reporpms" yum install -y "${baseurl}/${el}/pgdg-redhat-repo-latest.noarch.rpm" - if [ ${VERSION_ID} -ge 8 ]; then + if [ ${VERSION_ID%.*} -ge 8 ]; then dnf -qy module disable postgresql fi yum install -y \ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e984a351..01b97a84 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -56,7 +56,7 @@ jobs: submodules: true - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 - name: Build source distribution run: | @@ -68,19 +68,35 @@ jobs: name: dist path: dist/*.tar.* - build-wheels: + build-wheels-matrix: needs: validate-release-request + runs-on: ubuntu-latest + outputs: + include: ${{ steps.set-matrix.outputs.include }} + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v4 + - run: pip install cibuildwheel==2.10.2 + - id: set-matrix + run: | + MATRIX_INCLUDE=$( + { + cibuildwheel --print-build-identifiers --platform linux --arch x86_64,aarch64 | grep cp | jq -Rc '{"only": inputs, "os": "ubuntu-latest"}' \ + && cibuildwheel --print-build-identifiers --platform macos --arch x86_64,arm64 | grep cp | jq -Rc '{"only": inputs, "os": "macos-latest"}' \ + && cibuildwheel --print-build-identifiers --platform windows --arch x86,AMD64 | grep cp | jq -Rc '{"only": inputs, "os": "windows-latest"}' + } | jq -sc + ) + echo ::set-output name=include::"$MATRIX_INCLUDE" + + build-wheels: + needs: build-wheels-matrix runs-on: ${{ matrix.os }} + continue-on-error: true + name: Build ${{ matrix.only }} + strategy: matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - cibw_python: ["cp36-*", "cp37-*", "cp38-*", "cp39-*", "cp310-*"] - cibw_arch: ["auto64", "auto32"] - exclude: - - os: macos-latest - cibw_arch: "auto32" - - os: ubuntu-latest - cibw_arch: "auto32" + include: ${{ fromJson(needs.build-wheels-matrix.outputs.include) }} defaults: run: @@ -94,12 +110,18 @@ jobs: with: fetch-depth: 50 submodules: true + + - name: Set up QEMU + if: runner.os == 'Linux' + uses: docker/setup-qemu-action@v2 - - uses: pypa/cibuildwheel@v2.8.0 + - uses: pypa/cibuildwheel@v2.10.2 + with: + only: ${{ matrix.only }} env: CIBW_BUILD_VERBOSITY: 1 - CIBW_BUILD: ${{ matrix.cibw_python }} - CIBW_ARCHS: ${{ matrix.cibw_arch }} + CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 + CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28 - uses: actions/upload-artifact@v2 with: @@ -107,7 +129,7 @@ jobs: path: wheelhouse/*.whl publish-docs: - needs: validate-release-request + needs: [build-sdist, build-wheels] runs-on: ubuntu-latest env: @@ -121,7 +143,7 @@ jobs: submodules: true - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.8 diff --git a/tests/test_introspection.py b/tests/test_introspection.py index 56f1d7a3..78561dd0 100644 --- a/tests/test_introspection.py +++ b/tests/test_introspection.py @@ -12,7 +12,7 @@ from asyncpg import connection as apg_con -MAX_RUNTIME = 0.1 +MAX_RUNTIME = 0.25 class SlowIntrospectionConnection(apg_con.Connection):