Skip to content

Building from Source

This guide covers building gSlapper from source for development and customization.

Prerequisites

Arch Linux

# Runtime dependencies
sudo pacman -S gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav

# Build dependencies
sudo pacman -S meson ninja wayland-protocols

Ubuntu/Debian

# Runtime dependencies
sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
                 gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav

# Build dependencies
sudo apt install meson ninja-build wayland-protocols libunwind-dev

Fedora/RHEL

# Runtime dependencies
sudo dnf install gstreamer1 gstreamer1-plugins-base gstreamer1-plugins-good \
                 gstreamer1-plugins-bad gstreamer1-plugins-ugly gstreamer1-libav

# Build dependencies
sudo dnf install meson ninja-build wayland-protocols-devel

Building

Standard Build

git clone https://github.com/Nomadcxx/gSlapper.git
cd gSlapper
meson setup build --prefix=/usr/local --buildtype=release
ninja -C build
sudo ninja -C build install

Debug Build

For development with debug symbols and verbose logging:

meson setup build --buildtype=debug
ninja -C build
./build/gslapper --help

Custom Installation Prefix

meson setup build --prefix=/usr
ninja -C build
sudo ninja -C build install

Build Options

Available Options

Check available build options:

meson configure build

Common Options

# Set custom prefix
meson setup build --prefix=/opt/gslapper

# Enable/disable features (if available)
meson setup build -Dfeature=enabled

# Set build type
meson setup build --buildtype=release  # or debug, debugoptimized

Testing the Build

After building, test the binary:

# Check help output
./build/gslapper --help

# List available outputs
./build/gslapper -d

# Test with a video
./build/gslapper -v DP-1 /path/to/video.mp4

# Test with an image
./build/gslapper -v DP-1 /path/to/image.jpg

Rebuilding

After making code changes:

# Quick rebuild
ninja -C build

# Clean rebuild
rm -rf build
meson setup build --prefix=/usr/local --buildtype=release
ninja -C build

Troubleshooting

Missing Codecs

If videos fail to play, ensure codec plugins are installed:

# Arch Linux
sudo pacman -S gst-plugins-ugly gst-libav

# Ubuntu/Debian
sudo apt install gstreamer1.0-plugins-ugly gstreamer1.0-libav

Wayland Protocol Errors

If you see protocol errors, ensure wayland-protocols is installed:

# Arch Linux
sudo pacman -S wayland-protocols

# Ubuntu/Debian
sudo apt install wayland-protocols

GStreamer Not Found

If meson can't find GStreamer:

# Check pkg-config
pkg-config --modversion gstreamer-1.0

# Install development packages
# Arch Linux
sudo pacman -S gstreamer gst-plugins-base

# Ubuntu/Debian
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

Development Workflow

  1. Make changes to source files in src/
  2. Rebuild with ninja -C build
  3. Test with ./build/gslapper
  4. Debug with -vv flag for verbose output
  5. Iterate as needed

Package Building

For Arch Linux package building:

# Build package
makepkg -si

# Update .SRCINFO after PKGBUILD changes
makepkg --printsrcinfo > .SRCINFO

See PKGBUILD for package configuration.