1

I'm trying to build a Flatpak of the Amulet Minecraft Map Editor, which runs fine when run directly through Python 3.11.9 (in a VENV) on Linux, Windows and MacOS, but on Linux, the Flatpak version crashes when loading the 3D Map window.

INFO - PyMCTranslate Version 291
Gtk-Message: 13:20:08.646: Failed to load module "xapp-gtk3-module"
INFO - Loading level /home/evilsupahfly/.minecraft/saves/Otherwhere
INFO - Loading level /home/evilsupahfly/.minecraft/saves/Otherwhere
CRITICAL - NotImplementedError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/framework/pages/world_page.py", line 178, in _enable_page
    self.GetPage(page).enable()
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/edit.py", line 69, in enable
    self._canvas = EditCanvas(self, self._world)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/api/canvas/edit_canvas.py", line 150, in __init__
    super().__init__(parent, world)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/api/canvas/base_edit_canvas.py", line 63, in __init__
    super().__init__(parent)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/opengl/canvas/event_canvas.py", line 15, in __init__
    super().__init__(parent)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/opengl/canvas/canvas.py", line 41, in __init__
    display_attributes = GLAttributes()
                         ^^^^^^^^^^^^^^
SystemError: <class 'wx._glcanvas.GLAttributes'> returned a result with an exception set

CRITICAL - NotImplementedError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/framework/pages/world_page.py", line 178, in _enable_page
    self.GetPage(page).enable()
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/edit.py", line 69, in enable
    self._canvas = EditCanvas(self, self._world)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/api/canvas/edit_canvas.py", line 150, in __init__
    super().__init__(parent, world)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/api/canvas/base_edit_canvas.py", line 63, in __init__
    super().__init__(parent)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/opengl/canvas/event_canvas.py", line 15, in __init__
    super().__init__(parent)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/opengl/canvas/canvas.py", line 41, in __init__
    display_attributes = GLAttributes()
                         ^^^^^^^^^^^^^^
SystemError: <class 'wx._glcanvas.GLAttributes'> returned a result with an exception set

CRITICAL - NotImplementedError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/framework/pages/world_page.py", line 178, in _enable_page
    self.GetPage(page).enable()
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/edit.py", line 69, in enable
    self._canvas = EditCanvas(self, self._world)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/api/canvas/edit_canvas.py", line 150, in __init__
    super().__init__(parent, world)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/api/canvas/base_edit_canvas.py", line 63, in __init__
    super().__init__(parent)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/opengl/canvas/event_canvas.py", line 15, in __init__
    super().__init__(parent)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/opengl/canvas/canvas.py", line 41, in __init__
    display_attributes = GLAttributes()
                         ^^^^^^^^^^^^^^
SystemError: <class 'wx._glcanvas.GLAttributes'> returned a result with an exception set

During handling of the above exception, another exception occurred:

NotImplementedError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/framework/pages/world_page.py", line 178, in _enable_page
    self.GetPage(page).enable()
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/edit.py", line 69, in enable
    self._canvas = EditCanvas(self, self._world)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/api/canvas/edit_canvas.py", line 150, in __init__
    super().__init__(parent, world)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/api/canvas/base_edit_canvas.py", line 63, in __init__
    super().__init__(parent)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/opengl/canvas/event_canvas.py", line 15, in __init__
    super().__init__(parent)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/opengl/canvas/canvas.py", line 41, in __init__
    display_attributes = GLAttributes()
                         ^^^^^^^^^^^^^^
SystemError: <class 'wx._glcanvas.GLAttributes'> returned a result with an exception set

CRITICAL - NotImplementedError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/framework/pages/world_page.py", line 178, in _enable_page
    self.GetPage(page).enable()
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/edit.py", line 69, in enable
    self._canvas = EditCanvas(self, self._world)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/api/canvas/edit_canvas.py", line 150, in __init__
    super().__init__(parent, world)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/api/canvas/base_edit_canvas.py", line 63, in __init__
    super().__init__(parent)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/opengl/canvas/event_canvas.py", line 15, in __init__
    super().__init__(parent)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/opengl/canvas/canvas.py", line 41, in __init__
    display_attributes = GLAttributes()
                         ^^^^^^^^^^^^^^
