# 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 # The Python bootstrap step (below) downloads O3DE's Python runtime into the # install tree, so this module needs network access during the build. build-options: build-args: - --share=network 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//. (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' # O3DE fetches its own Python runtime on first use, writing into its install # tree. That tree is read-only at runtime in a Flatpak, so bake Python in now # while ${FLATPAK_DEST} is still writable. - | set -e ENGINE_DIR=$(find "${FLATPAK_DEST}/opt/O3DE" -mindepth 1 -maxdepth 1 -type d | head -n1) echo "Engine dir: ${ENGINE_DIR}" if [ -x "${ENGINE_DIR}/python/get_python.sh" ]; then ( cd "${ENGINE_DIR}" && HOME="${PWD}" ./python/get_python.sh ) else echo "::warning:: get_python.sh not found; Python may fail at runtime" 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" # NOTE: the .deb ships no clean application icon (only in-editor asset icons), # so none is installed; the desktop entry falls back to a generic icon. Drop a # real logo into the repo and install it here to fix the launcher icon. 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