Skip to content

ci: move the Cygwin build from AppVeyor to GitHub Actions - #848

Merged
Youw merged 3 commits into
masterfrom
cygwin-github-actions
Nov 12, 2026
Merged

Youw merged 3 commits into
masterfrom
cygwin-github-actions

Conversation

@Youw

@Youw Youw commented Nov 12, 2026

Copy link
Copy Markdown
Member

Move the Cygwin build from AppVeyor to a new windows-cygwin job in GitHub Actions.

The Cygwin job was the slowest part of every AppVeyor build: 4-6 minutes, about 3 of them spent upgrading the preinstalled Cygwin, while each MSBuild job takes under a minute. AppVeyor runs one build at a time, so builds also queue behind each other (up to 10 minutes for recent PRs), and AppVeyor was the last check to report on most pushes and PRs.

Coverage compared with the AppVeyor job:

  • Same: current Cygwin x86_64 with GCC, ./bootstrap && ./configure && make, building the Windows backend (libhidapi.la, shared and static) and hidtest.
  • Added: compiles with the same -Wall -Wextra -pedantic -Werror -Wformat-signedness as the other GCC jobs. Cygwin is the only Windows toolchain in CI with a 64-bit long, so its warnings can differ from MinGW's.
  • Added: make install, then checks the installed DLL, import library, header and pkg-config files.
  • Added: runs hidtest as a runtime smoke test under Cygwin. The hosted runner exposes a virtual HID mouse, so this enumerates a real device and rebuilds its report descriptor from preparsed data. The device hidtest tries to open isn't there, so exit code 1 ("unable to open device") is the expected result.
  • The build runs with a Cygwin-only PATH, so no toolchain from the runner image can leak into it.

AppVeyor keeps the two Visual Studio 2015 MSBuild jobs, the oldest MSVC in CI. With only MSBuild left, the for: matrix in .appveyor.yml is no longer needed.

Timing, measured on this branch and on the last five master builds:

Before After
AppVeyor build 5.2-7.8 min (Cygwin job 4.2-6.0 min) 1.2-1.3 min (two MSBuild jobs)
GitHub Actions builds.yml 2.3 min 2.2-2.3 min (windows-cygwin itself: 1.9-2.3 min)

So all checks report about 2.5 minutes after a push instead of 5-8. Each AppVeyor build also holds AppVeyor's single build slot for about a minute instead of about six, which shortens the queue for builds waiting behind it.

Validation:

  • Branch run: all builds.yml jobs pass; the log shows the warning flags on both hid.c compiles and on the hidtest link.
  • AppVeyor passed on all three branch commits with the trimmed configuration.

After merging, windows-cygwin should be added to the required status checks for master. Until then a Cygwin failure won't block a merge; today it does, through continuous-integration/appveyor/pr.

Assisted-by: claude-code:claude-opus-5-5

Generated by Claude Code (Claude Opus 5.5).

Youw added 3 commits November 13, 2026 01:22
The Cygwin job took 4-6 minutes of each AppVeyor build, and AppVeyor runs
one build at a time. The new windows-cygwin job runs the same autotools
build on GitHub Actions, in parallel with the other jobs, and also builds
with -Werror, checks the installed files and smoke-tests hidtest.

AppVeyor keeps the Visual Studio 2015 MSBuild jobs.

Assisted-by: claude-code:claude-opus-5-5
configure.ac runs AC_PROG_CXX; without a C++ compiler libtool's C++
preprocessor check fails configure under Cygwin.

Assisted-by: claude-code:claude-opus-5-5
Assisted-by: claude-code:claude-opus-5-5
@Youw
Youw merged commit a4ad72a into master Nov 12, 2026
30 checks passed
@Youw
Youw deleted the cygwin-github-actions branch November 12, 2026 23:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant