Compile Firestorm on Ubuntu 22.04

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

Compile Firestorm on Ubuntu 22.04 (Focal Fossa) – A guide to compiling the Firestorm Viewer for Opensimulator. Official Firestorm guides are available on the Firestorm Wiki. This guide is currently identical to the official guide.

Compile Firestorm on Ubuntu 20.04- Folder structure

Let’s start with creating a sane directory tree structure. It can be different, 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

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

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 libgl1-mesa-dev libglu1-mesa-dev libpulse-dev build-essential python3-pip git libssl-dev libxinerama-dev libxrandr-dev

Installing CMake

“Cmake version 3.18 is required but not available in Ubuntu’s repositories, we have to build it from source”

wget https://github.com/Kitware/CMake/releases/download/v3.18.0/cmake-3.18.0.tar.gz
tar xvf cmake-3.18.0.tar.gz
cd cmake-3.18.0
./bootstrap --parallel=$(nproc) --prefix=/usr && make -j $(nproc) && sudo make install

Install Autobuild

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.

pip3 install --upgrade pip
pip3 install git+https://bitbucket.org/lindenlab/autobuild.git#egg=autobuild

Download the Firestorm build variables

cd ~/src/firestorm

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

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.02.07.

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. Additionally FMOD_DOWNLOAD_BASE=”http://192.168.1.115/dev/pkg/” needs changing to read as localhost.

nano ~/src/firestorm/3p-fmodstudio/build-cmd.sh
FMOD_DOWNLOAD_BASE="localhost/dev/pkg/"
FMOD_ROOT_NAME="fmodstudioapi"
FMOD_VERSION="20207"
FMOD_VERSION_PRETTY="2.02.07"

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 22.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/firstorm/fs-build-variables/variables

Now a couple of edits to the autobuild.xml, done with ‘autobuild installable 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. Also please note that for a system where this has been set up before ‘edit’ use edit, like the example below; however for first-time setup, use add like the one below that.

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

OR use ‘add’ if this is a first-time setup

autobuild installables add fmodstudio platform=linux64 hash=30c4b8096b6268617bcdc2f6ee6b36d3 url=file:////~/src/firestorm/3p-fmodstudio/fmodstudio-2.02.05-linux64-220221229.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 whatever 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 22.04 – The packaged files

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.

Related Articles

Related Post

13 thoughts on “Compile Firestorm on Ubuntu 22.04

  1. 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. 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. 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. (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. 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. 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?

    1. I am sorry Connie, at the time I wrote this it worked but I have had no time to workout what changed since. I thought I updated the title of this to currently not working. I will do so now.

      1. Thanks, I will continue to try, might be because the one area I’m diverging from the instructions is getting a specific version of the source code (git clone -b Firestorm_6.3.9_Release https://vcs.firestormviewer.org/phoenix-firestorm), but that shouldn’t make any difference, unless the source is broken somehow, which would be weird.

        The other issues I mentioned though are definitely worth doing. And your instructions closely match the other set of instructions given minus the issues I mentioned, so we’re definitely on the right track.

        Thanks for your guide, wouldn’t have gotten this far without it.

        1. @Connie Maybe Try not to diverge from the instructions than. Firestorm doesn’t release versions that don’t work. I suggest starting over from start till finish. Remove all current downloaded files on your system just to make sure nothing is interfering. After you got your first compiled version running. Than you can start experimenting on your own.

          1. Well the entire point of downloading a specific version of Firestorm was to compile something that was known to work. In theory downloading “the latest” means downloading bugs and possibly a non-compilable version.

            Nonetheless, I started again from scratch, downloaded the default, and… it failed, for the same reasons. And the more I look at it, the more it’s just not possible any of you were able to compile it on a fresh Ubuntu 20.04 install, because right now the current versions of Firestorm download .a files (the Boost libraries) that absolutely definitely contain bindings for version 4.8 of ICU (which are hard coded.) And Ubuntu 20.04 doesn’t contain that version even as an option. My *guess* is that you’ve been upgrading your Ubuntu installs from an older version that had the 4.8 version installed. It’s the only explanation I can find for it working.

            So I’m kinda at a loss here. I know the problem. I know all I need to do is point the build process at the 4.8 ICU version having built it myself, but… the Firestorm build process is convoluted and I have absolutely no idea what files I’m supposed to modify to tell it to add that library.

            Maybe I’ll just give up and create a Ubuntu 16.04 LXC image to do it, but that seems like cheating and not solving the underlying problem.

  7. I used a fresh Ubuntu 20.04 install to compile one of the latest FS releases not longer than a week ago. How do you check the ICU version?

Leave a Reply

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