Browse Source

deploy-ng: Split applications list into gui_apps and console_apps dictionaries

The keys to these new dictionaries are the name of the application to
create and the value is the script that is the entry point for the
application. This gets rid of the need for an Application class.
Mitchell Stokes 9 years ago
parent
commit
9723cb62d9
2 changed files with 18 additions and 14 deletions
  1. 15 13
      direct/src/showutil/dist.py
  2. 3 1
      samples/asteroids/setup.py

+ 15 - 13
direct/src/showutil/dist.py

@@ -13,12 +13,6 @@ from direct.showutil import FreezeTool
 import panda3d.core as p3d
 
 
-class Application(object):
-    def __init__(self, scriptname, runtimename, use_console=False):
-        self.scriptname = scriptname
-        self.runtimename = runtimename
-        self.use_console = use_console
-
 
 # TODO replace with Packager
 def find_packages(whlfile):
@@ -44,7 +38,8 @@ class build_p3d(distutils.core.Command):
 
     def initialize_options(self):
         self.build_base = os.path.join(os.getcwd(), 'build')
-        self.applications = []
+        self.gui_apps = {}
+        self.console_apps = {}
         self.directories = []
         self.files = []
         self.exclude_paths = []
@@ -57,6 +52,7 @@ class build_p3d(distutils.core.Command):
         }
 
     def finalize_options(self):
+        # TODO
         pass
 
     def run(self):
@@ -114,19 +110,19 @@ class build_p3d(distutils.core.Command):
                 sys.path.insert(0, os.path.join(p3dwhlfn, 'deploy_libs'))
 
 
-            # Create runtime
+            # Create runtimes
             freezer_extras = set()
             freezer_modules = set()
-            for app in self.applications:
+            def create_runtime(appname, mainscript, use_console):
                 freezer = FreezeTool.Freezer(platform=platform)
-                freezer.addModule('__main__', filename=app.scriptname)
+                freezer.addModule('__main__', filename=mainscript)
                 for exmod in self.exclude_modules:
                     freezer.excludeModule(exmod)
                 freezer.done(addStartupModules=True)
 
                 stub_name = 'deploy-stub'
                 if platform.startswith('win'):
-                    if not app.use_console:
+                    if use_console:
                         stub_name = 'deploy-stubw'
                     stub_name += '.exe'
 
@@ -137,12 +133,18 @@ class build_p3d(distutils.core.Command):
                     stub_path = os.path.join(os.path.dirname(dtool_path), '..', 'bin', stub_name)
                     stub_file = open(stub_path, 'rb')
 
-                freezer.generateRuntimeFromStub(os.path.join(builddir, app.runtimename), stub_file)
+                freezer.generateRuntimeFromStub(os.path.join(builddir, appname), stub_file)
                 stub_file.close()
 
                 freezer_extras.update(freezer.extras)
                 freezer_modules.update(freezer.getAllModuleNames())
 
+            for appname, scriptname in self.gui_apps.items():
+                create_runtime(appname, scriptname, False)
+
+            for appname, scriptname in self.console_apps.items():
+                create_runtime(appname, scriptname, True)
+
             # Copy extension modules
             for module, source_path in freezer_extras:
                 if source_path is None:
@@ -205,7 +207,7 @@ class build_p3d(distutils.core.Command):
             # Copy Game Files
             ignore_copy_list = [
                 '__pycache__',
-            ] + list(freezer_modules) + self.exclude_paths + [i.scriptname for i  in self.applications]
+            ] + list(freezer_modules) + self.exclude_paths + list(self.gui_apps.values()) + list(self.console_apps.values())
 
             for copydir in self.directories:
                 for root, dirs, files in os.walk(copydir):

+ 3 - 1
samples/asteroids/setup.py

@@ -6,7 +6,9 @@ setup(
         'build_p3d': {
             'directories': ['.'],
             'exclude_paths': ['build', 'setup.py', 'requirements.txt', 'wheels'],
-            'applications': [Application('main.py', 'asteroids')],
+            'gui_apps': {
+                'asteroids': 'main.py',
+            },
             'deploy_platforms': [
                 'manylinux1_x86_64',
                 'macosx_10_6_x86_64',