# # assaultcube-lockdown — AssaultCube (LockdownEdition), a "Wayland/NVIDIA-friendly" build. # # Intended behaviour: # * user command : assaultcube # * real process : ac_client (the launcher exec's the real binary) # * SDL_VIDEODRIVER=x11 forced by default (user can override) # * coexists with RPM Fusion via a distinct package name + Conflicts # # Built FROM SOURCE (clang++) in a clean chroot (mock/COPR). # # The upstream Makefile sets its own CXXFLAGS (no -g): no debuginfo subpackage. %global debug_package %{nil} Name: assaultcube-lockdown Version: 1.3.0.2 Release: 1%{?dist} Summary: AssaultCube (LockdownEdition) — multiplayer FPS, Wayland/NVIDIA-friendly build # Engine code: zlib. Game content (maps/textures/sounds): AssaultCube license (redistributable). License: zlib URL: https://assault.cubers.net # Official upstream source, pinned to tag v1.3.0.2 (unpacks to AC-1.3.0.2/). Source0: https://github.com/assaultcube/AC/archive/refs/tags/v%{version}.tar.gz#/AC-%{version}.tar.gz # Packaging files provided by THIS repository: Source1: assaultcube-lockdown.desktop Source2: assaultcube-lockdown.metainfo.xml # Compiles on aarch64 too, but we target x86_64. ExclusiveArch: x86_64 # Coexistence with the RPM Fusion package (which also owns /usr/bin/assaultcube). # Distinct name => never silently replaced by "dnf upgrade". Conflicts => not both installed. Conflicts: assaultcube Requires: hicolor-icon-theme BuildRequires: make BuildRequires: clang BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: SDL2-devel BuildRequires: SDL2_image-devel BuildRequires: zlib-devel BuildRequires: libogg-devel BuildRequires: libvorbis-devel BuildRequires: openal-soft-devel BuildRequires: mesa-libGL-devel BuildRequires: libX11-devel BuildRequires: desktop-file-utils %description AssaultCube is a free, multiplayer, first-person shooter based on the CUBE engine: fast, arcade-style and lightweight. This is a "LockdownEdition" variant packaged for Fedora with two practical tweaks: * The game is launched with the "assaultcube" command, but the real process is named "ac_client" (visible in ps, top, /proc/PID/maps), exactly like on Debian/Ubuntu: the launcher "exec"s the real binary. * The launcher forces "SDL_VIDEODRIVER=x11" by default so the window shows up correctly on Wayland sessions running the proprietary NVIDIA driver. You can override it: "SDL_VIDEODRIVER=wayland assaultcube". The package uses a distinct name (assaultcube-lockdown) so it coexists with the RPM Fusion "assaultcube" package without being replaced by an upgrade. %prep %autosetup -n AC-%{version} %build # Build client + server. Bundled enet is auto-configured as a static lib by the Makefile. make -C source/src %{?_smp_mflags} CXX=clang++ client server %install # 1) Real binaries (the file name becomes the process name after exec) install -Dm0755 source/src/ac_client %{buildroot}%{_libexecdir}/%{name}/ac_client install -Dm0755 source/src/ac_server %{buildroot}%{_libexecdir}/%{name}/ac_server # 2) Game data (read-only) install -d %{buildroot}%{_datadir}/%{name} cp -a packages config bot mods docs %{buildroot}%{_datadir}/%{name}/ # 3) Client launcher: command `assaultcube` -> exec ac_client install -d %{buildroot}%{_bindir} cat > %{buildroot}%{_bindir}/assaultcube <<'LAUNCHER' #!/bin/sh # Force XWayland by default (override: export SDL_VIDEODRIVER=wayland). : "${SDL_VIDEODRIVER:=x11}" export SDL_VIDEODRIVER # The engine looks for packages/ config/ ... in the current directory. cd /usr/share/assaultcube-lockdown || exit 1 # exec -> the process takes the binary's name: "ac_client". exec /usr/libexec/assaultcube-lockdown/ac_client \ --home="${HOME}/.assaultcube/v1.3" --init "$@" LAUNCHER chmod 0755 %{buildroot}%{_bindir}/assaultcube # 4) Server launcher: command `assaultcube-server` -> exec ac_server cat > %{buildroot}%{_bindir}/assaultcube-server <<'SRVLAUNCHER' #!/bin/sh cd /usr/share/assaultcube-lockdown || exit 1 exec /usr/libexec/assaultcube-lockdown/ac_server "$@" SRVLAUNCHER chmod 0755 %{buildroot}%{_bindir}/assaultcube-server # 5) Icon install -Dm0644 packages/misc/icon.png \ %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/%{name}.png # 6) Menu entry (validated in %check) desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} # 7) AppStream metadata (GNOME Software listing) install -Dm0644 %{SOURCE2} %{buildroot}%{_metainfodir}/%{name}.metainfo.xml %check desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop %files %license docs/package_copyrights.txt %doc README.md %{_bindir}/assaultcube %{_bindir}/assaultcube-server %{_libexecdir}/%{name}/ %{_datadir}/%{name}/ %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/32x32/apps/%{name}.png %{_metainfodir}/%{name}.metainfo.xml %changelog * Sat Jun 06 2026 cybersnakeh - 1.3.0.2-1 - Initial package: built from source (clang++) - `assaultcube` command that execs `ac_client` (process named ac_client) - SDL_VIDEODRIVER=x11 forced by default (Wayland/NVIDIA) - Distinct name + Conflicts: assaultcube to coexist with RPM Fusion - `assaultcube-server` server launcher