fix: move TTS patch from build-time to runtime
The build-time COPY+RUN of patch_tts_tool.py failed because the Dockerfile starts from debian:stable-slim and only copies the ai/ build context — there's no tools/tts_tool.py in the image at build time (Hermes is on the mounted data volume). Move patching to fix-permissions.sh which runs at container startup when the data volume is mounted, so tts_tool.py is available via the venv site-packages. Also make patch_tts_tool.py robust: searches multiple paths for tts_tool.py, accepts path as argument, exits 0 instead of 1 when file/pattern not found (build must not fail).
This commit is contained in:
@@ -27,5 +27,15 @@ if [ "$(stat -c %u "$HERMES_HOME" 2>/dev/null)" != "$(id -u hermes)" ]; then
|
||||
chown hermes:hermes "$HERMES_HOME" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# ---------- Patch tts_tool.py: replace Edge TTS with Piper ----------
|
||||
# Runs at startup so the patch is applied even if the Python package is
|
||||
# updated (e.g. via pip upgrade on the volume). Idempotent -- if the
|
||||
# patch is already applied the script does nothing.
|
||||
PATCH_SCRIPT="/opt/hermes/patch_tts_tool.py"
|
||||
if [ -f "$PATCH_SCRIPT" ]; then
|
||||
echo "Applying TTS patch (Piper only, no Edge fallback)..."
|
||||
/opt/hermes/.venv/bin/python3 "$PATCH_SCRIPT" 2>&1 || true
|
||||
fi
|
||||
|
||||
# Now chain to the real entrypoint
|
||||
exec /opt/hermes/docker/entrypoint.sh "$@"
|
||||
|
||||
Reference in New Issue
Block a user