CURRENTLY NOT WORKING – WILL UPDATE WHEN FIXED. SOMETHING CHANGED.

Compile Firestorm on Ubuntu 20.04 (Focal Fossa) – A guide to compiling the Firestorm Viewer for Opensimulator. Official Firestorm guides are available on the Firestorm Wiki. However, they have not been updated for Linux in a few years. This guide shows how to successfully compile the viewer using Ubuntu Focal Fossa.

Compile Firestorm on Ubuntu 20.04- Folder structure

Let’s start with creating a sane directory tree structure. This structure can be changed, however, if it is, the paths used further down will require updating to match. The structure used throughout is:

~/src
└── firestorm
    ├── 3p-fmodstudio
    ├── fs-build-variables
    ├── phoenix-firestorm
    ├── pythod2-pip
    └── vorbis

The following lines assume you have no ‘src’ folder in your home directory. Adjust these instructions if this folder already exits.

cd ~/
mkdir src
cd src
mkdir firestorm
cd firestorm

Compile Firestorm on Ubuntu 20.04 – Install The Dependencies

Installing the tools in the Focal Fossa Repository

This is slightly different from installing the dependencies on previous versions of Ubuntu. Package names for python2 have been changed and in some cases culled utterly. Additionally, GCC-6 and G++6 are no longer in the repositories for Focal Fossa.

sudo apt install --install-recommends bison bzip2 cmake curl doxygen flex gdb m4 git moreutils pkg-config python2 python2-dev python2-all libpython-all-dev

Installing Python – Pip

Start by creating a new folder inside ‘firestorm to download the python-pip file into. Once the folder is created moved into the folder, download the python-pip file and run it.

cd ~/src/firestorm
mkdir python-pip
cd python-pip

curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py

sudo python2 get-pip.py

Install Autobuild

sudo pip2 install autobuild

Install GCC-6 and G++-6

To install GCC-6 and G++6 the repository for Ubuntu Bionic needs adding to the sources.list file. After installation, it is important to comment out or remove the entry. Leaving the bionic repository available can allow installation of python packages which break the Focal Fossa python packages.

Add the repositories to your sources.list file.

sudo nano /etc/apt/sources.list

Add the following lines to the bottom

deb http://gb.archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse
#added to install gcc-6

save and exit with

CTRL+O ENTER
CTRL+X

Install GCC-6 and G++6

sudo apt-get update
sudo apt-get install --install-recommends gcc-6 g++-6

IMORTANT – use nano like above to remove the or comment out the Bionic repository from the sources.list file. Once its changed save and do another update.

sudo nano /etc/apt/sources.list
#deb http://gb.archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse
#added to install gcc-6
CTRL + O ENTER
CTRL + X
sudo apt-get update

Update the GCC and G++ Alternatives.

Please make sure you replace any existing alternatives set. In most cases, it is enough to add GCC6, 8 and 9. Custom systems may need to add others back. Clear all existing GCC alternatives then add-in again. Failing to add GCC 8 and 9 back as alternatives may cause package manger issues.

update-alternatives --remove-all gcc 

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 6 --slave /usr/bin/g++ g++ /usr/bin/g++-6 --slave /usr/bin/gcov

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 8 --slave /usr/bin/g++ g++ /usr/bin/g++-8 --slave /usr/bin/gcov gcov /usr/bin/gcov-8

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9

update-alternatives --config gcc

On the menu select GCC6, just remember to set it back to 9 when the compilation is finished.

Install the rest of the required libraries

sudo apt install --install-recommends libalut-dev libapr1-dev libaprutil1-dev libatk1.0-dev libboost-all-dev libcairo2-dev libcollada-dom2.4-dp-dev libcurl4-openssl-dev libdbus-glib-1-dev libfreetype6-dev libgl1-mesa-dev libglu1-mesa-dev libgtk2.0-dev libjpeg-dev libjsoncpp-dev libnghttp2-dev libogg-dev libopenal-dev 
libpangox-1.0-dev libpng-dev libsdl1.2-dev libssl-dev libstdc++6 liburiparser-dev libvorbis-dev libx11-dev libxinerama-dev libxml2-dev libxmlrpc-epi-dev libxrender-dev zlib1g-dev 

