Browse Source

deploy-ng: Replace startfile keyword with applications

applications is a list of Application objects. The Application
constructor takes two arguments: scriptname and runtimename. The
scriptname argument is the path to the Python script that acts as the
entry point to the application. The runtimename argument is the name
that will be given to the frozen runtime.
Mitchell Stokes 9 years ago
parent
commit
086e61f9c3
1 changed files with 14 additions and 11 deletions
  1. 14 11
      direct/src/showutil/dist.py

+ 14 - 11
direct/src/showutil/dist.py

@@ -1,3 +1,4 @@
+import collections
 import os
 import os
 import sys
 import sys
 
 
@@ -10,9 +11,13 @@ import distutils.file_util
 from direct.showutil import FreezeTool
 from direct.showutil import FreezeTool
 import panda3d.core as p3d
 import panda3d.core as p3d
 
 
+
+Application = collections.namedtuple('Application', 'scriptname runtimename')
+
+
 class Distribution(distutils.dist.Distribution):
 class Distribution(distutils.dist.Distribution):
     def __init__(self, attrs):
     def __init__(self, attrs):
-        self.startfile = ''
+        self.applications = []
         self.directories = []
         self.directories = []
         self.files = []
         self.files = []
         self.exclude_paths = []
         self.exclude_paths = []
@@ -32,15 +37,14 @@ class build(distutils.command.build.build):
                 distutils.dir_util.remove_tree(builddir)
                 distutils.dir_util.remove_tree(builddir)
             distutils.dir_util.mkpath(builddir)
             distutils.dir_util.mkpath(builddir)
 
 
-            basename = os.path.abspath(os.path.join(builddir, self.distribution.get_fullname()))
-
             # Create runtime
             # Create runtime
-            freezer = FreezeTool.Freezer()
-            freezer.addModule('__main__', filename=self.distribution.startfile)
-            for exmod in self.distribution.exclude_modules:
-                freezer.excludeModule(exmod)
-            freezer.done(addStartupModules=True)
-            freezer.generateRuntimeFromStub(basename)
+            for app in self.distribution.applications:
+                freezer = FreezeTool.Freezer()
+                freezer.addModule('__main__', filename=app.scriptname)
+                for exmod in self.distribution.exclude_modules:
+                    freezer.excludeModule(exmod)
+                freezer.done(addStartupModules=True)
+                freezer.generateRuntimeFromStub(app.runtimename)
 
 
             # Copy extension modules
             # Copy extension modules
             for module, source_path in freezer.extras:
             for module, source_path in freezer.extras:
@@ -75,8 +79,7 @@ class build(distutils.command.build.build):
             # Copy Game Files
             # Copy Game Files
             ignore_copy_list = [
             ignore_copy_list = [
                 '__pycache__',
                 '__pycache__',
-                self.distribution.startfile,
-            ] + freezer.getAllModuleNames() + self.distribution.exclude_paths
+            ] + freezer.getAllModuleNames() + self.distribution.exclude_paths + [i.scriptname for i  in self.distribution.applications]
 
 
             for copydir in self.distribution.directories:
             for copydir in self.distribution.directories:
                 for item in os.listdir(copydir):
                 for item in os.listdir(copydir):