From 086e61f9c334146ae1ccb952edd4cf02c5786c5c Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Sun, 18 Dec 2016 11:43:38 -0800 Subject: [PATCH] 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. --- direct/src/showutil/dist.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/direct/src/showutil/dist.py b/direct/src/showutil/dist.py index 6c87dda467..5130c7d314 100644 --- a/direct/src/showutil/dist.py +++ b/direct/src/showutil/dist.py @@ -1,3 +1,4 @@ +import collections import os import sys @@ -10,9 +11,13 @@ import distutils.file_util from direct.showutil import FreezeTool import panda3d.core as p3d + +Application = collections.namedtuple('Application', 'scriptname runtimename') + + class Distribution(distutils.dist.Distribution): def __init__(self, attrs): - self.startfile = '' + self.applications = [] self.directories = [] self.files = [] self.exclude_paths = [] @@ -32,15 +37,14 @@ class build(distutils.command.build.build): distutils.dir_util.remove_tree(builddir) distutils.dir_util.mkpath(builddir) - basename = os.path.abspath(os.path.join(builddir, self.distribution.get_fullname())) - # 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 for module, source_path in freezer.extras: @@ -75,8 +79,7 @@ class build(distutils.command.build.build): # Copy Game Files ignore_copy_list = [ '__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 item in os.listdir(copydir):