Motion-Rig / docker_patch.py
STATICAI's picture
Restore docker_patch.py from Make-It-Animatable
425c079 verified
Raw History Blame Contribute Delete
2.07 kB
"""Build-only patches to the pinned existing upstream; never modifies /data."""
from pathlib import Path
import shutil
root = Path("/opt/space/upstream")
def replace(path,old,new,count=1):
source=path.read_text()
if source.count(old) != count:
raise RuntimeError(f"Upstream patch mismatch: {path} expected {count} occurrences of {old!r}")
path.write_text(source.replace(old,new))
app=root/"app.py"
replace(app,"import spaces # isort:skip","")
replace(app,"@spaces.GPU\n","",2)
replace(app,'device = torch.device("cuda" if torch.cuda.is_available() else "cpu")',
'assert torch.cuda.is_available(), "Dedicated CUDA GPU required"\n device = torch.device("cuda")')
replace(app," cmd += \" > /dev/null 2>&1\"",
' cmd += ""')
replace(app," os.system(cmd)",
' import shlex, subprocess\n subprocess.run(shlex.split(cmd), check=True, timeout=300)')
replace(app,' fbx2glb_cmd += " > /dev/null 2>&1"',
' fbx2glb_cmd += ""')
replace(app," os.system(fbx2glb_cmd)",
' import shlex, subprocess\n subprocess.run(shlex.split(fbx2glb_cmd), check=True, timeout=300)')
additional=root/"util/dataset_mixamo_additional.py"
old='KINEMATIC_TREE = get_kinematic_tree(TEMPLATE_PATH, BONES_IDX_DICT)\nassert len(KINEMATIC_TREE) == len(MIXAMO_JOINTS)'
new='if os.path.isfile(TEMPLATE_PATH):\n KINEMATIC_TREE = get_kinematic_tree(TEMPLATE_PATH, BONES_IDX_DICT)\n assert len(KINEMATIC_TREE) == len(MIXAMO_JOINTS)\nelse:\n KINEMATIC_TREE = dataset_mixamo.KINEMATIC_TREE'
replace(additional,old,new)
for name in ("data","output"):
path=root/name
backup=root/(name+".bundled")
if path.exists():
# Docker COPY inputs may be a separate mount; rename can fail EXDEV.
# Copy then remove in the image so runtime can make the /data symlink.
shutil.copytree(path,backup,symlinks=True)
shutil.rmtree(path)
print("BUILD_PATCH_PASS: dedicated CUDA, checked exports, standard skeleton")