From e9ae6b5bb12fce773ea8d38eb655f39d7894e267 Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Wed, 2 Nov 2016 15:17:26 -0700 Subject: [PATCH] Copy game files when using setup.py --- direct/src/showutil/dist.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/direct/src/showutil/dist.py b/direct/src/showutil/dist.py index e84cc3d3d9..fbdfb0a27a 100644 --- a/direct/src/showutil/dist.py +++ b/direct/src/showutil/dist.py @@ -1,4 +1,6 @@ import os +import shutil +import sys import distutils.dist import distutils.command.build @@ -8,14 +10,15 @@ from direct.showutil import FreezeTool class Distribution(distutils.dist.Distribution): def __init__(self, attrs): - self.mainfile = '' + self.mainfile = 'main.py' + self.game_dir = 'game' distutils.dist.Distribution.__init__(self, attrs) class build(distutils.command.build.build): def run(self): distutils.command.build.build.run(self) - basename = os.path.join(self.build_base, self.distribution.get_fullname()) + basename = os.path.abspath(os.path.join(self.build_base, self.distribution.get_fullname())) startfile = self.distribution.mainfile if not os.path.exists(self.build_base): @@ -23,9 +26,24 @@ class build(distutils.command.build.build): freezer = FreezeTool.Freezer() freezer.addModule('__main__', filename=startfile) + freezer.excludeModule('panda3d') freezer.done(addStartupModules=True) freezer.generateRuntimeFromStub(basename) + gamedir = self.distribution.game_dir + for item in os.listdir(gamedir): + if item in ('__pycache__', startfile): + continue + src = os.path.join(gamedir, item) + dst = os.path.join(self.build_base, item) + + if os.path.isdir(src): + print("Copy dir", src, dst) + shutil.copytree(src, dst) + else: + print("Copy file", src, dst) + shutil.copy(src, dst) + def setup(**attrs): attrs.setdefault("distclass", Distribution)