You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ci(build): Install widl from the Ubuntu Wine packages instead of the WineHQ repository in MinGW-w64 jobs - #3675
Depends on #3552. Only the last commit belongs to this PR.
The MinGW-w64 jobs add the WineHQ apt repository and install Wine from it only to get widl, which compiles the two browser IDL files. That repository is the reason the runner had to be pinned to Ubuntu 24.04, because apt on Ubuntu 26.04 rejects the WineHQ key file.
Ubuntu has what is needed in its own packages. wine64-tools has widl (as widl-stable) and depends on libwine-dev, which has the system IDL files. cmake/widl.cmake already looks for widl-stable and for /usr/include/wine/wine/windows, so no cmake change is needed.
This change installs wine64-tools and removes the WineHQ repository, the key download and the i386 architecture setup.
The runner stays pinned to Ubuntu 24.04 in this PR.
I first tried widl from mingw-w64-tools, but the Ubuntu mingw-w64 packages do not ship the IDL files, so it cannot compile them.
AI USE
Used AI to make the change and to check the Ubuntu package contents.
The Cache MinGW-w64 Dependencies step attempted to cache system paths
(/usr/lib/gcc/i686-w64-mingw32, /usr/i686-w64-mingw32) which is
problematic due to permission issues with actions/cache when handling
root-owned paths. Additionally, the Install MinGW-w64 Toolchain step
ran unconditionally without checking cache-hit status, making the
cache completely redundant.
Remove the cache step entirely and rely on apt-get install which is
fast enough (~4s at 76MB/s) and reliable.
The change adds MinGW-w64 compiler and link settings, a reusable workflow to build Generals or GeneralsMD and upload build artifacts, and CI jobs that invoke the workflow.
Changes
MinGW-w64 build support
Layer / File(s)
Summary
Compiler and link requirements cmake/mingw.cmake, Core/Libraries/Source/WWVegas/WWDownload/CMakeLists.txt, Generals/Code/GameEngine/CMakeLists.txt, GeneralsMD/Code/GameEngine/CMakeLists.txt
Adds -msse2 for MinGW compilation. Adds ws2_32 and the game engine device targets as interface link dependencies.
Reusable build and artifact upload .github/workflows/reusable-build-mingw.yml
Adds MinGW setup, game-specific CMake configuration and build targets, and collection and upload of executables, DLLs, and debug symbols.
Generals and GeneralsMD CI jobs .github/workflows/ci.yml
Adds jobs that call the reusable workflow on workflow dispatch or when the relevant game or shared files change.
The MinGW CI jobs still depend on Wine packages, so the change does not yet deliver its stated goal of replacing them with mingw-w64-tools. Builds are not shown to break. Finish the switch, including the widl lookup in cmake/widl.cmake, before or soon after merge.
Pre-merge checks: 4
Check name
Status
Explanation
Linked Issues check
Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check
Check skipped because no linked issues were found for this pull request.
Title check
The title concerns the MinGW-w64 widl installation, but it names Ubuntu Wine packages instead of the mingw-w64-tools approach stated in the objectives. It is partially related to the change.
Description check
The description explains changes to widl installation for MinGW-w64 CI, so it is related to the pull request objectives.
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
The reason will be displayed to describe this comment to others. Learn more.
Additional comments: 1
.github/workflows/reusable-build-mingw.yml: 1
59-59: Trivial · Maintainability & Code Quality · Low value
Unverified finding
Verification ran but could not confirm this finding. It is shown for review, not as a verified issue.
Quote $(nproc).
actionlint reports SC2046 for the unquoted -j$(nproc). The value is a single integer, so there is no practical failure. Use -j"$(nproc)" to clear the warning.
Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 0 remain after this review.
OmarAglan
changed the title
ci(build): Install widl from mingw-w64-tools instead of Wine in MinGW-w64 jobs
ci(build): Install widl from the Ubuntu Wine packages instead of the WineHQ repository in MinGW-w64 jobs
Nov 10, 2026
Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.
The reason will be displayed to describe this comment to others. Learn more.
Major · Functional Correctness · Quick win
Replace the Wine-dependent widl setup.
This step still installs wine64-tools. On Ubuntu 24.04, that package pulls in libwine-dev and libwine, so both MinGW jobs remain Wine-dependent. Replace it with mingw-w64-tools and update cmake/widl.cmake to find i686-w64-mingw32-widl and the MinGW IDL headers. Changing this install command alone will not complete the switch. (packages.ubuntu.com)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Depends on #3552. Only the last commit belongs to this PR.
The MinGW-w64 jobs add the WineHQ apt repository and install Wine from it only to get widl, which compiles the two browser IDL files. That repository is the reason the runner had to be pinned to Ubuntu 24.04, because apt on Ubuntu 26.04 rejects the WineHQ key file.
Ubuntu has what is needed in its own packages. wine64-tools has widl (as widl-stable) and depends on libwine-dev, which has the system IDL files. cmake/widl.cmake already looks for widl-stable and for /usr/include/wine/wine/windows, so no cmake change is needed.
This change installs wine64-tools and removes the WineHQ repository, the key download and the i386 architecture setup.
The runner stays pinned to Ubuntu 24.04 in this PR.
I first tried widl from mingw-w64-tools, but the Ubuntu mingw-w64 packages do not ship the IDL files, so it cannot compile them.
AI USE
Used AI to make the change and to check the Ubuntu package contents.