Files
o3de-flatpak/org.o3de.O3DE.yaml
T
pc-heini 583c81ed51 Fix editable-install patch for 26.05 + unblock icon in unprivileged build
The previous patch matched a development-branch variable that does not
exist in release 2605.0, so the warning fired and the editable install was
not patched. In 2605.0 the -e is hardcoded in the pip command
("pip install -e ${package_folder_path}"); strip the -e there instead.

Also, flatpak build-export validates exported app icons in a bwrap sandbox,
which fails in an unprivileged container. Keep the icon inside the app (for
the running window/taskbar) but remove it from build-dir/export so export
skips validation. Host menu icon stays generic; build needs no privileges.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 12:17:11 +02:00

67 lines
3.1 KiB
YAML

# 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.
#
# Why the SDK is the runtime (not just the sdk): O3DE compiles game-project code at
# runtime and ships only a *build toolchain* dependency list (clang/ninja/cmake/
# pkg-config + -dev libs). Those live in org.freedesktop.Sdk, so we run against it.
id: org.o3de.O3DE
runtime: org.freedesktop.Sdk
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 # O3DE's bundled Qt only ships the xcb plugin, so X11/XWayland is required
- --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 installs entirely under /opt/O3DE/<version>/. (The /usr branch
# is kept for robustness in case a future release adds desktop glue there.)
- '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'
# On first launch O3DE pip-installs its 'o3de' CLI editable ('pip install
# -e'), which writes an egg-info into read-only /app and fails. Force a
# normal install (built in a temp dir, lands in the writable ~/.o3de venv).
- |
set -e
LYPYTHON=$(find "${FLATPAK_DEST}/opt/O3DE" -path '*/cmake/LYPython.cmake' | head -n1)
if [ -n "$LYPYTHON" ] && grep -qF -- '-m pip install -e ' "$LYPYTHON"; then
sed -i 's/-m pip install -e /-m pip install /g' "$LYPYTHON"
else
echo "::warning:: 'pip install -e' not found in LYPython.cmake"
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"
- install -Dm644 org.o3de.O3DE.png "${FLATPAK_DEST}/share/icons/hicolor/256x256/apps/org.o3de.O3DE.png"
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
- type: file
path: org.o3de.O3DE.png