SystemError: <class 'wx._glcanvas.GLAttributes'> returned a result with an exception set

During handling of the above exception, another exception occurred:

NotImplementedError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/framework/pages/world_page.py", line 178, in _enable_page
    self.GetPage(page).enable()
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/edit.py", line 69, in enable
    self._canvas = EditCanvas(self, self._world)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/api/canvas/edit_canvas.py", line 150, in __init__
    super().__init__(parent, world)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/programs/edit/api/canvas/base_edit_canvas.py", line 63, in __init__
    super().__init__(parent)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/opengl/canvas/event_canvas.py", line 15, in __init__
    super().__init__(parent)
  File "/app/lib/python3.11/site-packages/amulet_map_editor/api/opengl/canvas/canvas.py", line 41, in __init__
    display_attributes = GLAttributes()
                         ^^^^^^^^^^^^^^
SystemError: <class 'wx._glcanvas.GLAttributes'> returned a result with an exception set


(amulet_map_editor:2): GLib-GObject-CRITICAL **: 13:20:40.497: ../gobject/gsignal.c:2778: instance '0x65340a9834c0' has no handler with id '3836'

So, working from the source, using the Flatpak PIP Generator, I got all the dependencies pulled in, verified they in the correct install order, and ultimately, after some trial-and-error, built this Flatpak manifest:

id: com.github.amulet_map_editor
name: Amulet Map Editor
runtime: org.freedesktop.Platform
runtime-version: '23.08'
sdk: org.freedesktop.Sdk
sdk-version: '23.08'
add-build-extensions:
  - org.freedesktop.Platform.GL.default
command: amulet_map_editor

finish-args:
  - --share=network
  - --share=ipc
  - --socket=x11
  - --socket=wayland
  - --device=all
  - --filesystem=home:create
  - --talk-name=org.freedesktop.Notifications
  - --env=DRI_PRIME=1
  - --env=LIBGL_ALWAYS_SOFTWARE="0"
  - --env=LD_LIBRARY_PATH=/app/lib
  - --env=MESA_LOADER_DRIVER_OVERRIDE="host"
  - --env=OPENGL_VERSION=3.3
  - --env=OPENGL_LIB=/usr/lib/x86_64-linux-gnu/libGL.so
  - --env=PYTHON_VERSION=3.11.9
  - --env=WX_PYTHON=/app/lib/python3.11/site-packages/wx
  - --env=WX_PYTHON_VERSION=4.1.1
  - --env=XAPP_GTK3=true

modules:
  - shared-modules/SDL/SDL-1.2.15.json
  - shared-modules/SDL2/SDL2-with-libdecor.json
  - shared-modules/glew/glew.json
  - shared-modules/glu/glu-9.json
  - shared-modules/libappindicator/libappindicator-gtk3-introspection-12.10.json
  - shared-modules/gtk2/gtk2.json
  - shared-modules/dbus-glib/dbus-glib.json
  - shared-modules/pygame/pygame-1.9.6.json