Download the Firestorm build variables

cd ~/src/firestorm

git clone https://vcs.firestormviewer.org/fs-build-variables

Compile Firestorm on Ubuntu 20.04 – Download Vorbis

Credit for the vorbis file goes to Marissa Orloff. She states that when recompiling this the following changes were made: in ogg_vorbis build.sh in line 91 needs to be edited to remove LL_release. aclocal and automake need symlinks 1.15 > 1.16

cd ~/src/firestorm
mkdir vorbis
cd vorbis

wget https://fireandicegrid.net/downloads/ogg_vorbis-1.3.3-1.3.6.200930615-linux64-200930615.tar.bz2

md5 of the download: d888b4916006c28471b4f103854526c3

Download and compile Fmod

cd ~/src/firestorm

git clone https://vcs.firestormviewer.org/3p-libraries/3p-fmodstudio

Also, download Fmod studio API from the fmod website (you will need to make an account) and put the downloaded file into ‘~/src/firestorm/3p-fmodstudio’ folder. At the time of writing the latest version is 2.00.09.

Next edit the build-cmd.sh file (located inside the 3p-fmod) folder to match the version just download. The text below is a sample from the very top of the original at the time of writing

#!/usr/bin/env bash

FMOD_DOWNLOAD_BASE="http://192.168.1.115/dev/pkg/"
FMOD_ROOT_NAME="fmodstudioapi"
FMOD_VERSION="20101"
FMOD_VERSION_PRETTY="2.01.01"

This needs updating to match the version of Fmod Studio download, if that is 2.00.09 update accordingly

nano ~/src/firestorm/3p-fmodstudio/build-cmd.sh
#!/usr/bin/env bash

FMOD_DOWNLOAD_BASE="http://192.168.1.115/dev/pkg/"
FMOD_ROOT_NAME="fmodstudioapi"
FMOD_VERSION="20009"
FMOD_VERSION_PRETTY="2.00.09"

Save the changes and exit then compile 3p-fmod

cd ~/src/firestorm/3p-fmodstudio
autobuild build -A 64 --all
autobuild package -A 64

The output at the end will look similar to:

wrote  /home/username/src/firestorm/3p-fmodstudio/fmodstudio-2.00.09-linux64-201822306.tar.bz2
md5    30c4b8096b6268617bcdc2f6ee6b36d3

The path will be different as it will match your system. Make a note of the information; it is needed later.

Compile Firestorm on Ubuntu 20.04 – Download and Compile the Firestorm source code

cd ~/src/firestorm
git clone https://vcs.firestormviewer.org/phoenix-firestorm

A little preparation work

cd ~/src/firestorm/phoenix-firestorm
source ../fs-build-variables/convenience Release

export AUTOBUILD_VARIABLES_FILE=~/src/3rdParty/fs-build-variables/variables

Now a couple of edits are required to the autobuild.xml. These are done using ‘autobuild installables edit’.

autobuild installables edit item platform=platform=linux64 hash= url=file////

It is easiest to prepare these in a text editor. Use the information at the end of the 3p-fmod compile to create a line similar to the one below (the hash will be different). If your system is using a different path that will also be different.

autobuild installables edit fmodstudio platform=linux64 hash=30c4b8096b6268617bcdc2f6ee6b36d3 url=file:////~/src/firestorm/3p-fmodstudio/fmodstudio-2.00.09-linux64-201822306.tar.bz2

Do the same for the vorbis file downloaded earlier (the hash will be the same this time).

autobuild installables edit ogg_vorbis platform=linux64 hash=d888b4916006c28471b4f103854526c3 url=file:////~/src/3rdParty/vorbis/ogg_vorbis-1.3.3-1.3.6.200930615-linux64-200930615.tar.bz2

Configure and then compile

If you wish to add a channel name to the viewer such as the name of your grid change “MyChannelName” to what ever you like.

autobuild configure -A 64 -c ReleaseFS_open -- --package --fmodstudio  --chan MyChannelName --clean
autobuild build -A 64 -c ReleaseFS_open --no-configure

