| name: cygwin | |
| concurrency: | |
| group: cygwin-${{ github.head_ref || github.ref }} | |
| cancel-in-progress: true | |
| on: | |
| push: | |
| branches: | |
| - master | |
| # Stable branches such as 0.56 or 1.0 | |
| - '[0-9]+.[0-9]+' | |
| paths: | |
| - "mesonbuild/**" | |
| - "test cases/**" | |
| - "unittests/**" | |
| - ".github/workflows/cygwin.yml" | |
| - "run*tests.py" | |
| pull_request: | |
| paths: | |
| - "mesonbuild/**" | |
| - "test cases/**" | |
| - "unittests/**" | |
| - ".github/workflows/cygwin.yml" | |
| - "run*tests.py" | |
| permissions: | |
| contents: read | |
| jobs: | |
| test: | |
| runs-on: windows-latest | |
| name: ${{ matrix.NAME }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - NAME: gccx64ninja | |
| ARCH: x86_64 | |
| env: | |
| MESON_CI_JOBNAME: cygwin-${{ matrix.NAME }} | |
| steps: | |
| # remove inheritable permissions since they break assumptions testsuite | |
| # makes about file modes | |
| - run: icacls . /inheritance:r /T /C | |
| - run: git config --global core.autocrlf input | |
| - uses: actions/checkout@v4 | |
| - uses: cygwin/cygwin-install-action@v6 | |
| with: | |
| platform: ${{ matrix.ARCH }} | |
| packages: | | |
| cmake | |
| gcc-fortran | |
| gcc-objc++ | |
| gcc-objc | |
| gcovr | |
| git | |
| gobject-introspection | |
| gtk-doc | |
| libboost-devel | |
| libglib2.0-devel | |
| libgtk3-devel | |
| make | |
| ninja | |
| python312-devel | |
| python312-fastjsonschema | |
| python312-pefile | |
| python312-pip | |
| python312-wheel | |
| vala | |
| zlib-devel | |
| - name: Find pip cache dir | |
| id: pip-cache | |
| run: | | |
| export PATH=/usr/bin:/usr/local/bin:$(cygpath ${SYSTEMROOT})/system32 | |
| echo "dir=$(cygpath -wa $(python3 -m pip cache dir))" >> "$GITHUB_OUTPUT" | |
| shell: bash --noprofile --norc -o igncr -eo pipefail '{0}' | |
| - uses: actions/cache/restore@v4 | |
| id: restore-cache | |
| with: | |
| path: ${{ steps.pip-cache.outputs.dir }} | |
| key: cygwin-pip-${{ github.run_number }} | |
| restore-keys: cygwin-pip- | |
| - name: Run pip | |
| run: | | |
| export PATH=/usr/bin:/usr/local/bin:$(cygpath ${SYSTEMROOT})/system32 | |
| python3 -m pip --disable-pip-version-check install pytest pytest-subtests pytest-xdist | |
| shell: bash --noprofile --norc -o igncr -eo pipefail '{0}' | |
| - uses: actions/cache/save@v4 | |
| with: | |
| path: ${{ steps.pip-cache.outputs.dir }} | |
| key: cygwin-pip-${{ github.run_number }} | |
| - name: Run tests | |
| run: | | |
| export PATH=/usr/bin:/usr/local/bin:$(cygpath ${SYSTEMROOT})/system32 | |
| python3 ./run_tests.py --backend=ninja | |
| env: | |
| # Cygwin's static boost installation is broken (some static library | |
| # variants such as boost_thread are not present) | |
| SKIP_STATIC_BOOST: 1 | |
| shell: bash --noprofile --norc -o igncr -eo pipefail '{0}' | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.NAME }} | |
| path: meson-test-run.* | |
| # test log should be saved on failure | |
| if: ${{ !cancelled() }} |