OK, so we've seen how the third party viewers fail at supporting 64-bit Linux, but how about Linden Labs themselves? Surely they're the ones to support a seven-year-old CPU architecture in millions of people's computers across the world? Depressingly, they are full of fail in this regard too.
For this test, I used the same environment as for the Phoenix and Imprudence tests (see earlier posts) - Ubuntu 10.04 x86_64 with the given list of extra packages installed. As for the viewer itself, I chose to use
Snowstorm, Linden Labs' showcase bleeding-edge open source viewer project. After all, this would have the best chance of supporting modern Linux distros and a 64-bit CPU. Let's get the source!
Snowstorm is in a Mercurial repository, at the time of this test the tip was this commit:
changeset: 12269:d6f323402dd2
tag: tip
parent: 12267:3ecfc3800b83
parent: 12268:8ceebd3612f0
user: Tofu Linden
date: Sat Sep 18 11:18:13 2010 +0100
summary: merge storm-192
OK, let's try a non-standalone build. The command "./develop.py -m64" seems to configure the build correctly after downloading lots and lots of libraries. Looking good so far!
The build command "./develop.py -m64 build", however, chokes virtually immediately with the following error message:
In file included from /space/SecondLife/viewer-development/indra/llcommon/llthread.h:31,
from /space/SecondLife/viewer-development/indra/llimage/llimage.h:33,
from /space/SecondLife/viewer-development/indra/llimage/llimagej2c.h:30,
from /space/SecondLife/viewer-development/indra/llimagej2coj/llimagej2coj.h:30,
from /space/SecondLife/viewer-development/indra/llimagej2coj/llimagej2coj.cpp:28:
/space/SecondLife/viewer-development/indra/llcommon/llapr.h:46:29: error: apr_thread_proc.h: No such file or directory
/space/SecondLife/viewer-development/indra/llcommon/llapr.h:47:30: error: apr_thread_mutex.h: No such file or directory
/space/SecondLife/viewer-development/indra/llcommon/llapr.h:48:24: error: apr_getopt.h: No such file or directory
/space/SecondLife/viewer-development/indra/llcommon/llapr.h:49:24: error: apr_signal.h: No such file or directory
/space/SecondLife/viewer-development/indra/llcommon/llapr.h:50:24: error: apr_atomic.h: No such file or directory
It seems to be missing something to do with "apr", whatever that is, but I have no idea why the build system didn't pull it in with all the other libraries it just downloaded!
OK, let's try a standalone build. With this, the stench of fail doesn't take long to appear - merely the configure command "./develop.py -m64 --standalone" is enough to make the poor thing barf with this error:
CMake Error at cmake/GoogleBreakpad.cmake:5 (MESSAGE):
*TODO standalone support for google breakad is unimplemented
Call Stack (most recent call first):
llcommon/CMakeLists.txt:12 (include)
Well at least they're nice enough to say it's TODO, even if they spell "breakpad" wrong! Google breakpad is a crash reporter, so basically instead of just building with no crash reporting support they're stopping us building standalone at all. In what world is that a sensible decision?