Out in the Open
Part of the fun of trying new platforms to test specific software is getting past the initial hurdles. On OpenSolaris it was figuring out how to install Git, Subversion, GNU Make and GCC (which I easily found out how to do). On Haiku it was figuring out why the compile was failing and how I could fix it. On OpenSolaris the second time round it was figuring out why the compile was failing when it didn’t the first time. I have tried a few other platforms and never got anywhere with them due to problems that I could not figure out how to get past; on Minix I had trouble with the compiler failing and the configure script not working, on Hurd I had trouble with … well … getting it to boot. So wondering what challenges I would face I tried OpenBSD.
OpenBSD installed nicely, configured the network correctly (having internet connectivity is a big bonus) and already had GCC. However, getting Rakudo and Parrot turned out to be difficult. Git and Subversion are not installed by default and after wrestling with the package manager and trying to install the dependencies I gave up, tar’d up a fresh Rakudo/Parrot on my main machine and SFTP’d it across. Full of apprehension as to what would go wrong, I ran Parrot’s Configure.pl script. It worked and spat out a Makefile. So I ran make install-dev. It ran for a few seconds and then failed with:
Byte order is not compatible
It was Google to the rescue turning up this PerlMonks post. The problem was I had cloned, checkedout and tar’d the files on a 64-bit machine, so I repeated the process on my laptop, SFTP’d the new tar and Parrot compiled quite nicely.
So I cd’d back to Rakudo and ran perl Configure.pl since I had used the –prefix flag on Parrot to install it to parrot_install/ in the Rakudo directory it should have detected the parrot_config automatically but I got an error:
===SORRY!===
Parrot revision r41448 required (currently r0)
To automatically checkout (svn) and build a copy of parrot r41448,
try re-running Configure.pl with the '--gen-parrot' option.
Or, use the '--parrot-config' option to explicitly specify
the location of parrot_config to be used to build Rakudo Perl.
I wasn’t paying attention and thought it hadn’t found the parrot_config binary, so I tried again with perl Configure.pl --parrot-config=parrot_install/bin/parrot_config and it did the same thing. So after I actually read the error message I figured it out; r0?
Parrot compiles its SVN revision number into the parrot_config binary, but since SVN wasn’t installed on the box it defaulted it to r0. My simple hack was to do:
$ echo 0 > build/PARROT_REVISION
From Rakudo’s directory. This makes the configure script expect a Parrot with revision 0, which it thought I had. After that it created a makefile and Rakudo compiled as expected.
I got the spectests by tar’ing up the directory on my laptop and SFTP’ing it across.
4 hours later I got the results:
S02-magicals/config failed because OpenBSD isn’t a known OS. Now fixed.
S03-operators/arith #163 and S32-num/power #11 fail because, like OpenSolaris, OpenBSD thinks 1**Inf = NaN.
S29-context/sleep #2 and 4 also fail because OpenBSD sleeps for too long if ‘use Test’ is included. I think this is the result of system slowness.
> say sleep 3;
3.25350594520569
> use Test; say sleep 3;
21.6377711296082
What to try next? NetBSD?

