At my current workplace, I'm working on OpenFrame, an application framework. Our two main testing platforms were Linux/i386 and Darwin/ppc, and we wanted to know how portable the code really was. At the end of last week, I tested OpenFrame on 17 varied platforms and it worked fine on all of the following: Caldera OpenLinux 3.1 / i386, Darwin 5.1 / PowerPC, Debian Linux 2.2 / Alpha, Debian Linux 2.2 / i386, Debian Linux 2.2 / PowerPC, Debian Linux 2.2 / Sparc, FreeBSD 4.4 / i386, Mandrake Linux 8.1 / i386, NetBSD 1.5.1 / Alpha, RedHat Linux 7.1 / Itanium, RedHat Linux 7.2 / i386, SunOS 5.8 / Sparc, SuSE Linux 7 / i386, SuSE Linux 7 / S/390, Tru64 5.1a / Alpha, TurboLinux 6.5 / i386, and Slackware 8.0 / i386. That's a lot of platforms (and a lot of architectures!), so how did I do this?
There are services on the Net which provide remote access (usually via ssh) to a wide range of architectures for testing and porting purposes. The three services I used are: SourceForge Compile Farm (mostly Linux boxes), Compaq Test Drive (mostly Alpha boxes, although also Itanium) and IBM Linux Community Development System (S/390). Check them out, they are all pretty cool, and more importantly, free. It normally takes a day or so to gain access to the systems and once you're in, each computer in the farm uses NFS-ed home directories to make porting easier.
However, all these systems came with old versions of Perl, and more importantly, I didn't have permissions or general Net access to install extra modules. OpenFrame strictly follows the "don't reinvent the wheel" philosophy, which is a bit of a pain sometimes (we have a pretty large list of prerequisite modules) but good in general. So, I built a local copy of a recent version of Perl in my home directory on my local machine (with
Of course, I was only able to achieve this as I have spent the past couple of weeks adding a comprehensive test suite to OpenFrame (189 tests atm), including one which forks a standalone preforking HTTP server and then tries to connect to it. If OpenFrame passes the tests, we can be sure that all of it works.
This was relatively painless apart from taking up some of my time. Automating it could actually be possible. However, the thing that amazed me is that OpenFrame worked without patching on all of those platforms - Perl is pretty portable and using this method, so could your code...
A big thanks out to the guys operating these services. You guys rock!