Commit: CI: Add Github runner for Cygwin

Christian Brabandt <[email protected]> Fri, 7 Aug 2026 22:30:04 +0200
Newsgroups gmane.editors.vim.devel
Message-ID <[email protected]>
CI: Add Github runner for Cygwin

Commit: https://github.com/vim/vim/commit/a6be0d496a03261bb3c81dcfd1189fbec89c1352
Author: Hirohito Higashi <[email protected]>
Date:   Fri Aug 7 20:12:39 2026 +0000

    CI: Add Github runner for Cygwin
    
    Vim can be built for Cygwin with the Unix Makefile, but nothing covers it.
    The Windows runner builds with MSVC and MinGW only, and the Cirrus CI job
    that was removed in 0abffbff ran FreeBSD alone.
    
    Add a GitHub Actions workflow that configures and builds under Cygwin.  It
    runs once per day instead of per push, and skips the run when nothing was
    committed since the previous one, because the Cygwin runner is slow.  Only
    the tiny test suite, the unit tests and the libvterm tests are run: the
    script tests need sockets, PowerShell, network access and POSIX file
    permissions, which do not behave the same under Cygwin.
    
    closes: #20970
    
    Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
    Signed-off-by: Hirohito Higashi <[email protected]>
    Signed-off-by: Christian Brabandt <[email protected]>

diff --git a/.github/workflows/ci-cygwin.yml b/.github/workflows/ci-cygwin.yml
new file mode 100644
index 000000000..e4737967b
--- /dev/null
+++ b/.github/workflows/ci-cygwin.yml
@@ -0,0 +1,118 @@
+name: CI for Cygwin
+
+on:
+  schedule:
+    - cron: '30 23 * * *'  # Run once per day, Cygwin runners are slow
+  workflow_dispatch:
+
+permissions:
+  contents: read # to fetch code (actions/checkout)
+
+jobs:
+  # Skip the run when nothing was committed since the previous one.
+  check:
+    runs-on: ubuntu-24.04
+
+    outputs:
+      changed: ${{ steps.check.outputs.changed }}
+
+    steps:
+      - name: Look for commits in the last day
+        id: check
+        env:
+          GH_TOKEN: ${{ github.token }}
+        run: |
+          date=$(gh api "repos/${{ github.repository }}/commits?sha=${{ github.ref_name }}" \
+            --jq '.[0].commit.committer.date')
+          if [ "$(date -d "${date}" +%s)" -gt "$(date -d '25 hours ago' +%s)" ]; then
+            echo "changed=true" >> "$GITHUB_OUTPUT"
+          else
+            echo "changed=false" >> "$GITHUB_OUTPUT"
+          fi
+
+  cygwin:
+    needs: check
+    if: needs.check.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
+
+    runs-on: windows-2022
+
+    env:
+      # Keep Cygwin out of the Windows PATH: the post-checkout cleanup would
+      # run Cygwin's git on a Windows path and fail.  A login shell sets up
+      # the Cygwin PATH, CHERE_INVOKING keeps it in the workspace.
+      CHERE_INVOKING: 1
+      CYGWIN_NOWINPATH: 1
+      SRCDIR: ./src
+      TERM: xterm
+
+    defaults:
+      run:
+        shell: C:

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups "vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1wsRCe-000jAN-O6%40256bit.org.