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