Move Cygwin tests to a GitHub workflow (#8829)

* CI: Don't run cross-only test when other workflows are changed

* CI: Move Cygwin test run from Azure Pipelines to GitHub workflow

Also review installed package list, dropping detritus from 42792554, not
removed in f5ed85d7.
diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml
new file mode 100644
index 0000000..32d33d8
--- /dev/null
+++ b/.github/workflows/cygwin.yml
@@ -0,0 +1,89 @@
+name: cygwin
+
+on:
+  push:
+    paths:
+      - "mesonbuild/**"
+      - "test cases/**"
+      - ".github/workflows/cygwin.yml"
+      - "run*tests.py"
+  pull_request:
+    paths:
+      - "mesonbuild/**"
+      - "test cases/**"
+      - ".github/workflows/cygwin.yml"
+      - "run*tests.py"
+
+jobs:
+  test:
+    runs-on: windows-latest
+    name: ${{ matrix.NAME }}
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - NAME: gccx64ninja
+            ARCH: x86_64
+
+    steps:
+      # cache should be saved on failure, but the action doesn't support that
+      # https://github.com/actions/cache/issues/92
+      - uses: actions/cache@v1
+        with:
+          # should use 'pip3 cache dir' to discover this path
+          path: C:\cygwin\home\runneradmin\.cache\pip
+          key: cygwin-pip-${{ github.run_number }}
+          restore-keys: cygwin-pip-
+
+      - run: git config --global core.autocrlf input
+
+      - uses: actions/checkout@v2
+
+      - uses: cygwin/cygwin-install-action@master
+        with:
+          platform: ${{ matrix.ARCH }}
+          packages: |
+            cmake
+            gcc-fortran
+            gcc-objc++
+            gcc-objc
+            git
+            gobject-introspection
+            gtk-doc
+            libboost-devel
+            libglib2.0-devel
+            libgtk3-devel
+            libxml2-devel
+            libxslt-devel
+            ninja
+            python2-devel
+            python3-devel
+            python3-libxml2
+            python3-libxslt
+            python38-pip
+            python38-wheel
+            vala
+            zlib-devel
+
+      - name: Run pip
+        run: |
+          export PATH=/usr/bin:/usr/local/bin:$(cygpath ${SYSTEMROOT})/system32
+          python3 -m pip --disable-pip-version-check install gcovr jsonschema pefile pytest pytest-xdist
+        shell: C:\cygwin\bin\bash.exe --noprofile --norc -o igncr -eo pipefail '{0}'
+
+      - 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: C:\cygwin\bin\bash.exe --noprofile --norc -o igncr -eo pipefail '{0}'
+
+      - uses: actions/upload-artifact@v2
+        with:
+          name: ${{ matrix.NAME }}
+          path: meson-test-run.*
+        # test log should be saved on failure
+        if: ${{ !cancelled() }}
diff --git a/.github/workflows/nonative.yml b/.github/workflows/nonative.yml
index fd6045f..1fc43b4 100644
--- a/.github/workflows/nonative.yml
+++ b/.github/workflows/nonative.yml
@@ -6,7 +6,17 @@
       - master
       # Stable branches such as 0.56 or the eventual 1.0
       - '[0-9]+.[0-9]+'
+    paths:
+      - "mesonbuild/**"
+      - "test cases/**"
+      - ".github/workflows/nonative.yml"
+      - "run*tests.py"
   pull_request:
+    paths:
+      - "mesonbuild/**"
+      - "test cases/**"
+      - ".github/workflows/nonative.yml"
+      - "run*tests.py"
 
 jobs:
   cross-only-armhf:
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 497579b..14ff1bd 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -69,75 +69,3 @@
       addToPath: true
       architecture: 'x64'
   - template: ci/azure-steps.yml
-
-- job: cygwin
-  timeoutInMinutes: 120
-  pool:
-    vmImage: VS2017-Win2016
-  strategy:
-    matrix:
-        gccx64ninja: {}
-  variables:
-    CYGWIN_ROOT: $(System.Workfolder)\cygwin
-    CYGWIN_MIRROR: http://cygwin.mirror.constant.com
-  steps:
-    - script: |
-        choco install cygwin --params="/InstallDir:%CYGWIN_ROOT%"
-      displayName: Install Cygwin
-    - script: |
-        %CYGWIN_ROOT%\cygwinsetup.exe -qnNdO -R "%CYGWIN_ROOT%" -s "%CYGWIN_MIRROR%" -g -P ^
-        gcc-fortran,^
-        gcc-objc++,^
-        gcc-objc,^
-        git,^
-        gobject-introspection,^
-        gtk-doc,^
-        libarchive13,^
-        libboost-devel,^
-        libglib2.0-devel,^
-        libgtk3-devel,^
-        libjsoncpp19,^
-        librhash0,^
-        libuv1,^
-        libxml2,^
-        libxml2-devel,^
-        libxslt,^
-        libxslt-devel,^
-        ninja,^
-        python2-devel,^
-        python3-devel,^
-        python3-libxml2,^
-        python3-libxslt,^
-        python38-pip,^
-        vala,^
-        wget,^
-        cmake,^
-        zlib-devel
-      displayName: Install Dependencies
-    - script: |
-        set PATH=%CYGWIN_ROOT%\bin;%SYSTEMROOT%\system32
-        env.exe -- python3 -m pip --disable-pip-version-check install gcovr pefile pytest-xdist jsonschema
-      displayName: pip install gcovr pefile pytest-xdist jsonschema
-    - script: |
-        set BOOST_ROOT=
-        set PATH=%CYGWIN_ROOT%\bin;%SYSTEMROOT%\system32
-        set SKIP_STATIC_BOOST=1
-        env.exe -- python3 run_tests.py --backend=ninja
-      # Cygwin's static boost installation is broken (some static library
-      # variants such as boost_thread are not present)
-      displayName: Run Tests
-    - task: CopyFiles@2
-      condition: not(canceled())
-      inputs:
-        contents: 'meson-test-run.*'
-        targetFolder: $(Build.ArtifactStagingDirectory)
-    - task: PublishBuildArtifacts@1
-      inputs:
-        artifactName: $(System.JobName)
-      # publishing artifacts from PRs from a fork is currently blocked
-      condition: and(eq(variables['system.pullrequest.isfork'], false), not(canceled()))
-    - task: PublishTestResults@2
-      condition: not(canceled())
-      inputs:
-        testResultsFiles: meson-test-run.xml
-        testRunTitle: $(System.JobName)