Copy game files when using setup.py

This commit is contained in:
Mitchell Stokes 2016-11-02 15:17:26 -07:00
parent 471090d1b4
commit e9ae6b5bb1

View File

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