summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Davis <mrd@redhat.com>2021-10-12 16:57:43 -0700
committerMatt Davis <mrd@redhat.com>2021-10-12 16:57:43 -0700
commit2acabda7c00f8bfc98e14c86083eb4f39236aea4 (patch)
tree7c34a27f7c2744695ce2ce56ff3bf6d20e501c21
parent704961d51e426e57c1eeff23b8ba56c9871f72d1 (diff)
downloadcffi-2acabda7c00f8bfc98e14c86083eb4f39236aea4.tar.gz
added GHA release workflow
-rw-r--r--.github/workflows/ci.yaml195
1 files changed, 195 insertions, 0 deletions
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
new file mode 100644
index 0000000..b26dfec
--- /dev/null
+++ b/.github/workflows/ci.yaml
@@ -0,0 +1,195 @@
+on: push
+
+jobs:
+ sdist:
+ runs-on: ubuntu-20.04
+ steps:
+ - name: clone repo
+ uses: actions/checkout@v2
+
+ - name: build sdist
+ run: |
+ rm -rf dist/
+ python -m pip install build
+ python -m build --sdist
+
+ - name: upload sdist artifact
+ uses: actions/upload-artifact@v2
+ with:
+ path: dist
+ if-no-files-found: error
+
+ linux:
+ runs-on: ubuntu-20.04
+ strategy:
+ matrix:
+ include:
+ - spec: cp27-manylinux_x86_64
+ cibw_version: cibuildwheel<2.0 # py2.7 is not supported on CIBW 2.0+
+ manylinux_img: manylinux1 # build really old Pythons on manylinux1
+ - spec: cp36-manylinux_x86_64
+ manylinux_img: manylinux1 # build really old Pythons on manylinux1
+ - spec: cp37-manylinux_x86_64
+ - spec: cp38-manylinux_x86_64
+ - spec: cp39-manylinux_x86_64
+ - spec: cp310-manylinux_x86_64
+ - spec: cp27-manylinux_i686
+ cibw_version: cibuildwheel<2.0 # py2.7 is not supported on CIBW 2.0+
+ manylinux_img: manylinux1 # build really old Pythons on manylinux1
+ - spec: cp36-manylinux_i686
+ manylinux_img: manylinux1 # build really old Pythons on manylinux1
+ - spec: cp37-manylinux_i686
+ - spec: cp38-manylinux_i686
+ - spec: cp39-manylinux_i686
+ - spec: cp310-manylinux_i686
+ steps:
+ - name: clone repo
+ uses: actions/checkout@v2
+
+ - name: build/test wheels
+ env:
+ CIBW_ARCHS_LINUX: auto
+ CIBW_BUILD: ${{ matrix.spec }}
+ CIBW_BEFORE_BUILD: |
+ set -eux && \
+ curl -L -O https://github.com/libffi/libffi/archive/v3.4.2.tar.gz && \
+ tar zxf v3.4.2.tar.gz && cd libffi-3.4.2 && \
+ ./autogen.sh && \
+ ./configure --without-gcc-arch --disable-docs && \
+ make && \
+ make install && \
+ ldconfig
+ # TODO: update default to '' once CIBW 2.1.3 ships: https://github.com/pypa/cibuildwheel/pull/829
+ CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_img || 'manylinux2010' }}
+ CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.manylinux_img || 'manylinux2010' }}
+ CIBW_TEST_REQUIRES: pytest
+ CIBW_TEST_COMMAND: python -m pytest {project}/c {project}/testing
+ run: |
+ python -m pip install --upgrade "${{ matrix.cibw_version || 'cibuildwheel' }}"
+
+ # actually build libyaml + wheel (using env tweaks above)
+ python -m cibuildwheel --output-dir dist .
+
+
+ - name: upload artifacts
+ uses: actions/upload-artifact@v2
+ with:
+ path: dist
+ if-no-files-found: error
+
+
+ macos:
+ defaults:
+ run:
+ shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }}
+ runs-on: ${{ matrix.runs_on || 'macos-10.15' }}
+ strategy:
+ matrix:
+ include:
+ # build for x86_64 under the default hosted macOS 10.x x86_64 runner
+ - spec: cp27-macosx_x86_64
+ cibw_version: cibuildwheel<2.0 # py2.7 is not supported on CIBW 2.0+
+ - spec: cp36-macosx_x86_64
+ - spec: cp37-macosx_x86_64
+ - spec: cp38-macosx_x86_64
+ - spec: cp39-macosx_x86_64
+ - spec: cp310-macosx_x86_64
+ # build for arm64 under a hacked macOS 12 self-hosted x86_64-on-arm64 runner until arm64 is fully supported
+ # FIXME: ? cp38-macosx_arm64 requires special handling and fails some test_zdist tests under cibw 2.1.2, skip it (so Apple's XCode python3 won't have a wheel)
+ - spec: cp39-macosx_arm64
+ deployment_target: '11.0'
+ runs_on: [self-hosted, macOS]
+ run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0}
+ sdkroot: macosx11.3
+
+ - spec: cp310-macosx_arm64
+ deployment_target: '11.0'
+ runs_on: [self-hosted, macOS]
+ run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0}
+ sdkroot: macosx11.3
+ steps:
+ - name: clone repo
+ uses: actions/checkout@v2
+
+ - name: build wheel prereqs
+ run: |
+ /usr/bin/pip3 install --user --upgrade "${{ matrix.cibw_version || 'cibuildwheel' }}"
+ brew uninstall --ignore-dependencies libffi || true
+
+ - name: build/test wheels
+ env:
+ CIBW_BUILD: ${{ matrix.spec }}
+ CIBW_TEST_REQUIRES: pytest
+ CIBW_TEST_COMMAND: pip install pip --upgrade; cd {project}; pytest
+ run: |
+ if [[ -n "${{ matrix.deployment_target || '' }}" ]]
+ then
+ export MACOSX_DEPLOYMENT_TARGET="${{ matrix.deployment_target || '' }}"
+ fi
+
+ if [[ -n "${{ matrix.sdkroot || '' }}" ]]
+ then
+ export SDKROOT="${{ matrix.sdkroot || '' }}"
+ fi
+
+ /usr/bin/python3 -m cibuildwheel --output-dir dist
+
+ - name: upload artifacts
+ uses: actions/upload-artifact@v2
+ with:
+ path: dist
+ if-no-files-found: error
+
+ windows:
+ runs-on: windows-2016
+ strategy:
+ matrix:
+ include:
+ - spec: cp27-win_amd64
+ cibw_version: cibuildwheel==1.10 # last release with proper py2.7 Windows support
+ - spec: cp36-win_amd64
+ - spec: cp37-win_amd64
+ - spec: cp38-win_amd64
+ - spec: cp39-win_amd64
+ - spec: cp310-win_amd64
+ - spec: cp27-win32
+ cibw_version: cibuildwheel==1.10 # last release with proper py2.7 Windows support
+ - spec: cp36-win32
+ - spec: cp37-win32
+ - spec: cp38-win32
+ - spec: cp39-win32
+ - spec: cp310-win32
+ steps:
+ - name: clone repo
+ uses: actions/checkout@v2
+
+ # HACK: MS killed this SDK support package and removed downloads, as did chocolatey, install from a private archive
+ - name: install Windows Python 2.7 SDK
+ run: |
+ $msiPath = Join-Path ([IO.Path]::GetTempPath()) 'VCForPython27.msi'
+ [Net.WebClient]::new().DownloadFile('https://raw.githubusercontent.com/nitzmahone/VCPython27/master/VCForPython27.msi', $msiPath)
+ Start-Process -FilePath msiexec.exe -Wait -ArgumentList @(
+ '/i',
+ $msiPath,
+ '/qn',
+ '/norestart'
+ )
+ shell: powershell
+ if: ${{ contains(matrix.spec, 'cp27') }}
+
+ - name: build/test wheels
+ env:
+ CIBW_BUILD: ${{ matrix.spec }}
+ run: |
+ python -m pip install --upgrade pip
+ pip install "${{ matrix.cibw_version || 'cibuildwheel'}}"
+ # FIXME: /testing takes ~45min on Windows and has some failures...
+ # CIBW_TEST_REQUIRES=pytest CIBW_TEST_COMMAND='python -m pytest {project}/c {project}/testing' cibuildwheel --output-dir dist .
+ CIBW_TEST_REQUIRES=pytest CIBW_TEST_COMMAND='python -m pytest {project}/c' cibuildwheel --output-dir dist .
+ shell: bash
+
+ - name: upload artifacts
+ uses: actions/upload-artifact@v2
+ with:
+ path: dist
+ if-no-files-found: error