Oh, what a fun. @techee I'm sorry that you got so in deep into the Windows build "fun" :(. And probably because of some of my past decisions on the build setup which might not be the best ones. Thank you for debugging all these issues, talking to the MSYS2 guys and sorting everything out.
I'll try to answer the questions raised in the various issues:
### Why not using the native MSYS2 Github actions? At the time of creating the current setup, the MSYS2 Github action didn't exist yet or at least I wasn't aware of it. I think it might be totally possible to port the current setup but it needs to be done and might cause some efforts. I won't work on this.
Additionally, we would rely even more on the Github infrastructure. The current setup is just a shell script which starts a Docker container which can be run basically everywhere. The MSYS2 Github action can only be used with Github Actions.
This might be ok but should be considered at least.
### Why do you use "mingw64" and not "ucrt"? Because we always built with mingw64, I think even before "ucrt" existed. We could switch now but the current cross-compile setup based on the Debian mingw64 toolchain offers "ucrt" only in the "experimental" distribution and is probably not yet ready to use. So we could keep this in mind for the future or switch away from cross-compilation (see above) and then use "ucrt".
### Why do you use the "posix" variant of the toolchain and not "win32"? See my (not so :D) famous change in https://github.com/geany/geany/commit/110c7b492e8595851131eeb5c381418799e8ae... when we had trouble with newer C++ features used in Scintilla but not support by the "win32" variant. This might have changed in the meantime by newer toolchain versions and so let's try it.
### The SVG red squares issue I updated the Docker base image used for the cross compilation to Debian Trixie (this is not yet officially released, it's the Debian Testing version) as it offers newer Wine and mingw64 toolchain versions. With the included newer Wine version, it seems "gdk-pixbuf-query-loaders.exe" updates the cache properly and the "pixbufloader_svg.dll" is included.
If we want to go this way, this might be an alternative to manually updating the cache file.
To test this, I created (and merged to get a new Docker base image) https://github.com/geany/infrastructure/pull/12 and updated this PR with the necessary changes (576540c1e4093c866aa3eb29907e21864bf7fb81). I didn't update G-P yet which I would do if we want to use the newer base image version.
### The Lerc and stdc++ incompatibility As said above, it might be the necessity for the "posix" version of the stdc++ library is gone and we can use the default variant. Let's test this with https://github.com/geany/infrastructure/pull/13 and the corresponding changes in in this PR (7bc4838fc7f657b3aa3f348fdb76362a87314b72).
Unfortunately, I cannot test these changes on Windows. Even only the first change (update of the base image) crashes on startup with the following error: ![Screenshot_2025-01-01_14-00-51](https://github.com/user-attachments/assets/18e4e32e-b4e2-4b2c-9fef-7e1bec7b5...)
I'm not sure if this happens because of the change or because of my old Windows 7 machine which might be finally too old for recent builds. This would be ok if it works on newer systems. So, @techee could you maybe test the builds: - https://github.com/geany/geany/actions/runs/12570600682 (base image update with newer Wine and toolchain, should contain a proper Pixbuf loader cache file) - https://github.com/geany/geany/actions/runs/12570886835 (removal of explicitly using the "posix" stdc++ library)
I hope I didn't miss to address any important question. Otherwise, just ask.