# Generated with flatpak-pip-generator --requirements-file=req_rev_3.txt --yaml --output=amulet_map_editor
modules:
  - name: python3-versioneer
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "versioneer" --report=pip_report.json --no-build-isolation
    sources:
      - type: file
        url: https://files.pythonhosted.org/packages/b0/79/f0f1ca286b78f6f33c521a36b5cbd5bd697c0d66217d8856f443aeb9dd77/versioneer-0.29-py3-none-any.whl
        sha256: 0f1a137bb5d6811e96a79bb0486798aeae9b9c6efc24b389659cebb0ee396cb9

  - name: python3-xapp
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "xapp" --report=pip_report.json --no-build-isolation
    sources:
      - type: file
        url: https://files.pythonhosted.org/packages/1d/cf/b4fc57d170c11a615806b4754e867ffadf40a066456e846a0d415b5cc556/xapp-0.0.1.tar.gz
        sha256: cf72c1b3e4d342b457cb8c2ea9ccb6727e7c139e4da5d997cbd75c48c2f1a253
  - name: python3-mutf8
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "mutf8" --report=pip_report.json --no-build-isolation
    sources:
      - &id002
        type: file
        url: https://files.pythonhosted.org/packages/ca/31/3c57313757b3a47dcf32d2a9bad55d913b797efc8814db31bed8a7142396/mutf8-1.0.6.tar.gz
        sha256: 1bbbefb67c2e5a57104750bb04b0912200b57b2fa9841be245279e83859cb346
  - name: python3-meson-python
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "meson-python" --report=pip_report.json --no-build-isolation
    sources:
      - type: file
        url: https://files.pythonhosted.org/packages/91/c0/104cb6244c83fe6bc3886f144cc433db0c0c78efac5dc00e409a5a08c87d/meson_python-0.16.0-py3-none-any.whl
        sha256: 842dc9f5dc29e55fc769ff1b6fe328412fe6c870220fc321060a1d2d395e69e8
      - &id001
        type: file
        url: https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl
        sha256: 5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124
      - type: file
        url: https://files.pythonhosted.org/packages/aa/5f/bb5970d3d04173b46c9037109f7f05fc8904ff5be073ee49bb6ff00301bc/pyproject_metadata-0.8.0-py3-none-any.whl
        sha256: ad858d448e1d3a1fb408ac5bac9ea7743e7a8bbb472f2693aaa334d2db42f526
  - name: python3-numpy
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "numpy" --report=pip_report.json --no-build-isolation
    sources:
      - &id003
        type: file
        url: https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz
        sha256: 2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010
  - name: python3-setuptools_scm
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "setuptools_scm[toml]>=6.2" --report=pip_report.json --no-build-isolation
    sources:
      - *id001
      - type: file
        url: https://files.pythonhosted.org/packages/a0/b9/1906bfeb30f2fc13bb39bf7ddb8749784c05faadbd18a21cf141ba37bff2/setuptools_scm-8.1.0-py3-none-any.whl
        sha256: 897a3226a6fd4a6eb2f068745e49733261a21f70b1bb28fce0339feb978d9af3
  - name: python3-requirements-parser
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "requirements-parser" --report=pip_report.json --no-build-isolation
    sources:
      - *id001
      - type: file
        url: https://files.pythonhosted.org/packages/88/33/190393a7d36872e237cbc99e6c44d9a078a1ba7b406462fe6eafd5a28e04/requirements_parser-0.11.0-py3-none-any.whl
        sha256: 50379eb50311834386c2568263ae5225d7b9d0867fb55cf4ecc93959de2c2684
      - type: file
        url: https://files.pythonhosted.org/packages/5f/8b/96a7ad4a355aab5688f58517d946a37975e3baa8b71d4cd3b5f87ff77b23/types_setuptools-71.1.0.20240818-py3-none-any.whl
        sha256: c4f95302f88369ac0ac46c67ddbfc70c6c4dbbb184d9fed356244217a2934025
  - name: python3-lz4
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "lz4" --report=pip_report.json --no-build-isolation
    sources:
      - &id007
        type: file
        url: https://files.pythonhosted.org/packages/a4/31/ec1259ca8ad11568abaf090a7da719616ca96b60d097ccc5799cd0ff599c/lz4-4.3.3.tar.gz
        sha256: 01fe674ef2889dbb9899d8a67361e0c4a2c833af5aeb37dd505727cf5d2a131e
  - name: python3-packaging
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "packaging" --report=pip_report.json --no-build-isolation
    sources:
      - *id001
  - name: python3-pillow
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "pillow" --report=pip_report.json --no-build-isolation
    sources:
      - &id004
        type: file
        url: https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz
        sha256: 166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06
  - name: python3-platformdirs
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "platformdirs" --report=pip_report.json --no-build-isolation
    sources:
      - &id008
        type: file
        url: https://files.pythonhosted.org/packages/56/29/3ec311dc18804409ecf0d2b09caa976f3ae6215559306b5b530004e11156/platformdirs-3.11.0-py3-none-any.whl
        sha256: e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e
  - name: python3-portalocker
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "portalocker" --report=pip_report.json --no-build-isolation
    sources:
      - &id009
        type: file
        url: https://files.pythonhosted.org/packages/9b/fb/a70a4214956182e0d7a9099ab17d50bfcba1056188e9b14f35b9e2b62a0d/portalocker-2.10.1-py3-none-any.whl
        sha256: 53a5984ebc86a025552264b459b46a2086e269b21823cb572f8f28ee759e45bf
  - name: python3-PyMCTranslate
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "PyMCTranslate" --report=pip_report.json --no-build-isolation
    sources:
      - &id005
        type: file
        url: https://files.pythonhosted.org/packages/25/e2/b645189fbdbc4f9cad1db97dfc5b1de230baad9d83dba0f731748bb0fbbd/PyMCTranslate-1.2.27-py3-none-any.whl
        sha256: 724e1fa82dcbcf9289b01fb2cb2ad8ee2f0a987ddda01a766a42ec6aca98769a
      - &id006
        type: file
        url: https://files.pythonhosted.org/packages/00/b9/48aa1754bc30143d7623253ff507986123829e9ae78a266ec34e08c0c544/amulet-nbt-2.1.3.tar.gz
        sha256: a9de4fe068329c7a921f09dd4cec37c25c01ac2abeb4e10000e82e526e36d0fc
      - *id002
      - *id003
  - name: python3-PyOpenGL
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "PyOpenGL" --report=pip_report.json --no-build-isolation
    sources:
      - &id011
        type: file
        url: https://files.pythonhosted.org/packages/99/48/00e31747821d3fc56faddd00a4725454d1e694a8b67d715cf20f531506a5/PyOpenGL-3.1.7-py3-none-any.whl
        sha256: a6ab19cf290df6101aaf7470843a9c46207789855746399d0af92521a0a92b7a
  - name: python3-pyopengl-accelerate
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "pyopengl-accelerate" --report=pip_report.json --no-build-isolation
    sources:
      - type: file
        url: https://files.pythonhosted.org/packages/93/09/d08b3d07dbd88258276496a47273778f330f5ccf8390cb21b16b29d660de/PyOpenGL-accelerate-3.1.7.tar.gz
        sha256: 2b123621273a939f7fd2ec227541e399f9b5d4e815d69ae0bdb1b6c70a293680
  - name: python3-wxPython
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "wxPython" --report=pip_report.json --no-build-isolation
    sources:
      - *id003
      - *id004
      - &id013
        type: file
        url: https://files.pythonhosted.org/packages/aa/64/d749e767a8ce7bdc3d533334e03bb1106fc4e4803d16f931fada9007ee13/wxPython-4.2.1.tar.gz
        sha256: e48de211a6606bf072ec3fa778771d6b746c00b7f4b970eb58728ddf56d13d5c
  - name: python3-amulet-core
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "amulet-core" --report=pip_report.json --no-build-isolation
    sources:
      - *id005
      - *id006
      - &id012
        type: file
        url: https://files.pythonhosted.org/packages/16/df/6ad86c1a64350274a05cf56ecb205e1acea74ea376d7a02c4b34b0251388/amulet_core-1.9.25-py3-none-any.whl
        sha256: a626a09e93112032d8de046cef59b3a87bf02e840930fa7218f5b2caacf29254
      - &id010
        type: file
        url: https://files.pythonhosted.org/packages/8a/69/03882a4a7ed933d1f0c622d93a5b2eef2fa51c4bf8ca1ec84d43b88eb113/amulet_leveldb-1.0.2.tar.gz
        sha256: b3aa511ef71bf6bc6b21e96395bded0f392b1dc093ef58d5535067d80ab41541
      - *id007
      - *id002
      - *id003
      - *id008
      - *id009
  - name: python3-amulet-leveldb
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "amulet-leveldb" --report=pip_report.json --no-build-isolation
    sources:
      - *id010
  - name: python3-amulet-map-editor
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "amulet-map-editor" --report=pip_report.json --no-build-isolation
    sources:
      - *id005
      - *id011
      - *id006
      - *id012
      - *id010
      - type: file
        url: https://files.pythonhosted.org/packages/92/ad/7f808413857992512188eaed55108be7201cf18defcd36e8ed9fe9d9c3fc/amulet_map_editor-0.10.35.tar.gz
        sha256: d9a24afa04fc4be3ca029d5ef1bb394b32497533d4e176e3d742f43edab6319a
      - *id007
      - &id014
        type: file
        url: https://files.pythonhosted.org/packages/1e/07/bf65fcbb5f66c0e961ff4233023b6ffc65e69f6996251f5a0f1e94e6e65d/minecraft_resource_pack-1.4.3-py3-none-any.whl
        sha256: 672ff157bdb9ccfcbc445393d2e4603cf0d32e320bbc8e7bb5082e855ff3155f
      - *id002
      - *id003
      - *id001
      - *id004
      - *id008
      - *id009
      - *id013
  - name: python3-amulet-nbt
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "amulet-nbt" --report=pip_report.json --no-build-isolation
    sources:
      - *id006
      - *id002
      - *id003
  - name: python3-minecraft-resource-pack
    buildsystem: simple
    build-commands:
      - pip3 install --verbose --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
        "minecraft-resource-pack" --report=pip_report.json --no-build-isolation
    sources:
      - *id006
      - *id014
      - *id002
      - *id003
      - *id004
      - *id008

