This Space for Rent

Why can’t I find the phone number for the orbital anvil delivery system when I need it?

Since part of my job involves maintaining the Linux distribution at work, I've been given the, um, interesting task of moving our distribution from one that's based roughly on redhat 8.0 to one that's roughly based on rhel5 (this is after a several year stint of arguing vehemently that it's silly to roll up operating system versions just because we can; the marketeers finally got frantic enough over the horrible! bug! that! we! use! software! from! earlier! than! 2007! that this argument was completely lost.) Our internal code (which includes some code that's older than the Unix operating system ported with very little complaints (caused by gl*bc fucking with the published interfaces by converting errno and friends into #defines, thus breaking all the code that did ``extern int errno;'',) but, as I suspected, a lot of the newer Open™©® Source©™® software our distribution has accreted over the years has failed to make the upgrade in a fairly spectacular fashion. Some of this code is no longer supported, and needed some fairly heroic hackery to compile and interoperate (and hand-package in the horrible package format that redhat uses), but other bits of the code fail in such a spectacular fashion that I can only look at the system and wonder if there's any kind of release QA going on down in Raleigh.

rgrep, which is part of jed, is the latest catastrophic failure in the porting competition. Since it's part of jed, it doesn't use curses (or, on Linux, the much-more-loathsome ncurses) but uses SLang. But that should be okay, right? I've installed slang-devel, so we should have all the crap we need to compile against that horrible thing.

Uh, no we don't. Jed won't compile because it can't find something called SLang_Error. And it can't find it because it's not in the copy of slang.h that is packaged into slang-devel. So I hunted around the web and found a Cygwin port of rgrep that didn't include jed, copied it over to the rhel5 build machine, and tried to compile it.

Nope, sorry, no good. rgrep didn't build because the SLRegexp_Type structure doesn't exist. And it doesn't exist because it's a typedef from a _pSLRegexp_Type structure, which isn't defined in any of the headers that are delivered by the slang-devel package.

*blink*

How the hell are you expected to compile anything against SLang if the goddamn header files don't include the structures you need to successfully compile things with? Have all of the horrible internals been replaced by (spit) "thread-safe" versions so that anyone that wants to use code that's 5 years old needs to rewrite the universe, or has redhat simply cheerfully packaged up junk to sell to companies that want to pay the big bucks for a "enterprise-grade" operating system?

Anvils from orbit. It's the only way to be sure.