deploy-ng
 

Overview

The deploy-ng project aims to replace the current Panda3D deployment tools (pdeploy, runtime, rtdist, etc.). +New DeploymentDistribution contains more information from the planning stage. This document will focus instead on the current implementation.
 

Goals

  • Support  "one-click" deployment to Windows, macOS, Linux, Web, and Android. A  user should be able to build for all platforms from one machine.
  • Be able to build installers and portable builds
  • Build settings (e.g., name, version, author, etc.) need to be able to be put under version control (e.g., config files)
  • Keep impact on Panda3D releases minimal
  • Use optimized builds for deployed binaries/libs for space and performance
 

TODO

The below tasks need to be completed before deploy-ng can be merged into master. They are roughly sorted by priority.
  • Finalize setup.py API
  • Finalize module include/exclude
  • Add include_modules
  • Switch to dictionaries for include/exclude_modules to support per-app settings
  • Key matches app name in gui/console_apps
  • Support * key to indicate all apps
  • Finalize file/directory include/exclude
  • Combine files an directories into copy_paths
  • Add globbing support to copy_paths @Mitchell S
  • Finalize build scripts
  • Finalize bdist_apps options
  • How do we want to specify what packages (e.g., zip, nsis, rpm, etc) to build for different platforms?
  • Deal with this when we work on installers
  • Finalize command names
  • p3d suffix is confusing with p3d files
  • Switch "p3d" to "apps"
  • Do we want separate bdist_p3d_archive and bdist_p3d_installer, or one bdist_p3d with options?
  • No, lets combine them again
  • Finalize option names
  • Implement user_options and finalize_options @Mitchell S
  • Error if gui_apps and console_apps is empty @Mitchell S
  • Add an option to select plug-ins to include (like OpenGL, ffmpeg)
  • Windows Support
  • Test deploying from Linux to Windows
  • Test deploying from Windows to Linux
  • Test deploying from Windows to macOS @rdb r 
  • macOS Support
  • Build .app instead of a regular binary for gui_apps during build_apps
  • Add user option to specify main app
  • Error if there is more than one app defined and no main app specified (otherwise, just assume the one app is the main app)
  • Test that .apps actually work @rdb r
  • Fix segfault when deploying from Linux to macOS @rdb r
  • Could be an issue with stripped binaries
  • Test deploying from macOS to other platforms @rdb r (testing: asteroids, python 2.7 and 3.7)
  • Build on macOS, test on Linux