name: Test Cygwin on: [push, pull_request, workflow_dispatch] jobs: build: runs-on: windows-latest strategy: fail-fast: false matrix: python-minor-version: [7, 8, 9] architecture: ["x86", "x86_64"] timeout-minutes: 40 name: Python 3.${{ matrix.python-minor-version }} ${{ matrix.architecture }} steps: - name: Fix line endings run: | git config --global core.autocrlf input - name: Checkout Pillow uses: actions/checkout@v3 - name: Install Cygwin uses: cygwin/cygwin-install-action@v2 with: platform: ${{ matrix.architecture }} packages: > ImageMagick jpeg python3${{ matrix.python-minor-version }}-cffi python3${{ matrix.python-minor-version }}-devel python3${{ matrix.python-minor-version }}-numpy python3${{ matrix.python-minor-version }}-cython liblapack-devel gcc-g++ python3${{ matrix.python-minor-version }}-sip python3${{ matrix.python-minor-version }}-tkinter ghostscript libfreetype-devel libimagequant-devel libjpeg-devel liblcms2-devel libopenjp2-devel libraqm-devel libtiff-devel libwebp-devel libxcb-devel libxcb-xinerama0 netpbm perl qt5-devel-tools xorg-server-extra zlib-devel subversion make - name: Add Lapack to PATH uses: egor-tensin/cleanup-path@v1 with: dirs: 'C:\cygwin\bin;C:\cygwin\lib\lapack' - name: Get pip cache dir id: pip-cache run: | bash.exe -c 'cygpath -wa $(python -m pip cache dir)' bash.exe -c 'echo "::set-output name=dir::$(cygpath -wa $(python -m pip cache dir))"' - name: pip cache uses: actions/cache@v3 with: path: 'C:\cygwin\home\runneradmin\.cache\pip' key: ${{ runner.os }}-cygwin-pip-${{ hashFiles('.ci/install.sh') }} restore-keys: | ${{ runner.os }}-cygwin-pip- - name: Build system information run: | bash.exe -c "python3 .github/workflows/system-info.py" - name: Install dependencies run: | bash.exe .ci/install.sh - name: Install a different NumPy if: matrix.architecture == 'x86_64' run: | bash.exe -c "python3.${{ matrix.python-minor-version }} -m pip install -U 'numpy!=1.21.*'" - name: Check imports run: | bash.exe -c "python3.${{ matrix.python-minor-version }} -c 'import numpy as np; print(np.__version__)'" - name: Build run: | bash.exe .ci/build_cygwin.sh - name: Rebase dlls run: | bash.exe -c '/usr/bin/rebase --database $(find /usr{,/local}/lib/python3.${{ matrix.python-minor-version }}/site-packages src/PIL ${HOME}/.local/lib/ /usr/lib/lapack /usr/bin -name \*.dll -o -name \*.exe)' - name: Test run: | bash.exe xvfb-run -s '-screen 0 1024x768x24' .ci/test.sh - name: Prepare to upload errors if: failure() run: | dash.exe -c "mkdir -p Tests/errors" - name: Upload errors uses: actions/upload-artifact@v3 if: failure() with: name: errors path: Tests/errors - name: After success run: | bash.exe .ci/after_success.sh - name: Upload coverage uses: codecov/codecov-action@v3 with: file: ./coverage.xml flags: GHA_Cygwin name: Cygwin Python 3.${{ matrix.python-minor-version }} ${{ matrix.architecture }} success: needs: build runs-on: ubuntu-latest name: Cygwin Test Successful steps: - name: Success run: echo Cygwin Test Successful