fix(blender-run): unique remote job dir per local path, mirrored with --delete

draupnir review: the remote job dir was keyed on the basename alone, so two
local dirs with the same name shared one remote dir, and a rerun inherited
stale files. The dir is now <basename>-<8 hex of sha256(abs path)>, and it is
mirrored with rsync --delete, confined to that one directory. There is no rm on
a computed path. Verified: a file deleted locally is gone from the rerun's
remote dir. The /defaults stderr line is documented as harmless noise.
This commit is contained in:
vh
2026-09-28 08:43:55 -07:00
parent d0f68a3b18
commit 46276611a7
2 changed files with 23 additions and 12 deletions
+8 -5
View File
@@ -24,10 +24,11 @@ scripts/blender-run -- --python-expr 'import bpy; print(bpy.app.version_string)'
```
- Always adds `-b --factory-startup --python-exit-code 1`. Arguments go after `--`.
- **Files:** fv-ml1 does not mount `/mnt/smithy`. `--job DIR` copies DIR to
`fv-ml1:/tank/blender/jobs/<name>/`, runs with that as the working directory, and copies
new or changed files back into DIR. Nothing is deleted on either side. Use relative
input paths inside the job.
- **Files:** fv-ml1 does not mount `/mnt/smithy`. `--job DIR` mirrors DIR to
`fv-ml1:/tank/blender/jobs/<basename>-<hash of DIR's absolute path>/`, runs with that as
the working directory, and copies new or changed files back into DIR. Nothing is ever
deleted locally, and a rerun starts from an exact mirror, never from leftovers. Use
relative input paths inside the job. Do not run the same DIR twice at once.
- **Engines headless (tested 2026-09-28):** Cycles on GPU (OptiX/CUDA), Cycles on CPU, EEVEE
(EGL, no display needed, ~9 s with the shader compile on first use), Workbench. In 5.2 the
EEVEE id is `BLENDER_EEVEE` (`BLENDER_EEVEE_NEXT` is gone). For Cycles GPU, set
@@ -44,7 +45,9 @@ scripts/blender-run -- --python-expr 'import bpy; print(bpy.app.version_string)'
sets it.
- `render.filepath` must be **absolute**. Blender does not resolve a relative output path
against the working directory ("cannot save 'out.png'"). Importers and Python file I/O do.
- "HIPEW initialization failed" on stderr is harmless: it is the AMD backend probing.
- Harmless stderr noise: "HIPEW initialization failed" (the AMD backend probing), and "Failed to
create secure directory (/defaults): Operation not permitted" (the image's runtime-dir setup
running as a non-root user; reported by draupnir 2026-09-28).
- The first OptiX render in a process includes about 1-2 s of kernel load.
## blender-mcp (agents)