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:
@@ -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
|
||||
Reference in New Issue
Block a user