icon:
  name: com.github.amulet_map_editor
  src: data/icons/amulet.png

desktop-file:
  name: Amulet Minecraft Editor
  comment: A powerful Minecraft editor
  exec: flatpak run com.github.amulet_map_editor
  icon: amulet
  terminal: true
  type: Application
  categories: [Game, Graphics]
  startup-wm-class: AmuletMapEditor
  
finish:
  # Enable host's drivers for OpenGL
  add-exports:
    - /usr/lib/x86_64-linux-gnu/mesa
  # Allow access to the host's OpenGL drivers
  allow:
    - ipc
    - network
    - x11

Then I did the following:

flatpak-builder -v --install-deps-from=flathub --mirror-screenshots-url=https://dl.flathub.org/media/ --add-tag=0.10.35 --bundle-sources --repo=amulet_flatpak_repo amulet_build_dir amulet.yml --force-clean

It took a while, but we got through everything with no errors. Next, I did this:

flatpak install amulet.flatpak

This step too succeeded with no errors reported, so I moved to the final step:

flatpak run com.github.amulet_map_editor

The Flatpak version of the app actually loads initially, and I can select a Minecraft world to load, which it does without issue. However, when I go to the 3D map editor, that's when everything falls apart with the aforementioned error, and yet, as stated previously, this doesn't happen when running directly with Python through my terminal.

