155 lines
4.0 KiB
Python
155 lines
4.0 KiB
Python
""" Tool to distribute the rp and the panda3d build. """
|
|
|
|
from __future__ import print_function
|
|
|
|
import os
|
|
import sys
|
|
import shutil
|
|
from os.path import isdir, join, dirname, realpath, relpath
|
|
|
|
base_dir = realpath(dirname(__file__))
|
|
rp_dir = realpath(join(base_dir, "../../"))
|
|
os.chdir(base_dir)
|
|
|
|
sys.path.insert(0, rp_dir)
|
|
from rplibs.six.moves import input # noqa # pylint: disable=import-error
|
|
|
|
# TODO: Add option to skip gui folders if debugger is disabled
|
|
|
|
rp_ignores = [
|
|
|
|
# data
|
|
"skybox-blend.zip",
|
|
"skybox.jpg",
|
|
"skybox-2.jpg",
|
|
"default_cubemap/source",
|
|
"default_cubemap/source_2",
|
|
"default_cubemap/filter.compute.glsl",
|
|
"default_cubemap/filter.py",
|
|
"data/generate_txo_files.py",
|
|
"README.md",
|
|
"environment_brdf/generate_reference.py",
|
|
"run_mitsuba.bat",
|
|
".mip",
|
|
".xml",
|
|
".exr",
|
|
".psd",
|
|
".diff",
|
|
".pyc",
|
|
".pdb",
|
|
"__pycache__",
|
|
"environment_brdf/res/",
|
|
"film_grain/generate.py",
|
|
"film_grain/grain.compute.glsl",
|
|
"ies_profiles/PREVIEWS.jpg",
|
|
"loading_screen_bg.png",
|
|
|
|
|
|
# rpcore
|
|
"native/scripts",
|
|
"native/source",
|
|
"native/win_amd",
|
|
"native/win_i386",
|
|
"native/.gitignore",
|
|
"native/build.py",
|
|
"native/CMakeLists",
|
|
"native/update_module_builder.py",
|
|
"native/config.ini",
|
|
|
|
# rpplugins
|
|
".ffxml",
|
|
"bloom/resources/SOURCE.txt",
|
|
"bloom/resources/lens_dirt.png",
|
|
"clouds/resources/generate_",
|
|
"clouds/resources/noise.inc",
|
|
"clouds/resources/precompute.py",
|
|
"color_correction/resources/film_luts_raw",
|
|
"color_correction/resources/generate_",
|
|
"plugin_prefab",
|
|
"scattering/resources/hosek_wilkie_scattering",
|
|
|
|
"toolkit",
|
|
|
|
]
|
|
|
|
panda_ignores = [
|
|
".pdb",
|
|
".pyc",
|
|
"python/.vs",
|
|
"python/include",
|
|
]
|
|
|
|
app_ignores = [
|
|
".pyc",
|
|
".blend"
|
|
]
|
|
|
|
|
|
def copy_tree(source_dir, dest_dir, ignorelist, tree_pth):
|
|
source = join(source_dir, tree_pth)
|
|
dest = join(dest_dir, tree_pth)
|
|
for basepath, dirnames, files in os.walk(source):
|
|
for f in files:
|
|
abspath = realpath(join(basepath, f))
|
|
abspath = abspath.replace("\\", "/")
|
|
|
|
for ignore in ignorelist:
|
|
if ignore in abspath:
|
|
break
|
|
else:
|
|
local_pth = relpath(abspath, start=source)
|
|
dest_pth = join(dest, local_pth)
|
|
dname = dirname(dest_pth)
|
|
if not isdir(dname):
|
|
print("Creating", dname)
|
|
os.makedirs(dname)
|
|
shutil.copyfile(abspath, dest_pth)
|
|
|
|
|
|
def distribute():
|
|
print("Render Pipeline Distributor v0.1")
|
|
print("")
|
|
print("Copying tree ..")
|
|
|
|
dist_folder_name = "built"
|
|
|
|
tmp_dir = join(base_dir, dist_folder_name, "render_pipeline")
|
|
if isdir(tmp_dir):
|
|
shutil.rmtree(tmp_dir)
|
|
os.makedirs(tmp_dir)
|
|
|
|
for dname in ("config", "data", "rplibs", "effects", "rpcore", "rpplugins", "toolkit"):
|
|
copy_tree(rp_dir, tmp_dir, rp_ignores, dname)
|
|
|
|
shutil.copyfile(join(rp_dir, "LICENSE.txt"), join(tmp_dir, "LICENSE.txt"))
|
|
|
|
print("Copying Panda3D build ...")
|
|
|
|
python_pth = realpath(dirname(sys.executable))
|
|
panda_pth = realpath(join(python_pth, ".."))
|
|
|
|
tmp_dir = join(base_dir, dist_folder_name, "panda3d")
|
|
if isdir(tmp_dir):
|
|
shutil.rmtree(tmp_dir)
|
|
os.makedirs(tmp_dir)
|
|
|
|
for dname in ("direct", "etc", "models", "panda3d", "pandac", "python"):
|
|
copy_tree(panda_pth, tmp_dir, panda_ignores, dname)
|
|
|
|
copy_tree(panda_pth, tmp_dir, panda_ignores + [".exe"], "bin")
|
|
|
|
shutil.copyfile(join(panda_pth, "LICENSE"), join(tmp_dir, "LICENSE.txt"))
|
|
|
|
# Copy launcher script
|
|
shutil.copyfile(
|
|
join(base_dir, "launch.templ.bat"), join(base_dir, dist_folder_name, "launch.bat"))
|
|
|
|
# Copy application
|
|
app_pth = join(base_dir, "../../../RenderPipeline-Samples/01-Material-Demo/")
|
|
tmp_dir = join(base_dir, dist_folder_name, "application")
|
|
|
|
copy_tree(app_pth, tmp_dir, app_ignores, ".")
|
|
|
|
if __name__ == "__main__":
|
|
distribute()
|