diff --git a/direct/src/showutil/dist.py b/direct/src/showutil/dist.py index 2f8e1298be..6c87dda467 100644 --- a/direct/src/showutil/dist.py +++ b/direct/src/showutil/dist.py @@ -12,10 +12,11 @@ import panda3d.core as p3d class Distribution(distutils.dist.Distribution): def __init__(self, attrs): - self.mainfile = 'main.py' - self.game_dir = 'game' + self.startfile = '' + self.directories = [] + self.files = [] + self.exclude_paths = [] self.exclude_modules = [] - self.extras = [] distutils.dist.Distribution.__init__(self, attrs) @@ -32,12 +33,10 @@ class build(distutils.command.build.build): distutils.dir_util.mkpath(builddir) basename = os.path.abspath(os.path.join(builddir, self.distribution.get_fullname())) - gamedir = self.distribution.game_dir - startfile = os.path.join(gamedir, self.distribution.mainfile) # Create runtime freezer = FreezeTool.Freezer() - freezer.addModule('__main__', filename=startfile) + freezer.addModule('__main__', filename=self.distribution.startfile) for exmod in self.distribution.exclude_modules: freezer.excludeModule(exmod) freezer.done(addStartupModules=True) @@ -76,26 +75,27 @@ class build(distutils.command.build.build): # Copy Game Files ignore_copy_list = [ '__pycache__', - self.distribution.mainfile, - ] + freezer.getAllModuleNames() + self.distribution.startfile, + ] + freezer.getAllModuleNames() + self.distribution.exclude_paths - for item in os.listdir(gamedir): - src = os.path.join(gamedir, item) - dst = os.path.join(builddir, item) + for copydir in self.distribution.directories: + for item in os.listdir(copydir): + src = os.path.join(copydir, item) + dst = os.path.join(builddir, item) - if item in ignore_copy_list: - print("skipping", src) - continue + if item in ignore_copy_list: + print("skipping", src) + continue - if os.path.isdir(src): - #print("Copy dir", src, dst) - distutils.dir_util.copy_tree(src, dst) - else: - #print("Copy file", src, dst) - distutils.file_util.copy_file(src, dst) + if os.path.isdir(src): + #print("Copy dir", src, dst) + distutils.dir_util.copy_tree(src, dst) + else: + #print("Copy file", src, dst) + distutils.file_util.copy_file(src, dst) # Copy extra files - for extra in self.distribution.extras: + for extra in self.distribution.files: if len(extra) == 2: src, dst = extra dst = os.path.join(builddir, dst)