Initial O3DE Flatpak packaging + Gitea CI

Repackage the official O3DE Linux .deb as a Flatpak and publish it as a
static OSTree repo on the 'pages' branch for install via flatpak remote.

- org.o3de.O3DE.yaml: flatpak-builder manifest (extracts the .deb into /app)
- o3de-wrapper.sh: launcher that locates the versioned o3de binary at runtime
- desktop + AppStream metadata under the app-id
- scripts/: live version resolver and local build helper
- .gitea/workflows/build-flatpak.yml: daily check -> build -> publish -> tag

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-15 09:29:55 +02:00
commit 5421db2960
10 changed files with 518 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
# flatpak-builder manifest for repackaging the official O3DE Linux .deb as a Flatpak.
#
# The workflow (and scripts/build.sh) download the latest o3de_*.deb to ./o3de.deb
# next to this manifest before building, so the manifest itself never needs editing
# when a new version drops.
id: org.o3de.O3DE
runtime: org.freedesktop.Platform
runtime-version: '24.08'
sdk: org.freedesktop.Sdk
command: o3de-wrapper.sh
finish-args:
- --share=ipc
- --share=network # Project Manager fetches gems/templates; engine downloads assets
- --socket=x11
- --socket=fallback-x11
- --socket=wayland
- --socket=pulseaudio
- --device=dri # GPU access for the renderer
- --device=all # broader device access (input devices, additional GPUs)
- --filesystem=home # O3DE stores projects and ~/.o3de in the user's home
- --talk-name=org.freedesktop.Notifications
- --env=QT_QPA_PLATFORM=xcb # O3DE's bundled Qt is most reliable under XWayland/X11
modules:
- name: o3de
buildsystem: simple
build-commands:
# The .deb is an `ar` archive containing data.tar.{gz,xz,zst}.
- ar x o3de.deb
- mkdir -p data
- tar -C data -xf data.tar.*
# The payload lays files out under /opt (engine) and /usr (desktop/icon glue).
- 'if [ -d data/opt ]; then mkdir -p "${FLATPAK_DEST}/opt"; cp -a data/opt/. "${FLATPAK_DEST}/opt/"; fi'
- 'if [ -d data/usr ]; then cp -a data/usr/. "${FLATPAK_DEST}/"; fi'
# Launcher + AppStream + desktop entry under the Flatpak app-id.
- install -Dm755 o3de-wrapper.sh "${FLATPAK_DEST}/bin/o3de-wrapper.sh"
- install -Dm644 org.o3de.O3DE.desktop "${FLATPAK_DEST}/share/applications/org.o3de.O3DE.desktop"
- install -Dm644 org.o3de.O3DE.metainfo.xml "${FLATPAK_DEST}/share/metainfo/org.o3de.O3DE.metainfo.xml"
# Pick up an icon from the .deb if one is present and rename it to the app-id.
- |
icon=$(find data -type f \( -name '*o3de*.png' -o -name '*o3de*.svg' \) 2>/dev/null | head -n1)
if [ -n "$icon" ]; then
ext="${icon##*.}"
install -Dm644 "$icon" "${FLATPAK_DEST}/share/icons/hicolor/256x256/apps/org.o3de.O3DE.${ext}"
fi
sources:
- type: file
path: o3de.deb
- type: file
path: o3de-wrapper.sh
- type: file
path: org.o3de.O3DE.desktop
- type: file
path: org.o3de.O3DE.metainfo.xml