|
@@ -1,4 +1,6 @@
|
|
|
import os
|
|
import os
|
|
|
|
|
+import shutil
|
|
|
|
|
+import sys
|
|
|
|
|
|
|
|
import distutils.dist
|
|
import distutils.dist
|
|
|
import distutils.command.build
|
|
import distutils.command.build
|
|
@@ -8,14 +10,15 @@ from direct.showutil import FreezeTool
|
|
|
|
|
|
|
|
class Distribution(distutils.dist.Distribution):
|
|
class Distribution(distutils.dist.Distribution):
|
|
|
def __init__(self, attrs):
|
|
def __init__(self, attrs):
|
|
|
- self.mainfile = ''
|
|
|
|
|
|
|
+ self.mainfile = 'main.py'
|
|
|
|
|
+ self.game_dir = 'game'
|
|
|
distutils.dist.Distribution.__init__(self, attrs)
|
|
distutils.dist.Distribution.__init__(self, attrs)
|
|
|
|
|
|
|
|
|
|
|
|
|
class build(distutils.command.build.build):
|
|
class build(distutils.command.build.build):
|
|
|
def run(self):
|
|
def run(self):
|
|
|
distutils.command.build.build.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
|
|
startfile = self.distribution.mainfile
|
|
|
|
|
|
|
|
if not os.path.exists(self.build_base):
|
|
if not os.path.exists(self.build_base):
|
|
@@ -23,9 +26,24 @@ class build(distutils.command.build.build):
|
|
|
|
|
|
|
|
freezer = FreezeTool.Freezer()
|
|
freezer = FreezeTool.Freezer()
|
|
|
freezer.addModule('__main__', filename=startfile)
|
|
freezer.addModule('__main__', filename=startfile)
|
|
|
|
|
+ freezer.excludeModule('panda3d')
|
|
|
freezer.done(addStartupModules=True)
|
|
freezer.done(addStartupModules=True)
|
|
|
freezer.generateRuntimeFromStub(basename)
|
|
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):
|
|
def setup(**attrs):
|
|
|
attrs.setdefault("distclass", Distribution)
|
|
attrs.setdefault("distclass", Distribution)
|