The Hardcore Development Box
Recently, I've been doing some Unix-land hackery for various bits of fun and profit. Very long story short, I've strayed from OpenBSD (my first choice of Unixes) into the wilds of FreeBSD, because of some wireless driver compatibility issues. From there I've returned to Linux, which I left a long time ago and swore never to mess with again - mostly because I needed a totally new set of hardware to do the hacking I wanted. And also because the FreeBSD machine was busy being a wireless access point for my home network.
So, armed with a trove of spare parts and more than a little gusto, I embarked on the journey of Linux From Scratch. I'd used LFS once before on an embedded hardware project, and remember liking the minimalism and the full control over how everything got built for the machine.
Turns out that LFS is far better suited to building embedded stuff than it is to building development workstations.
I've lost track of how many evenings and weekends I've poured into this mess, but it's getting fairly ridiculous. I'm no longer doing this from-scratch build out of curiosity, or masochism, or any of the normal reasons. I'm doing this because dammit I will not let this machine beat me.
Just getting the machine to boot was a nightmare in itself; I had to restart the LFS build from scratch at one point due to a conflict between my hardware RAID system and the Linux RAID drivers. (It had to do with RAID-per-drive vs. RAID-per-partition semantics; combined with a lack of a /boot partition for GRUB, this translates roughly into "you're screwed.") So getting that first kernel running was a triumph all its own.
Then there was the (admittedly minor) adventure of fixing the CD-ROM/DVD drive in the machine. To gloss over a couple of frustrating hours of details, I can simply say, the moral of the story is to be sure you actually turn on the kernel options that you think should be on. Things like IDE drivers are useful little bastards.
With a basic shell booting, it was of course time to begin the long, dreary road towards installing X Windows and GNOME. Thus far, this project has translated into several grueling hours of manually hunting down dependencies, because for some infernal reason I can't get any package manager software to build on this stupid machine.
I did succeed in getting X Windows installed a couple of hours ago; that leaves a rather considerable 150+ GNOME-related projects to compile and install. I'm supposed to fly out tomorrow afternoon, and I have yet to do laundry or pack - so chances are Real Life will interfere with finishing this build, at least in the near future.
Those of you who are old enough (and been around the programming world long enough) remember the glory days of DLL Hell back in the early Windows releases. Back then, it really mattered whether you installed your dependencies locally or in the system shared directory; hard drive space was still a premium commodity.
I deployed enough software in Windows 3.x and Windows 95/98/98SE environments that I remember DLL Hell all too vividly. It was a miserable, awful state of affairs, and releasing software to any nontrivial number of people was bound to elicit complaints of "it just dies when I try to run it."
We all loathed DLL Hell. We all pleaded with Microsoft to give us an alternative. We all pleaded with Microsoft to stop using the registry as the alternative, because the registry concept pretty much sucks. We all watched in horror as the NT kernel took over in Windows 2000, and the registry became still more important and central to tracking installed and shared libraries.
We all rejoiced when SxS finally arrived, eliminating an old foe and banishing the demons of DLL Hell forever. (OK, so SxS really just introduced a whole new family of issues - but hey, at least they're different issues, right?)
Now, though... now, I look at the cryptic compiler error involving time.h and some function duplication... and now, I weep softly and wish that mayhaps the days of DLL Hell might return, even for just a fleeting moment, that I might escape the pains and torment of trying to build software from sources on a Linux machine.
Stupid fucking Linux.