Compilation manuelle#

Vous pouvez aussi compiler Splash à la main, ce qui est pratique si vous avez de la curiosité concernant son fonctionnement interne, ou si vous voulez bricoler avec le code (ou même, qui sait, contribuer !). Notez que comme tout ce qui suit concerne la compilation pour la branche develop, il est probable que la version ainsi obtenue contiennent des bogues aux côtés des nouvelles optimisations et fonctionnalités. Utilisez la branche principale, soit la branche nommée master si Splash plante.

Installer les dépendances#

Les paquets nécessaires pour la compilation de Splash sont les suivants :

Ubuntu 22.04 et dérivés#

sudo apt install build-essential clang clang-tools doxygen flatpak-builder \
   git-core git-lfs libjsoncpp-dev zip cmake cmake-extras automake lcov \
   libtool libxcb-shm0-dev libxrandr-dev libxi-dev libglm-dev libgsl0-dev \
   libatlas3-base libgphoto2-dev libxinerama-dev libxcursor-dev \
   python3-dev portaudio19-dev yasm libgl1-mesa-dev libopencv-dev \
   software-properties-common uuid-dev libavcodec-dev libavformat-dev \
   libavutil-dev libswscale-dev libsnappy-dev libzmq3-dev libwayland-dev \
   libxkbcommon-dev ninja-build pkg-config zip

Fedora#

Si ce n’est pas déjà fait, ajouter le dépôt de paquets RPM Fusion (nécessaire pour certaines dépendances). Ceci ajoute uniquement le dépôt de paquets libres :

sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

Puis, pour installer les dépendances :

sudo dnf install gcc g++ cmake gsl-devel atlas-devel libgphoto2-devel python3-devel \
    yasm portaudio-devel python3-numpy opencv-devel jsoncpp-devel libuuid-devel libX11-devel \
    libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel mesa-libGL-devel ccache \
    libavcodec-free-devel libavformat-free-devel libavutil-free-devel libswscale-free-devel \
    libasan libubsan wayland-devel libxkbcommon-devel ninja-build

Archlinux#

Le support de Archlinux n’est pas garanti, veuillez signalez tout problème rencontré.

pacman -Sy git cmake ninja gcc yasm pkgconfig \
  libxi libxinerama libxrandr libxcursor jsoncpp mesa glm gsl libgphoto2 python3 \
  portaudio zip zlib ffmpeg opencv qt6-base vtk hdf5 glew libxkbcommon fmt make

Windows#

Sous Windows, vous devez installer un environnement de dévelopement permettant de lancer splash. Fort heureusement il en existe des très bien, pour Splash nous utilisons MSYS2. Installez le en suivant les instructions de leur site web, puis lancez MSYS UCRT64 depuis le menu Démarrez. Cela vous donnera accès à un terminal avec un environnement permettant de compiler Splash.

Pour en finir avec les dépendances, il reste à en installer quelques unes :

pacman -Sy --needed zip git
pacman -Sy --needed mingw-w64-ucrt-x86_64-{cmake,make,gcc,yasm,pkgconf,jsoncpp,glm,gsl,python3,portaudio,zlib,ffmpeg,zeromq,cppzmq,snappy,opencv,gphoto2}

Compiler Splash#

Une fois que tout est installé, vous pouvez passer à la compilation de Splash. Pour compiler et faire la liaison avec les librairies système (c’est la voie à suivre sous Windows) :

git clone --recurse-submodules https://gitlab.com/splashmapper/splash
cd splash
mkdir -p build && cd build
# The BUILD_GENERIC_ARCH flag allows for building an executable which can run on any
# sufficiently modern (less than 15 years) CPU. It is usually safe to remove it but
# people had issues in the past with some arch-specific flags
cmake -DUSE_SYSTEM_LIBS=ON -DBUILD_GENERIC_ARCH=ON ..
ninja

Sinon, pour assembler Splash et faire la liaison avec les librairies fournies (ceci ne fonctionnera pas sous Windows) :

git clone --recurse-submodules https://gitlab.com/splashmapper/splash
cd splash
./make_deps.sh
mkdir -p build && cd build
# The BUILD_GENERIC_ARCH flag allows for building an executable which can run on any
# sufficiently modern (less than 15 years) CPU. It is usually safe to remove it but
# people had issues in the past with some arch-specific flags
cmake -GNinja -DBUILD_GENERIC_ARCH=ON ..
ninja

Vous pouvez maintenant lancer Splash :

./src/splash --help

Installer et/ou empaqueter#

Linux : installer depuis les sources#

Une fois que Splash est compilé (voir les sous-sections précédentes), vous pouvez l’installer depuis le répertoire de compilation :

sudo ninja install
# And then it can be run from anywhere
splash --help

Windows : générer un paquet prêt à être installé et distribué#

Sous Windows, vous pouvez l’installer comme c’est fait sous Linux en utilisant la cible de compilation install. Mais pour faire les choses selon les usages de Windows, il est suggérer de générer un paquet d’installation puis d’installer Splash comme n’importe quel autre logiciel. De cette façon il sera disponible depuis le menu Démarrer, entre autres avantages.

Pour commencer, vous devez installer NSIS (Nullsoft Scriptable Install System), après l’avoir téléchargé depuis leur page web. Cet outil est utilisé par CPack pour générer le paquet. Une fois installé, exécutez depuis le répertoire build :

ninja package

Un fichier d’installation nommé splash-$VERSION-win64.exe sera généré. Double-cliquez dessus depuis l’explorateur de fichier pour l’exécuter et installer Splash. Lorsque ce sera fait, il sera disponible depuis le menu Démarrer, ou dans C:Program Filessplashbin.

Désinstaller Splash (lorsque compilé depuis les sources)#

Pour désinstaller Splash lorsqu’il a été compilé depuis les sources, vous devez faire ceci depuis le répertoire où il a été compilé :

cd ${PATH_TO_SPLASH}/build
sudo ninja uninstall

Configuration avancée#

Ordonnancement en temps réel#

Si vous voulez avoir accès à l’ordonnancement en temps réel dans Splash, vous devez créer un groupe « realtime », vous y ajouter et déterminer des limites :

sudo addgroup realtime
sudo adduser $USER realtime
sudo cp ./data/config/realtime.conf /etc/security/limits.d/

Et si vous voulez que les registres soient écrits sur /var/log/splash.log :

sudo adduser $USER syslog

Puis déconnectez-vous avant de vous reconnecter.

Valeurs par défaut des attributs#

Si vous voulez spécifier des valeurs par défaut pour les objets, vous pouvez régler la variable d’environnement SPLASH_DEFAULTS pour qu’elle contienne le chemin vers un fichier définissant des valeurs par défaut pour des types donnés. Un exemple d’un tel fichier se trouve dans data/config/splashrc

Pour désinstaller Splash lorsqu’il a été installé à partir des sources, entrez les commandes suivantes dans le répertoire dans lequel Splash a été compilé :

cd ${PATH_TO_SPLASH}/build
sudo make uninstall

Support de Wayland#

La prise en charge du serveur d’affichage Wayland est partielle, et suit les progrès de la bibliothèque GLFW qui est utilisée pour gérer les contextes graphiques sur de multiples plateformes. Un exemple de limitation actuelle est que si une fenêtre Splash est cachée, l’ensemble du rendu sera bloqué sur certains compositeurs Wayland.

Pour l’activer, la variable d’environnement SPLASH_USE_WAYLAND doit être définie, à n’importe quelle valeur. Par exemple, Splash peut être exécuté comme suit :

`bash SPLASH_USE_WAYLAND=1 splash `