I am the one who got to volunteer because everyone else took a step backwards. This time, the lack of backward steps got me to experience cross-compiling, funky code and other beasts that await the insane traveller in the world of Windows shitogramming1. And it also made me recollect the main reason why I do not want to make a living out of programming, although I could do it: there is so much shit out there masquerading as code, that programming anything of any consequence invariably requires first2 the cleaning of Augean stables. And yes, the beasts are divinely healthy too, so no chance for that to stop really, or for doing the cleaning once and for all, once and for good.3
The task seems easy at first: take a bunch of C++ code and libraries (cs-winlibs, crystalspace and eulora or more precisely its planeshift-based client), previously compiled without a hitch on Linux and just compile them the same on Windows. The only caveat is that... no one succeeded before. Plenty compiled it on Linux and plenty... tried to do it on Windows (including me in a previous driver-problem-induced madness). So, after having actually played the game to its very bones so far, earned the prizes and everything, I got back to compiling it. And here's how it went, in all its glory4:
- In an attempt to avoid at least going too deep into the famous stables, I installed at first MinGW and MSYS, figured out how to deprecate the compiler so that it is just old enough for cs-winlibs5 and... success with CrystalSpace. And a lot of good that did to me, because Eulora still failed with the compiler screaming and shouting murder, rape and abuse by means of funky forward declarations6. The reason? Well, that's why there are c++ standards clearly defined, so that on one hand Visual Studio wipes its bum with them and on the other hand the beasts in the Augean stables shit unportable code undisturbed with the help of this wonderful bum-wiping device. The solution? Indirectly7 from the mouth of those writing the Planeshift client, it goes along the lines of "I suggest you use Visual Studio." In other words, stomp stomp, we can't be bothered to write portable code and we like our stables very much, thank you.
- Since I was already brown and stinky with Windows in any case, it's not as if a bit of Visual Studio would truly make a difference in terms of colour, odour and general well-being. So I got all the way to the deep and smelly parts of the stables and I installed Visual Studio 10. And the Service Pack for it, of course, because well, that's how the pile in the stable grows, one pack and one patch at a time. Then load the whole thing in, trim it to compile at least only the projects which are actually needed for eulora's client, rummage around and set all kinds of bells and whistles8. Compile and fail. Strip away useless junk that the Visual Studio solution insisted it needed anyway and don't you dare tell it that's not true, you stupid user, you, the machine surely knows best. Then compile again and still fail, but happily only on projects that eulora can run without9.
- Already quite surprised that things worked in the end to some degree10, I've set all the environment variables, checked the setup and... ran eulora's client. Which loaded nicely almost all the way and then... crashed. Just so that it's clear how things are with those stinky degrees and all the rest.
- When it successfully ran, the server was down. And when it was up again the next day, I first ran the client from where it had compiled rather than from the location it expected (although it wouldn't say), which meant that I was just about to throw the computer out the window when it wouldn't run but complain instead that the variables (which hadn't been touched from the previous successful run) were not set.
After all that (and some cool-down period much needed for me), it finally ran fine, the server was up, I could login and so I saw the land of Eulora again, even from the remote (and rather stinky) Windows place. It took me though longer to get there from Windows than it took me to explore all Eulora, to craft its items and to learn its skills. That's the cost of shitogramming for you.
I can't call every line of code the result of programming, just as I can't call literature every bunch of words thrown at a blank page. ↩
usually second and third and fourth, but let's remain positive and call it only first ↩
I wholeheartedly admire those rare actual programmers who go through all this trouble and I am grateful to them for doing it. But I don't want to do that for a living myself, thank you. ↩
basically by doing an upgrade which is a downgrade and here we go la-la-la: mingw-get upgrade --recursive "gcc<4.7.1" "gcc-g++<4.7.1" ↩
and some blindness to a very existing and actually linked zlib, but that was relatively easy to solve by modifying the jam file to add the -lzlib flag at the end of the command line. ↩
aka via Chetty who was kind enough to ask them for me ↩
include directories in project properties, preprocessor definitions etc. ↩
loader, celgraph and the sound manager, hence it can run, but it can't speak. Plus an error that was relatively easy to repair by getting a few more files from the project although the very same files were not needed on Linux, but hey, we are in the stables, more is good, especially when there is lots of it anyway and lots and lots and lots. ↩
the devil is in those degrees, what kind of thing that's not from hell works "to some degree"? It either works or it doesn't and that's the end of it. ↩
Comments feed: RSS 2.0