[rescue] SGI Indigo2 & IRIX 6.5

Adam Kropelin akropel1 at rochester.rr.com
Mon Dec 1 18:05:23 CST 2008


Jonathan C. Patschke wrote:
> If a given piece of software is so shoddy that it can only run on one
> or two implementations of POSIX, barring some low-level dependency (a
> device driver), it's broken software.  If it can run on Linux and it
> can run on BSD, there are very few technical reason why it can't run
> elsewhere.

True, but it does require a certain degree of determination and willingness 
to conform to the mindset of multiple platforms all at once. (And having a 
good supply of new curse words handy at all times doesn't hurt). So it's a 
wee bit of an oversimplification to paint single platform apps with the 
"shoddy" brush.

I maintain a small open source project which I inherited, and it supports a 
wide range of platforms, where "wide" means all the BSDs, several Linux 
flavors, OS X, IRIX, AIX, Solaris, HP-UX, and yes, even Win32. All of these 
are supported going back several releases, roughly 10 years, give or take. 
Basic requirements for a platform to be supported are vaguely working 
pthreads (see BSD from a few years ago for a nice example of "vaguely") and 
USB if you want to use it...which almost everyone does these days.

It is, to say the least, a challenge. The amount of autoconf bullcrap 
required to sort out what library $THEY decided to hide nanosleep in on 
your platform, for example. Or if you really want to get me mad, remind me 
about the time someone contributed a seemingly simple patch that required 
gethostbyname(). Time to integrate and test patch on two sane (I'll not 
feed the flamewar by saying which) platforms: 10 minutes. Time required to 
sort out autoconf hackery to deal with every other *freaking* platform that 
made up their own version of the function with a different number of 
arguments: Long enough to make Adam something-something.

Besides the autoconfiggery to get the darn thing to *build* you also have 
lots of other time sinks such as... Build system: What version of make does 
your platform have? Is it GNU make, BSD make, or some balogna make-a-like? 
Compiler: I dare you to get a -Wall clean build across a decade of 
compilers and platforms on a non-trivial project. Packaging: What do binary 
packages look like on your platform and how do you make them? Does it 
require crazy GUI-centric tools that you break in every release? (I'm 
looking at you, OS X.) System integration: How is daemon management 
handled? How should a daemon interact with your platform to...say, initiate 
and hook a system shutdown? Every platform does it differently and feels 
free to change it in every release. Bugs: Every platform has them, even 
$BESTOSEVER.

So I agree there's no technical reason an intelligently-written software 
package (and I'm not saying mine always meets that qualification) cannot 
run on any platform with the basic infrastructure it requires. However, 
there is an ach-eee-double-hockey-sticks lot of *practical* reasons someone 
might choose not to. Keeping their sanity, for one.

But yeah, it's totally doable and it's not like I would have a great social 
life anyway...
--Adam



More information about the rescue mailing list