-
Notifications
You must be signed in to change notification settings - Fork 0
Build on Debian Linux
Current as of 2026-07-24 on Debian 13 Trixie.
Debian is the official build system for EmptyEpsilon releases and a recommended operating system for building EmptyEpsilon from source. These steps might also work on Debian derivatives, such as Ubuntu and Raspberry Pi OS.
For generic build instructions and additional options, see Build.
- Prerequisites
- Build EmptyEpsilon from the master branch
- Build a distributable package of a specific EmptyEpsilon version
- On older distributions
- For old versions of EmptyEpsilon
Install the required packages for compiling EmptyEpsilon from source:
sudo apt install git build-essential cmake ninja-build zip unzip \
libfreetype-devThe libfreetype-dev package might be libfreetype6-dev on older versions of Debian.
SeriousProton vendors SDL3 via CMake FetchContent, which automatically downloads and builds it from source while building EmptyEpsilon. You typically shouldn't need to install SDL3 separately.
You might need to install SDL3 dependencies to ensure that it has access to all necessary SDL features. See the SDL wiki.
For example, to enable all SDL3 features on Ubuntu, install:
sudo apt-get install make pkg-config gnome-desktop-testing libasound2-dev \
libpulse-dev libaudio-dev libfribidi-dev libjack-dev libsndio-dev libx11-dev \
libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev \
libxtst-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev \
libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev \
libthai-dev libusb-1.0-0-dev libpipewire-0.3-dev libwayland-dev libdecor-0-dev \
liburing-devTo override the vendored SDL3 and instead use a system-installed (libsdl3-devel) or custom build, define SDL3_DIR with the location of SDL3Config.cmake or sdl3-config.cmake.
Create a working directory, then from within it run:
git clone https://github.com/oznogon/EmptyEpsilon.git &&
git clone https://github.com/oznogon/SeriousProton.git &&
cmake -S EmptyEpsilon -B EmptyEpsilon/_build -G Ninja &&
cmake --build EmptyEpsilon/_buildTo launch the build without installing, run:
(cd EmptyEpsilon && _build/EmptyEpsilon)To install this build globally on your local system, run:
sudo cmake --build EmptyEpsilon/_build --target installTo build a distributable .deb package, run:
cmake --build EmptyEpsilon/_build --target packageThe package target builds a Debian package by default. To manually specify this, add the -DCPACK_GENERATOR=DEB flag to the build environment step:
cmake -S EmptyEpsilon -B EmptyEpsilon/_build -G Ninja -DCPACK_GENERATOR=DEBA script executing the steps to build a Debian package of EmptyEpsilon's master branch from scratch on a newly installed Debian 13 system:
sudo apt install git build-essential cmake ninja-build zip unzip libfreetype-dev \
make pkg-config gnome-desktop-testing libasound2-dev \
libpulse-dev libaudio-dev libfribidi-dev libjack-dev libsndio-dev libx11-dev \
libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev \
libxtst-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev \
libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev \
libthai-dev libusb-1.0-0-dev libpipewire-0.3-dev libwayland-dev libdecor-0-dev \
liburing-dev &&
mkdir -p emptyepsilon-compile &&
cd emptyepsilon-compile &&
git clone https://github.com/oznogon/EmptyEpsilon.git &&
git clone https://github.com/oznogon/SeriousProton.git &&
cmake -S EmptyEpsilon -B EmptyEpsilon/_build -G Ninja &&
cmake --build EmptyEpsilon/_build --target packageThe result should be an EmptyEpsilon.deb package located at emptyepsilon-compile/EmptyEpsilon/_build.
See Build for details on downloading a specific release's source or using a repository release tag, and for specifying a version number.
Download or clone the repository for a specific version. Given the 2024.12.08 official release as an example:
sudo apt install git build-essential cmake ninja-build zip unzip libsdl2-dev libfreetype6-dev &&
mkdir -p emptyepsilon-compile &&
cd emptyepsilon-compile &&
git clone --branch EE-2024.12.08 --depth 1 https://github.com/oznogon/EmptyEpsilon.git &&
git clone --branch EE-2024.12.08 --depth 1 https://github.com/oznogon/SeriousProton.gitCreate a version.cmake file for that version in the EmptyEpsilon repository root directory. Note the CPACK_DEBIAN_PACKAGE_VERSION line; without it, the package version will be today's date instead of the expected EmptyEpsilon version.
cat <<EOF > EmptyEpsilon/version.cmake
set(PROJECT_VERSION 2024.12.08)
set(PROJECT_VERSION_MAJOR 2024)
set(PROJECT_VERSION_MINOR 12)
set(PROJECT_VERSION_PATCH 8)
set(CPACK_DEBIAN_PACKAGE_VERSION 2024.12.08)
EOFProvide version.cmake as a project include file:
cmake -S EmptyEpsilon -B EmptyEpsilon/_build -G Ninja \
-DCMAKE_PROJECT_EmptyEpsilon_INCLUDE=version.cmake &&
cmake --build EmptyEpsilon/_build --target packageConfirm the package with dpkg:
dpkg --info EmptyEpsilon/_build/EmptyEpsilon.deb
dpkg should output something similar to the following, depending on your architecture and the version you defined:
new Debian package, version 2.0.
size 261765618 bytes: control archive=21570 bytes.
238 bytes, 10 lines control
76438 bytes, 744 lines md5sums
Architecture: amd64
Depends: libfreetype6, libsdl2-2.0-0
Description: EmptyEpsilon built using CMake
Maintainer: https://github.com/daid/
Package: emptyepsilon
Priority: optional
Section: devel
Version: 2024.12.08
Installed-Size: 301753
A script executing the steps to build a Debian package of an EmptyEpsilon release tag from scratch on a newly installed Debian 13 system:
For example, save this script as build-debian.sh and run it as build-debian.sh 2024.12.08 to build the EE-2024.12.08 release.
#!/bin/bash
# Capture version from first command-line argument
if [ $# -eq 0 ]; then
echo "Error: Version number is required"
echo "Usage: $0 <version>"
exit 1
fi
VERSION="$1"
# Validate YYYY.MM.DD format
if [[ ! "$VERSION" =~ ^[0-9]{4}\.[0-9]{2}\.[0-9]{2}$ ]]; then
echo "Error: Invalid version format. Use YYYY.MM.DD"
exit 1
fi
sudo apt install git build-essential cmake ninja-build zip unzip libsdl2-dev libfreetype-dev &&
mkdir -p emptyepsilon-compile &&
cd emptyepsilon-compile &&
git clone --branch EE-${VERSION} --depth 1 https://github.com/oznogon/EmptyEpsilon.git &&
git clone --branch EE-${VERSION} --depth 1 https://github.com/oznogon/SeriousProton.git &&
{
cat <<EOF > EmptyEpsilon/version.cmake
set(PROJECT_VERSION ${VERSION})
set(PROJECT_VERSION_MAJOR $(echo ${VERSION} | cut -d. -f1))
set(PROJECT_VERSION_MINOR $(echo ${VERSION} | cut -d. -f2 | sed 's/^0*//'))
set(PROJECT_VERSION_PATCH $(echo ${VERSION} | cut -d. -f3 | sed 's/^0*//'))
set(CPACK_DEBIAN_PACKAGE_VERSION ${VERSION})
EOF
} &&
cmake -S EmptyEpsilon -B EmptyEpsilon/_build -G Ninja \
-DCMAKE_PROJECT_EmptyEpsilon_INCLUDE=version.cmake &&
cmake --build EmptyEpsilon/_build --target package &&
dpkg --info EmptyEpsilon/_build/EmptyEpsilon.debThe result should be an EmptyEpsilon.deb package located at emptyepsilon-compile/EmptyEpsilon/_build.
See Build for additional options, such as building releases with debugging symbols.
- Home
- Building and installing the game
- Configuring the game
- Playing the game
- Officer roles and screens
- Captain
- Main screen
- Ship window
- Crews of 5-6 players
- Crews of 3-4 players
- Single-player crew
- Game Master (GM) screens
- Extra screens
- Minigames
- Weapon types
- Officer roles and screens
- Extending the game
- Troubleshooting
- Fork content