Răsfoiți Sursa

Adding a dist module that can be imported to use FreezeTool as part of setup.py

Mitchell Stokes 9 ani în urmă
părinte
comite
471090d1b4
1 a modificat fișierele cu 34 adăugiri și 0 ștergeri
  1. 34 0
      direct/src/showutil/dist.py

+ 34 - 0
direct/src/showutil/dist.py

@@ -0,0 +1,34 @@
+import os
+
+import distutils.dist
+import distutils.command.build
+import distutils.core
+
+from direct.showutil import FreezeTool
+
+class Distribution(distutils.dist.Distribution):
+    def __init__(self, attrs):
+        self.mainfile = ''
+        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())
+        startfile = self.distribution.mainfile
+
+        if not os.path.exists(self.build_base):
+            os.makedirs(self.build_base)
+
+        freezer = FreezeTool.Freezer()
+        freezer.addModule('__main__', filename=startfile)
+        freezer.done(addStartupModules=True)
+        freezer.generateRuntimeFromStub(basename)
+
+
+def setup(**attrs):
+    attrs.setdefault("distclass", Distribution)
+    commandClasses = attrs.setdefault("cmdclass", {})
+    commandClasses['build'] = build
+    distutils.core.setup(**attrs)