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):