Windows
Closes #201. I still have to figure out why the tests are failing on Travis, but I figured I might as well put this up so that you guys can review.
TL;DR of this pull request: Windows is weird.
Build's green now! :D
I was thinking we should probably add AppVeyor CI to make sure Windows doesn't break; it has support for MSYS2.
Re AppVeyor, that would be great. The specs are bound to break pretty fast by mistake otherwise.
Well, at some point I guess I broke processes again...ugh...
Wow, this is really, really weird...
So, TerminateProcess kind of kills the process, except it doesn't. Apparently, the process gets "killed", but it doesn't actually stop running. If I run something like sleep 2; touch, the exit callback is called, but stdout and stderr stay waiting for sleep 2 to finish. But touch is never run. So it appears the shell is killed, but it waits for the first process to finish first.
And it seems that read_async can actually return an EOF error, but ret never becomes nil. So, my idea:
- Follow what @nilnor said about doing the callbacks. Again.
- Put a
pcallaroundread_async, but make sure it was actually an EOF error, not just swallowing everything.
How does that sound?
I would like to try your Windows patch (and possibly add support for cross-compilation in .travis.yml).
Could you please rebase your branch on current master? Thanks.
@kirbyfan64 - is this PR still good? Maybe we can merge even if not everything on windows is fixed?
@shalabhc Uhh...yeah...
I still can't figure out what the hell is going on with processes. Meanwhile, I just shoved a nasty retry-three-times loop when the troublesome error appears. Messy, but Windows I/O seems to generally only be solvable with retry loops.
As an aside, here's a zip file with the binaries:
https://www.dropbox.com/s/3d3extidx56h1t7/howl.zip?dl=0
(created using the new make windist) and a nice, shiny Inno Setup installer (in wininst.iss):
https://www.dropbox.com/s/7whewn5d43ug6o8/howl-setup.exe?dl=0
@kirbyfan64 tried both the zip file and the installer on my windows 10 machine. The executable just exited without any error, nothing appeared on the screen. (PS: I don't have msys2 installed, thought maybe it is not needed for running it)
Okay guys, this is really, really bad...
The problem
Basically, everything's broken again, especially since I got a new computer with an upgraded MSYS2 (since the old one kinda...met an unfortunate end):
- Icons don't work anymore.
- glib process crud is still broken.
- Pixbufs don't work, even though I can see the symbols present in the resulting binary.
- There's this persistent, ugly border that I can't get rid of.
- I have legit tried to make a binary distribution for several hours, and I still cannot figure out why some (again pixbuf-related) DLLs aren't getting picked up.
Here's the fundamental problem I've noticed: using MSYS for this is never going to work correctly. The entire concept of a UNIX environment that's not really UNIX inside of Windows has caused nothing but endless pain, and I'm incredibly sick of trying to mess with it. It surprises me that these broken binaries are what the GTK+ project recommends using...
The new plan
Screw MSYS2.
I've stumbled upon this GTK+ building project. The new idea is to instead use Visual Studio for building. I have no clue how this is going to end up, but it can't possibly be any worse.
Meanwhile...
I literally set up Howl with my entire custom config to work flawlessly under Windows Subsystem for Linux w/ VcXsrv in under an hour. I'll probably write up somewhere how to install it, but if you're looking for a quick way to get Howl working under Windows until I get everything here working, this is probably the way to go.
@kirbyfan64 it sounds like you've had good success with the subsystem for Linux and VcXsrv. Could we (and I really mean you :)) do a detailed write-up of this that we can put on the site as installation instructions?