A couple of possible variations on this are:

--no-opensim (removes OS support and you will get an SL viewer only)

--avx (build with AVX CPU instruction support (should be safe as long as your CPU supports that instruction set)

Compile Firestorm on Ubuntu 20.04 – The packaged files

All that’s left is to copy and extract the tarball. Look inside the following folder:

~/src/firestorm/phoenix-firestorm/build-linux-x86-64/newview

Inside it, there will be a file which ends with .tar.xz. That file is the compressed tarball for the viewer. Don’t forget to subscribe to the RSS feed for more updates like this one.

This article has 8 comments

  1. Froufrou Reply

    Excelent tutorial, except some parts got me a little bit confused. But I saw some tips that might be of help on your page, like the FMOD autobuild procedure

    cd ~/src/firestorm/3p-fmodstudio
    autobuild build -A 64 –all
    FMOD_RESULT=`autobuild package -A 64`
    FMOD_URL=`echo $FMOD_RESULT | cut -d ‘ ‘ -f 4`
    FMOD_HASH=`echo $FMOD_RESULT | cut -d ‘ ‘ -f 6`

    cd ~/src/phoenix-firestorm
    autobuild installables edit fmodstudio platform=linux64 hash=${FMOD_HASH} url=file://${FMOD_URL}

    And extracting the tarbal:
    cd ~/src/phoenix-firestorm/build-linux-x86_64/newview
    FS_TARBAL=`ls Phoenix*.tar.xz`
    tar -vxf ${FS_TARBAL}
    cd `basename ${FS_TARBAL} .tar.xz`
    ./install.sh

    Credits too:
    https://banintel.wordpress.com/2020/08/15/compile-firestorm-on-ubuntu-20-04/

  2. Connie Reply

    Going through this now, but I should warn you python2-all isn’t in Ubuntu 20.04 – there is a python-all (which says it pulls in all Python 2 packages) so I assume that’s the right one.

  3. Connie Reply

    This I assume should be “firestorm” instead of 3rdParty:

    export AUTOBUILD_VARIABLES_FILE=~/src/3rdParty/fs-build-variables/variables

    And this:

    autobuild installables edit fmodstudio platform=linux64 hash=30c4b8096b6268617bcdc2f6ee6b36d3 url=file:////~/src/firestorm/3p-fmodstudio/fmodstudio-2.00.09-linux64-201822306.tar.bz2

    The shell doesn’t expand ~ in this context, I’d just use $HOME, eg:

    autobuild installables edit fmodstudio platform=linux64 hash=30c4b8096b6268617bcdc2f6ee6b36d3 url=file:///$HOME/src/firestorm/3p-fmodstudio/fmodstudio-2.00.09-linux64-201822306.tar.bz2

    Still working through it, the guide is great so far, there is no way I’d have figured this out myself…

  4. Connie Reply

    (likewise this: autobuild installables edit ogg_vorbis platform=linux64 hash=d888b4916006c28471b4f103854526c3 url=file:///$HOME/src/firestorm/vorbis/ogg_vorbis-1.3.3-1.3.6.200930615-linu
    x64-200930615.tar.bz2 should replace the Vorbis line you add, this one both has 3rdParty *and* ~!)

  5. Connie Reply

    The build configuration command failed because it couldn’t find Python, as the initial install of Python doesn’t set it as default, so this fixed that:

    sudo update-alternatives –install /usr/bin/python python /usr/bin/python2.7 1

  6. Connie Reply

    OK, so you’re probably getting sick of me now 😉 Anyway it doesn’t compile. What I get are errors along these lines:

    /home/nicky/source/p64_3p-boost/boost/libs/regex/build/../src/icu.cpp:480: undefined reference to `u_charType_48′

    (I don’t know who nicky is? That path makes no sense….)

    The one thing I can think of, other than that, is that all the missing symbols seem to be related to icu, which is version 6.6 on Ubuntu 20.04. So is there a missing option to set the ICU version during configuration?

Leave a Comment

Your email address will not be published. Required fields are marked *