Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows builds (both Mingw and MSVC) started to fail #14

Open
pgp opened this issue Nov 11, 2020 · 6 comments
Open

Windows builds (both Mingw and MSVC) started to fail #14

pgp opened this issue Nov 11, 2020 · 6 comments

Comments

@pgp
Copy link

pgp commented Nov 11, 2020

It's quite some time now that my build tasks using windows containers have been failing (due to unsatisfied dependencies and/or broken environment I assume):
https://cirrus-ci.com/task/6041454491467776
https://cirrus-ci.com/task/4508883794264064

Any hint on how can I fix this?

@ped7g
Copy link

ped7g commented Jan 2, 2021

I was able to restore MINGW builds with current "cirrusci/windowsservercore:cmake" image.

The MSYS2 is gone, but there is C:\Program Files\Git\usr\bin\ with lot of GNU goodies (bash, diff, cmp, ...), and there is mingw32-make and gcc8.1 installed as part of the mingw64 package.

Example of working MINGW build on my project: https://cirrus-ci.com/task/4757385015197696 (expand "Run build")

I'm so far missing visual C++ compiler, chocolatey suggest the package visualstudio2019-workload-vctools is installed, but I'm unable to find anything useful (resembling C++ compiler) in the Visual Studio directory tree.

The script trying to use MSCC through cmake, currently containing many debug "dir / where" commands looking for MSCC:
https://cirrus-ci.com/task/5883284922040320?command=build#L176
I see there executables probably belonging to C#/VB Roslyn compiler, but I don't see anything resembling MSCC (although I'm not even sure what the filename should be, as usually I let CMake to create the build script)

CMake is reporting this:
https://cirrus-ci.com/task/5883284922040320?command=build#L384

I was unable to find any vcvarsall.bat or vcvars64.bat on the disk.

@ped7g
Copy link

ped7g commented Mar 18, 2021

And the mingw32-make seems to be gone:
https://cirrus-ci.com/task/6665836220907520

What I don't get is ... I don't see any commit in this repository. Why did the windows image suddenly change then? I did think this is the "source" of those cirrus windows images. How does this even work? It's a bit frustrating when I don't see any reason or hint for such change, and I don't understand where the cirrus images come from then. I'm not an expert on the "cloud" dev-ops myself, so I'm often lost when something like this happens, I have no idea how to easily check what is happening and how to resolve it.

@pgp
Copy link
Author

pgp commented Mar 29, 2021

Hi, sorry for the late response. Sincerely, I don't know how to help, nor I want to spend time in finding workarounds when there are other free CI services to use... as for me, I simply removed the failing builds from Cirrus CI and passed them to AppVeyor, which has worked fine so far. Previously, when Travis CI changed its free account policies, I did the same, by moving all the involved builds away from Travis.

@ped7g
Copy link

ped7g commented Mar 29, 2021

@pgp I wasn't expecting any help/response from you :) as you reported the issue, so I was more like trying to help you with my experience and just adding more evidence/status to it for Cirrus folks... They seem to be usually very supportive and quick to react even to quite edge-case issues, but seems the windows images topic is not so hot for them either. Also maybe I just don't understand this stuff too well, so it's difficult to help people like me.

I'm kinda too lazy to add another CI to the project, at this moment I will probably just disable windows builds (I'm constantly fighting in my mind about windows support, as I don't need it personally, but there are still some users with windows OS, for whatever weird reasons, so just completely removing the windows binaries seems a bit cruel at this moment, but if it gets more and more difficult to provide them, they may get cut out in the end).

So thank you for your response and advice (I may reconsider also other CI option), and good to hear you have it resolved for your projects. I have still some hope the Cirrus will eventually find a way to cater even for projects and people like me (who are mostly clueless with windows), but in the meantime I'm already super glad for their other offerings, until they figure out this kind of issues. :)

@fkorotkov
Copy link
Contributor

Sorry just catching up on the conversation. Unfortunately we don't have much expertise in building software for Windows and therefore cannot assist with some particular issues.

Cirrus on it's own can run any Docker image so you can build one crafted for your project which will be immutable.

With containers in this repository we tried to provide some very common one which are also pre-cached on the Cirrus hosts. This allows either to use these images as is or build on top of them (which also helps to download only missing layers of the docker image). I'm trying to simplify the setup in #22. PTAL and let me know what do you think.

@ped7g
Copy link

ped7g commented Apr 8, 2021

@fkorotkov I don't understand windows environment much - but going by this very limited "review" way - the #22 so far looks good to me.

I would maybe try to layer the images from small independent tools toward VS/GCC as final difference, because you can use cmake with all sorts of different compilers (and if I'm reading your changes right, the cmake is build from VS image), but I have no idea if flipping order of installation is possible in this case and if it will not make something fail during install.

But (WRT to my comments in this thread and the project I have on mind) I still wonder how/why the image sometimes change and I can't tell, like the mingw32-make suddenly gone, while I didn't notice any changes in this repo and I initially did think this repo is like source for the windows images. Which shows I just don't understand how these things works and can't even find any digital track to where some change did occur. So my opinions/advices are "uninformed" level, proceed with caution.

Using docker to pre-build some windows image sound probably like the most stable option (I'm just usually lazy to do anything about windows, as I don't have any windows box around for some interactive experiments first, and triggering hundreds of cirrus builds to figure it out is not much fun). :)

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

No branches or pull requests

3 participants