Firestorm Ubuntu Builds
This procedure is for building a 64-bit viewer on a 64-bit Kubuntu system. It was originally provided and verified by Manwa Pastorelli. This version was extended and tested with Linux Mint 13 for x86_64, and should work with Ubuntu 12.04 LTS as well. It is current as of Firestorm 4.3.0.30616.
Establish your programming environment
Install these packages. This includes everything that is mentioned on the SL Wiki for compiling on Linux.
bison | build-essential | cmake | flex | freeglut3 |
freeglut3-dev | g++-multilib | google-mock | libalut-dev | libapr1-dev |
libaprutil1-dev | libberkeleydb-perl | libboost-all-dev | libc-ares-dev | libc6-dev |
libc6-dev-i386 | libdb-dev | libdbus-glib-1-dev | libgl1-mesa-dev | libglu1-mesa-dev |
libglui2c2 | libgstreamer-plugins-base0.10-dev | libgstreamer0.10-dev | libgtk2.0-dev | libjpeg62-dev |
libogg-dev | libopenal-dev | libopenjpeg-dev | libpng12-dev | libsdl1.2-dev |
libssl-dev | libstdc++6 | libvorbis-dev | libX11-dev | libxml2-dev |
libxmlrpc-epi-dev | libxmlrpc-epi0 | libxrender-dev | mercurial | zlib1g-dev |
sudo apt-get install bison build-essential cmake flex freeglut3 freeglut3-dev g++-multilib \ google-mock libalut-dev libapr1-dev libaprutil1-dev libberkeleydb-perl libboost-all-dev \ libc-ares-dev libc6-dev libc6-dev-i386 libdb-dev libdbus-glib-1-dev libgl1-mesa-dev \ libglu1-mesa-dev libglui2c2 libgstreamer-plugins-base0.10-dev libgstreamer0.10-dev \ libgtk2.0-dev libjpeg62-dev libogg-dev libopenal-dev libopenjpeg-dev libpng12-dev \ libsdl1.2-dev libssl-dev libstdc++6 libvorbis-dev libX11-dev libxml2-dev libxmlrpc-epi-dev \ libxmlrpc-epi0 libxrender-dev mercurial zlib1g-dev
Try installing these packages. They may not exist in your version of Linux; if not, try building anyway, as other packages may include the parts you need.
libglui2c2-dev | libstdc++6-4.6-dev | libxmlrpc |
sudo apt-get install libglui2c2-dev libstdc++6-4.6-dev libxmlrpc
For Linux Mint and likely Ubuntu, these additional packages are needed:
libqt4-core | libqt4-gui | libqt4-dev | libhunspell-dev | qt4-qmake | autoconf | libtool |
sudo apt-get install libqt4-core libqt4-gui libqt4-dev libhunspell-dev qt4-qmake autoconf libtool
Get other precompiled packages
Edit your package source list:
sudo kate /etc/apt/sources.list
Add the following lines:
# Openmetaverse repo deb http://ppa.launchpad.net/openmetaverse/ppa/ubuntu lucid main
Save the file.
Add the package signing keys in a terminal window:
gpg --keyserver hkp://keyserver.ubuntu.com --recv-key 0x50A40F50 gpg --export 0x50A40F50 | sudo apt-key add -
Get the remaining packages:
sudo apt-get update sudo apt-get install glh-linear libndofdev-dev
Set up your source code tree
Plan your directory structure ahead of time. If you are going to be producing changes or patches you will be cloning a copy of an unaltered source code tree for every change or patch you make, so you might want to have all this work stored in its own directory. If you are a casual compiler and won't be producing any changes, you can use one directory. For this document, I will assume ~/src.
Download and configure Autobuild from Linden Lab
cd ~/src hg clone http://hg.secondlife.com/autobuild PATH="$PATH:~/src/autobuild/bin" # you should add this to your .profile, too
Download the Firestorm source tree
cd ~/src hg clone http://hg.phoenixviewer.com/phoenix-firestorm-lgpl phoenix-firestorm
This can take a bit, it's a rather large download.
Compile the Viewer
Building a standalone copy now requires more than the SL Wiki suggests. Several items must be downloaded and compiled, since there are no packages available currently in K/Ubuntu.
Build Google Breakpad
cd ~/src hg clone https://bitbucket.org/tonyasouther/3p-google-breakpad-64 cd 3p-google-breakpad-64 autoreconf -i # fixes a nasty compile issue autobuild build # this will error out, but the needed parts will have been built by then sudo cp -aR stage/include/google_breakpad /usr/local/include sudo cp -aR stage/lib/release/* /usr/local/lib
Build ndphysicsstub
cd ~/src hg clone https://bitbucket.org/NickyD/ndphysicsstub cd ndphysicsstub cmake -G 'Unix Makefiles' make sudo make install
Build jsoncpp
Note: You must build jsoncpp from source. The one in the libjsoncpp-dev package won't work.
cd ~/src hg clone https://bitbucket.org/NickyD/jsoncpp cd jsoncpp cmake -G 'Unix Makefiles' make sudo make install
Build GLOD
cd ~/src hg clone https://bitbucket.org/tonyasouther/llglod-64 cd llglod-64 autobuild build sudo cp -aR stage/include/glod /usr/local/include sudo cp -aR stage/lib/release/* /usr/local/lib
Build colladadom
cd ~/src hg clone https://bitbucket.org/tonyasouther/colladadom-64 cd colladadom-64 autobuild build sudo cp -aR stage/include/collada /usr/local/include sudo cp -aR stage/lib/release/* /usr/local/lib
Build llqtwebkit
Note: You must build this from source, as well. The one in the openmetaverse repository is too old.
cd ~/src hg clone https://bitbucket.org/tonyasouther/llqtwebkit-64 cd llqtwebkit-64 autobuild build sudo cp stage/include/llqtwebkit.h /usr/local/include sudo cp stage/lib/release/* /usr/local/lib
Build libcurl-cares
Note: You must build this from source, as well. The one in the openmetaverse repository is too old.
cd ~/src hg clone https://bitbucket.org/tonyasouther/3p-curl-64 cd 3p-curl-64 autobuild build sudo cp -aR stage/include/curl /usr/local/include sudo cp -aR stage/lib/lib* /usr/local/lib
Build Firestorm
Note: Currently, the build directory will be build-linux-i686, even when building a 64-bit build is requested.
autobuild build -c ReleaseFS_open -- -DSTANDALONE:BOOL=ON -DWORD_SIZE=64 # add --clean if you want to start fresh
Running your newly built viewer
Running from a menu item
cd ~/src/phoenix-firestorm/build-linux-i686/newview/packaged/etc/ ./refresh_desktop_app_entry.sh
Then open your applications menu and look in the Internet or Network branch for the Firestorm launcher.
Running from command line or file browser
cd ~/src/phoenix-firestorm/build-linux-i686/newview/packaged ./firestorm
Troubleshooting
Handling problems
If you encounter errors or run into problems, please first double check that you followed the steps correctly.
One typo can break it. Then, check whether someone else already had the same issue. A solution might be known already.
- Firestorm Self-Compilers group:Firestorm Self Compilers is free to join, fellow self-compilers may be able to offer assistance.
- Jira:JIRA may contain resolved issues related to the error you're seeing.
Search using the error you encountered. Or create a new issue to report an error in this document, or if a code change causes a build process to fail.
- Included documentation: In the Firestorm program directory are several “README” documents. You should make yourself familiar with their content, even if they appear to be out of date. Also, in the firestorm script file are comments and options you can adjust.
Common Issues/Bugs/Glitches And Solutions
- Missing libraries This may occur if you did not install the packages listed.
I have tried to cover all of them in writing this document.