瀏覽代碼

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 年之前
父節點
當前提交
9723cb62d9
共有 2 個文件被更改,包括 18 次插入14 次删除
  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',