mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
Distutils: Create per-platform build directories
This commit is contained in:
parent
a628dd6edc
commit
9921cd5a97
@ -1,12 +1,14 @@
|
|||||||
import os
|
import os
|
||||||
import shutil
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import distutils.dist
|
|
||||||
import distutils.command.build
|
import distutils.command.build
|
||||||
import distutils.core
|
import distutils.core
|
||||||
|
import distutils.dir_util
|
||||||
|
import distutils.dist
|
||||||
|
import distutils.file_util
|
||||||
|
|
||||||
from direct.showutil import FreezeTool
|
from direct.showutil import FreezeTool
|
||||||
|
import panda3d.core as p3d
|
||||||
|
|
||||||
class Distribution(distutils.dist.Distribution):
|
class Distribution(distutils.dist.Distribution):
|
||||||
def __init__(self, attrs):
|
def __init__(self, attrs):
|
||||||
@ -18,40 +20,45 @@ class Distribution(distutils.dist.Distribution):
|
|||||||
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)
|
||||||
builddir = self.build_base
|
platforms = [p3d.PandaSystem.get_platform()]
|
||||||
basename = os.path.abspath(os.path.join(builddir, self.distribution.get_fullname()))
|
|
||||||
gamedir = self.distribution.game_dir
|
|
||||||
startfile = os.path.join(gamedir, self.distribution.mainfile)
|
|
||||||
|
|
||||||
if not os.path.exists(builddir):
|
for platform in platforms:
|
||||||
os.makedirs(builddir)
|
builddir = os.path.join(self.build_base, platform)
|
||||||
|
|
||||||
freezer = FreezeTool.Freezer()
|
if os.path.exists(builddir):
|
||||||
freezer.addModule('__main__', filename=startfile)
|
distutils.dir_util.remove_tree(builddir)
|
||||||
freezer.excludeModule('panda3d')
|
distutils.dir_util.mkpath(builddir)
|
||||||
freezer.done(addStartupModules=True)
|
|
||||||
freezer.generateRuntimeFromStub(basename)
|
|
||||||
|
|
||||||
ignore_copy_list = [
|
basename = os.path.abspath(os.path.join(builddir, self.distribution.get_fullname()))
|
||||||
'__pycache__',
|
gamedir = self.distribution.game_dir
|
||||||
self.distribution.mainfile,
|
startfile = os.path.join(gamedir, self.distribution.mainfile)
|
||||||
*freezer.getAllModuleNames(),
|
|
||||||
]
|
|
||||||
|
|
||||||
for item in os.listdir(gamedir):
|
freezer = FreezeTool.Freezer()
|
||||||
src = os.path.join(gamedir, item)
|
freezer.addModule('__main__', filename=startfile)
|
||||||
dst = os.path.join(builddir, item)
|
freezer.excludeModule('panda3d')
|
||||||
|
freezer.done(addStartupModules=True)
|
||||||
|
freezer.generateRuntimeFromStub(basename)
|
||||||
|
|
||||||
if item in ignore_copy_list:
|
ignore_copy_list = [
|
||||||
print("Skip", src)
|
'__pycache__',
|
||||||
continue
|
self.distribution.mainfile,
|
||||||
|
*freezer.getAllModuleNames(),
|
||||||
|
]
|
||||||
|
|
||||||
if os.path.isdir(src):
|
for item in os.listdir(gamedir):
|
||||||
print("Copy dir", src, dst)
|
src = os.path.join(gamedir, item)
|
||||||
shutil.copytree(src, dst)
|
dst = os.path.join(builddir, item)
|
||||||
else:
|
|
||||||
print("Copy file", src, dst)
|
if item in ignore_copy_list:
|
||||||
shutil.copy(src, dst)
|
print("skipping", src)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if os.path.isdir(src):
|
||||||
|
#print("Copy dir", src, dst)
|
||||||
|
distutils.dir_util.copy_tree(src, dst)
|
||||||
|
else:
|
||||||
|
#print("Copy file", src, dst)
|
||||||
|
distutils.file_util.copy_file(src, dst)
|
||||||
|
|
||||||
|
|
||||||
def setup(**attrs):
|
def setup(**attrs):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user