Browse Source

Copy game files when using setup.py

Mitchell Stokes 9 years ago
parent
commit
e9ae6b5bb1
1 changed files with 20 additions and 2 deletions
  1. 20 2
      direct/src/showutil/dist.py

+ 20 - 2
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)