I just don't understand why this isn't working. Is the Flatpak sandbox blocking something? Do I need to add something to my manifest? It can't be an issue with Amulet directly because it runs fine on its own, right?

I've tried the following:

  • running the original project from its Python source
  • rebuilding the flatpak manifest completely from scratch
  • specifically adding and removing the org.freedesktop.Platform.GL.default extension in the manifest

1 Answer 1

2

OK, so I made a stupid mistake in my manifest.

After reading through the docs on running a flatpak app in a debug shell, I realized that I had made a fatal mistake:

Using add-build-extensions: versus inherit-extensions: makes a world of difference. My app was crashing because the OpenGL libraries were being used to build the initial app (add) but weren't being made available to the runtime inside the sandbox (inherit).

After changing

sdk-version: '23.08'
add-build-extensions:
  - org.freedesktop.Platform.GL.default
command: amulet_map_editor

To this:

sdk-version: '23.08'
inherit-extensions:
  - org.freedesktop.Platform.GL
  - org.gtk.Gtk3theme
  - org.freedesktop.Platform.GL.Debug
  - org.freedesktop.Platform.VAAPI.Intel
inherit-sdk-extensions:
  - org.freedesktop.Sdk.Debug
  - org.freedesktop.Sdk.Extension
  
command: amulet_map_editor

The Amulet Map Editor now runs flawlessly as a flatpak.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.