NOTE ==========================================================================

This works on Linux only.

INSTALLATION ==================================================================

pip install panda3d-appimage

USAGE =========================================================================

In your setup.py file, add the following:

from direct.dist.commands import bdist_apps
from p3d_appimage import AppImageBuilder

class BDistAppsCmd(bdist_apps):
    def run(self):
        bdist_apps.run(self)
        AppImageBuilder(self).build()

setup(
    ...
    cmdclass={"bdist_apps": BDistAppsCmd},
    ... )

EXAMPLE =======================================================================

Let's build an AppImage for the Panda3D's Asteroids example.

Modify the file setup.py
(https://github.com/panda3d/panda3d/blob/master/samples/asteroids/setup.py)
adding these lines:

from direct.dist.commands import bdist_apps
from p3d_appimage import AppImageBuilder

class BDistAppsCmd(bdist_apps):
    def run(self):
        bdist_apps.run(self)
        AppImageBuilder(self).build()

setup(
    ...
    cmdclass={"bdist_apps": BDistAppsCmd},
    ... )

Then, launch the standard Panda3D build command:

python setup.py bdist_apps

At the end of the process, you will get the builds created by Panda3D and your
AppImage in the dist/ folder. Do ./Asteroids-x86_64.AppImage to launch your
AppImage.

UPDATING APPIMAGES ============================================================

The builder can also update your AppImage. If you specify a zsync_path when you
invoke the AppImageBuilder's method build(), then you can Invoke the AppImage's
method update() in your application and this will update your AppImage.