ci: verify Windows GUI has no MinGW runtime DLL deps#206
Merged
Conversation
Add a composite action that inspects the built GUI exe with objdump and fails if libgcc_s_seh-1.dll, libstdc++-6.dll, or libwinpthread-1.dll appear in its PE import table. Wired into both dev-build.yml and release.yml right after `wails build` to prevent silent regressions of the static MinGW linking added in b2a3167.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
.github/actions/verify-windows-gui-dllsthat runsobjdump -pon the built GUI exe and fails iflibgcc_s_seh-1.dll,libstdc++-6.dll, orlibwinpthread-1.dllappear in the PE import table.wails buildin bothdev-build.ymlandrelease.ymlbuild-gui-windowsjobs.Why
Commit b2a3167 statically linked the MinGW runtime so users don't need those three DLLs installed. Nothing in CI currently enforces that — a future flag change or Wails/Go update could silently re-introduce a dynamic dependency and we'd only learn about it from user reports. This check is the regression guard.
The action reuses the MSYS2 MINGW64 setup both jobs already perform, so no extra tooling is added.
Test plan
build-gui-windowsindev-build.ymlpasses on this PR and the new step prints a DLL import list without the three forbidden names.-extldflags=-static/CGO_LDFLAGSand confirm the step fails with the expected error before reverting.