This fork is being maintained by a viewer developer using Arch linux and opensim.
To configure follow the following instructions.
-
Don't even think about this if your PC has less than 16 GB of ram; 32 GB ram plus 32 GB swap is highly recommended.
-
Find a partition with at least 36 GB free (read: 64 GB), and create a new directory in it where you will put everything related to this viewer (not including an optional ccache, which should have a size of another 32 GB, but can be put in a different partition of course). For example:
$ df -H /opt
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/NVME1T1-opt 580G 348G 203G 64% /opt
$ export PROJECTBASE=/opt/secondlife/viewers/firestorm
$ mkdir -p "$PROJECTBASE"
This directory must be writable by you; we're not going to do this as root.
As I have over 200 GB free in this partition, I also add my ccache here:
$ export CCACHE_DIR=/opt/ccache
$ sudo mkdir -p "$CCACHE_DIR"
$ sudo chown yourname "$CCACHE_DIR"
$ sudo pacman -S --needed ccache
$ ccache --max-size 32
- Change directory into it and clone the repository into
phoenix-firestorm-git:
$ cd "$PROJECTBASE"
$ git clone https://github.com/AlericInglewood/phoenix-firestorm.git phoenix-firestorm-git
$ export REPOBASE="$PROJECTBASE/phoenix-firestorm-git"
We also set REPOBASE to that directory, so that now $REPOBASE/indra exists.
- Create a virtual environment for python3 and install autobuild and llsd.
$ python3 -m venv "$PROJECTBASE/venv"
$ export PATH="$PROJECTBASE/venv/bin:$PATH"
$ pip install autobuild llsd
Note that pip in the last line should run $PROJECTBASE/venv/bin/pip because of the added path to PATH
and likewise which autobuild now should return $PROJECTBASE/venv/bin/autobuild.
- Clone the repository
fs-build-variables:
$ cd "$PROJECTBASE"
$ git clone https://github.com/AlericInglewood/fs-build-variables.git
$ export AUTOBUILD_VARIABLES_FILE="$PROJECTBASE/fs-build-variables/variables"
$ export AUTOBUILD_ADDRSIZE=64
- [Optional] Download and build the
3p-fmodstudiopackage.
We start with cloning the repository 3p-fmodstudio into 3p-fmodstudio-git:
$ cd "$PROJECTBASE"
$ git clone https://github.com/FirestormViewer/3p-fmodstudio 3p-fmodstudio-git
$ cd 3p-fmodstudio-git
$ grep '^FMOD_VERSION_PRETTY' build-cmd.sh
Open the file called build-cmd.sh and look at the sixth line down, it begins with FMOD_VERSION_PRETTY=.
This is the version of the API you need to download.
The FMOD Studio API can be downloaded here (requires creating a free account to access the download section).
Register and login as needed, then go to https://www.fmod.com/download#fmodengine . Click FMOD Engine to expand the section if it isn't already.
Click the button representing the required version, then click the Download link for the Linux file.
Copy that file to the 3p-fmodstudio-git directory.
Next, build 3p-fmodstudio and create an autobuild package:
$ cd "$PROJECTBASE/3p-fmodstudio-git"
$ export AUTOBUILD_BUILD_ID=$(date +%Y%m%d%H%M)
$ AUTOBUILD_CONFIG_FILE="autobuild.xml" autobuild build --all
$ AUTOBUILD_CONFIG_FILE="autobuild.xml" autobuild package
This will end with a line saying it wrote the package, for example something similar to:
wrote /opt/secondlife/viewers/firestorm/3p-fmodstudio-git/fmodstudio-2.03.07-linux64-202507010106.tar.bz2
Lets store this path in an environment variable and store the md5sum of the file in another environment variable:
$ FMODPKG=$PROJECTBASE/3p-fmodstudio-git/fmodstudio-$FMOD_VERSION_PRETTY-linux64-$AUTOBUILD_BUILD_ID.tar.bz2 # Use the actual path that you got.
$ unset AUTOBUILD_BUILD_ID
$ FMODMD5=$(md5sum $FMODPKG | sed -e 's/ .*//')
$ echo $FMODMD5
Make sure that FMODMD5 contains a sensible value (ie, set the FMOD_VERSION_PRETTY environment variable first).
Finally add the just installed fmodstudio as a package to a newly created my_autobuild.xml, using autobuild:
$ cd "$REPOBASE"
$ cp autobuild.xml my_autobuild.xml
$ export AUTOBUILD_CONFIG_FILE="$REPOBASE/my_autobuild.xml"
$ autobuild installables edit fmodstudio platform=linux64 hash="$FMODMD5" url="file://$FMODPKG"
- Remove the glib and pcre packages.
On linux the libmedia_plugin_cef.so plugin depends on the system fontconfig library, which in turn depends
on the system glib-2.0 library. We can't use the packaged libglib-2.0.a because that leads to an assert
while loading the libmedia_plugin_cef.so plugin (if we link with the provided libpcre.a that is, otherwise
you just get an undefined symbol pcre_free error).
In order to simply use the system provided glib-2.0 library, remove the glib-2.0 package. Also remove the pcre package, as glib-2.0 is the only one that was depending on that.
$ autobuild uninstall glib pcre
- Configure the viewer.
By now you should have the following environment variable set:
# Change to whatever you used:
export PROJECTBASE=/opt/secondlife/viewers/firestorm
export REPOBASE=$PROJECTBASE/phoenix-firestorm-git
# Prepend python virtual environment to PATH.
pre_path $PROJECTBASE/venv/bin
export AUTOBUILD_CONFIG_FILE=$REPOBASE/my_autobuild.xml
export AUTOBUILD_VARIABLES_FILE=$PROJECTBASE/fs-build-variables/variables
export AUTOBUILD_ADDRSIZE=64
# Change to whatever you used:
export CCACHE_DIR=/opt/ccache
Additionally set the following environment variables.
You might want to use http://carlowood.github.io/howto/cdeh.html for this
and just put all of these variables in $PROJECTBASE/env.source.
# Something.
export AUTOBUILD_BUILD_ID=aleric
export XZ_DEFAULTS="-T0"
export PYTHONIOENCODING="utf-8"
# Set this to automatically run the viewer in gdb whenever you run ./firestorm.
#export LL_WRAPPER='gdb --args'
# Pick one of these three.
#CMAKE_CONFIG=Release
CMAKE_CONFIG=RelWithDebInfo
#CMAKE_CONFIG=Debug
Then configure with:
$ git switch aleric
$ autobuild configure -c ${CMAKE_CONFIG}FS_open -- --fmodstudio --compiler-cache -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
The FS in FS_open stands for FmodStudio. Use -c ${CMAKE_CONFIG}OS if you don't want to use --fmodstudio (_open and OS stand for OpenSim).
Important: all work is done on the branch aleric. The master branch is just upstream
and other branches are tests or whatnot (not interesting for you).
- Building the viewer.
$ autobuild build --no-configure -c ${CMAKE_CONFIG}FS_open -- --fmodstudio --compiler-cache -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON