Building Firestorm in 64-bit Debian Buster
This page describes all necessary steps to build the Firestorm viewer for Linux, on Debian 10, using the updated build infrastructure introduced with Linden Lab's project Alex Ivy. It assumes you are using Debian 10, that your normal user has sudo privileges and that all standard updates have been applied using apt *upgrade*
Minimum hardware required: At least 4GB RAM with 4GB+ swap, a modern dual-core CPU and 32GB available HDD space. Minimum recommended: 8GB or more RAM, CPU with 4 or more real cores and 32GB available HDD space.
Install required development tools
This is needed for compiling any viewer based on the Linden Lab open source code and only needs to be done once.
All installations are done with default settings (unless told explicitly) - if you change that, you're on your own!
The required tools, some of which may already be installed, are:
make | cmake | g++ | gdb | git | python-pip
sudo apt install --install-recommends make cmake g++ gdb git python-pip
(the –install-recommends flag tells apt to install all packages recommended by each named package.)
Install Required Libraries
These libraries may be included with your distribution, and some may already be installed:
libGL.so (libgl1-mesa-dev) | LibGLU.so (libglu1-mesa-dev) | libstdc++.so.6 (libstdc++6) | |
libX11.so (libx11-dev) | libxinerama-dev | libxml2.so (libxml2-dev) | libXrender.so (libxrender-dev) |
sudo apt install --install-recommends libgl1-mesa-dev libglu1-mesa-dev libstdc++6 libx11-dev libxinerama-dev libxml2-dev libxrender-dev
Install Autobuild
Autobuild is a Linden Lab resource that automates the configure and build processes.
sudo pip install --upgrade pip sudo pip install autobuild
This will install autobuild and add a link in the exec path.
Set up your source code tree
Typically, source code is stored in your home directory, in a subdirectory called src. Your home directory shound have at least 32GB available before downloading the source code.
mkdir ~/src #This may throw an error if the directory already exists cd ~/src
This document will assume that all downloaded code will go into this src directory.
Setup viewer build variables
In order to make it easier to build collections of related packages (such as the viewer and all the library packages that it imports) with the same compilation options, Autobuild expects a file of variable definitions. This can be set using the environmenat variable AUTOBUILD_VARIABLES_FILE.
cd ~/src git clone https://vcs.firestormviewer.org/fs-build-variables source fs-build-variables/convenience Release export AUTOBUILD_VARIABLES_FILE=$HOME/src/fs-build-variables/variables
Clone the viewer
There are several repositories available, in but the one wea re after is the development repository. You can grab all the sources if you wish, but but keep in mind that each FS source requires around 110MB initially and around 4.3GB after the binaries have been built, plus possible compiling overhead.
git clone https://vcs.firestormviewer.org/phoenix-firestorm
This can take a bit, it's a rather large download.
Prepare third party libraries
Most third party libraries needed to build the viewer will be automatically downloaded for you and installed into the build directory within your source tree during compilation. Some need to be manually prepared and are not normally required when using an open source configuration (ReleaseFS_open).
FMOD Studio using Autobuild
If you want to use FMOD Studio to play sounds within the viewer, you will have to download your own copy. FMOD Studio can be downloaded here (requires creating a free account to access the download section).
cd ~/src git clone https://vcs.firestormviewer.org/3p-libraries/3p-fmodstudio
- After you have cloned the repository, copy the downloaded FMOD Studio installer file to ~/src/3p-fmodstudio
- If you downloaded a different version of FMOD Studio that is currently used in the viewer, you will have to modify the file build-cmd.sh in the root of the repository. Right at the top, you find the version number of FMOD Studio you want to package (one short version without separator and one long version). Change these values to the version you downloaded:
FMOD_VERSION="20007" FMOD_VERSION_PRETTY="2.00.07"
cd ~/src/3p-fmodstudio autobuild build -A 64 --all autobuild package -A 64
Near the end of the output you will see the package name written and the md5 hash below it:
wrote !/src/3p-fmodstudio/fmodstudio-2.00.07-linux64-200912220.tar.bz2
md5 c3f696412ef74f1559c6d023efe3a087
where {version#} is the version of FMOD Studio (like 2.00.03) and {build_id} is an internal build id of the package.
cd ~/src/phoenix-firestorm
Copy the FMOD Studio path and md5 value from the package process into this command:
autobuild installables edit fmodstudio platform=linux64 hash=<md5 value> url=file:///<fmodstudio path>
For example:
autobuild installables edit fmodstudio platform=linux64 hash=c3f696412ef74f1559c6d023efe3a087 url=file:///!/src/3p-fmodstudio/fmodstudio-2.00.07-linux64-200912220.tar.bz2
Configuring the Viewer
cd ~/src/phoenix-firestorm autobuild configure -A 64 -c ReleaseFS_open
This will configure Firestorm to be built with all defaults and without third party libraries.
autobuild configure -v -c ReleaseFS_open
Configuration switches
There are a number of switches you can use to modify the configuration process. The name of each switch is followed by its type and then by the value you want to set.
- -A <architecture> sets the target architecture, that is if you want to build a 32bit or 64bit viewer (32bit is default if omitted).
- –fmodstudio controls if the FMOD Studio package is incorporated into the viewer. You must have performed the FMOD Studio installation steps above for this to work.
- –package makes sure all files are added to a compressed tar file for easy distribution and storage.
- –chan <channel name> lets you define a custom channel name for the viewer
- -LL_TESTS:BOOL=<bool> controls if the tests are compiled and run. There are quite a lot of them so excluding them is recommended unless you have some reason to need one or
more of them.
Examples:
- To build a 64bit viewer with FMOD Studio and to create an installer package, run this command in the Windows command window:
autobuild configure -A 64 -c ReleaseFS_open -- --fmodstudio --package --chan MyViewer -DLL_TESTS:BOOL=FALSE
- To build a 64bit viewer without FMOD Studio and without installer package, run this command:
autobuild configure -A 64 -c ReleaseFS_open -- --chan MyViewer -DLL_TESTS:BOOL=FALSE
Building the viewer
Make sure you include the same architecture parameter and switches (except clean) you used while configuring the viewer:
autobuild build -A 64 -c ReleaseFS_open
Now, sit back, read War and Peace, calculate PI to 50 places, tour the country, whatever you desire. Compiling can take quite a bit of time depending on your computer's processing power.
NOTE: It is possible to use autobuild to do both the configure step (only needed once) and the build step with one command (autobuild build -A 64 -c ReleaseFS_open [– switches] . For clarity, they are mentioned separately.
Running your newly built viewer
Running from a menu item
Create the desktop launcher
cd ~/src/phoenix-firestorm-lgpl/build-linux-x86_64/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-lgpl/build-linux-x86_64/newview/packaged ./firestorm
Your file browser/file manager many not know how to execute a script. Check the settings for your file browser. In Nautilus, for example, open Preferences > Behavior tab, change the action for executable text files to either Run or Ask.
"Installing" the viewer
Copy or move the contents of ~/src/phoenix-firestorm/build-linux-x86_64/newview/packaged to a place that can be access by the PC you want to install Firestorm on. Cloud-based storage, NAS or removable media would do.
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.
- Self-Compilers peer supportFirestorm Self Compilers is free to join, fellow self-compilers may be able to offer assistance.
- IRC: The #phoenixviewer-dev channel is the best place to look for solutions.
A lot of self-compilers and project developers hang out there and are ready to help you.
- Jira:JIRA may contain resolved tickets.
Search using the error you encountered.
- Included documentation: In the Firestorm root folder are several “README” documents. You should make yourself familiar with their content, even if they appear to be out of date.
If you found a procedural error in this document, please let us know in as much detail as you can, either contact the author (preferred) or discuss on IRC.
Common Issues/Bugs/Glitches And Solutions
- Missing libraries/applications/packages This may occur if you did not or could not install the listed packages. The packages do exist in the default Debian repositories, so make sure you did not disable those. If you find that a library or application is in a different package for your system, contact the team with the name of the library or application, the name of its package and your Linux OS so that information can be checked and added here.
- Delayed sounds Some users have noted that OpenAL plays sounds from the viewer up to 20 seconds after they are triggered. There is no solution to this via the viewer, but there may be some solutions on the Internet
- No Sounds The viewer will try to use whatever sound service you have running, but might need a little coaxing. Read through the firestorm script inside the program folder, you will find various commended options. Uncommenting one or more may help restore sound.
- Voice Won't Connect It was observed in testing that voice would not connect unless “No Device” was chosen for the Input device (Preferences ⇒ Sound & Media ⇒ Voice ⇒ Audio Device Settings). This was resolved by replacing Firestorm/lib/libvivoxal.so.1 with a copy from release.