wartung: Hermes-Update für den neuen Paketmanager von Hermes
Das Hermes-Update vom 25.09. scheiterte halb: neuer Code geholt, dann baute python-olm (Matrix-Extra) nicht – CMake 4 und kein clang auf der Box. MC2 startete das Gateway ohne daemon-reload neu, es lief weiter aus dem alten venv (neuer Code, alte Pakete), und die Übersicht zeigte „v0.0.0 · Aktuell“. - Update über Hermes' eigenen Starter (.hermes/bin/hermes), gebaut mit CC=gcc CXX=g++ CMAKE_POLICY_VERSION_MINIMUM=3.5, doctor-Hinweise nicht fatal, daemon-reload vor dem Neustart. - deploy/hermes-plugin-deps.sh legt trafilatura (mc2-web-lesen) in Hermes' aktive Umgebung. - Version: bei „0.0.0“ in der pyproject das Commit-Datum im Stil der neuen Tags. - Ehrliche Meldung „UNVOLLSTÄNDIG“, wenn der Code schon neu ist. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
17d4ee3ea8
commit
28888890ec
@@ -490,12 +490,23 @@ def _summarize_hermes_commits(commits: list[dict]) -> dict:
|
||||
|
||||
|
||||
def _hermes_version(path: str) -> str | None:
|
||||
"""Versionsnummer aus der pyproject.toml des Hermes-Checkouts (z. B. „0.21.3“)."""
|
||||
"""Versionsnummer des Hermes-Checkouts: bis 0.21.x aus der pyproject.toml (z. B. „0.21.3“). Seit dem neuen
|
||||
Paketmanager (Update vom 25.09.2026) steht dort „0.0.0“, und die Veröffentlichungen heißen nach dem Datum
|
||||
(v2026.8.31) — dann das Datum des ausgecheckten Commits im selben Stil („2026.9.25“)."""
|
||||
try:
|
||||
text = (Path(path) / "pyproject.toml").read_text(encoding="utf-8")
|
||||
except OSError:
|
||||
return None
|
||||
m = re.search(r'^version\s*=\s*"([^"]+)"', text, re.MULTILINE)
|
||||
if m and m.group(1) != "0.0.0":
|
||||
return m.group(1)
|
||||
try:
|
||||
datum = subprocess.run(["git", "-C", path, "log", "-1", "--format=%cs"], capture_output=True, text=True,
|
||||
timeout=5).stdout.strip()
|
||||
except (OSError, subprocess.SubprocessError):
|
||||
datum = ""
|
||||
if re.fullmatch(r"\d{4}-\d{2}-\d{2}", datum):
|
||||
return ".".join(str(int(t)) for t in datum.split("-"))
|
||||
return m.group(1) if m else None
|
||||
|
||||
|
||||
@@ -690,16 +701,33 @@ def _hermes_update_cmd() -> str:
|
||||
# bei uns der Normalfall. Die &&-Kette brach ab (kein doctor, kein /hermes-ui/-Build), der
|
||||
# Job war rot, autoupdate.sh rollte zurück und pinnte — bei GRÜNEM Gehirn-Check (06./17.09.).
|
||||
# Der Neustart passiert unten ohnehin; Richter bleibt der Postcheck.
|
||||
# Seit dem neuen Paketmanager von Hermes (Update vom 25.09.2026):
|
||||
# • Hermes startet über seinen eigenen Starter (.hermes/bin/hermes, eigene Umgebung mit Python 3.14); das alte
|
||||
# venv bleibt nur für den Rückweg. Der Updater schreibt dabei die Unit neu → daemon-reload vor dem Neustart,
|
||||
# sonst lief das Gateway weiter aus dem alten venv (neuer Code, alte Pakete).
|
||||
# • python-olm (Matrix-Extra) baut nur mit gcc (das mitgelieferte Python ist mit clang gebaut) und mit der
|
||||
# CMake-Kompatibilität für CMake 4.
|
||||
# • `doctor` endet mit 1, sobald es Hinweise gibt (fehlende optionale API-Schlüssel) — das ist kein Fehler.
|
||||
# • hermes-plugin-deps.sh legt die Pakete unserer Plugins (trafilatura für mc2-web-lesen) nach.
|
||||
starter = os.path.join(path, ".hermes", "bin", "hermes")
|
||||
hermes = starter if os.path.exists(starter) else f"{py} -m hermes_cli.main"
|
||||
bauen = "CC=gcc CXX=g++ CMAKE_POLICY_VERSION_MINIMUM=3.5"
|
||||
plugin_deps = os.path.join(_REPO_ROOT, "deploy", "hermes-plugin-deps.sh")
|
||||
return ("RC=0; "
|
||||
f"ALT=$(git -C {path} rev-parse HEAD 2>/dev/null); "
|
||||
f"bash {backup} || true; "
|
||||
f"systemctl --user stop hermes-builtin-ui || true; "
|
||||
f"{{ cd {path} && {py} -m hermes_cli.main update --yes --no-gateway-restart "
|
||||
f"&& {py} -m hermes_cli.main doctor "
|
||||
f"{{ cd {path} && {bauen} {hermes} update --yes --no-gateway-restart "
|
||||
f"&& {{ {bauen} {hermes} doctor || echo '(doctor meldet Hinweise — Richter bleibt der Gehirn-Check)'; }} "
|
||||
f"&& {build_cmd}; }} || RC=1; "
|
||||
f"bash {plugin_deps} || true; "
|
||||
f"systemctl --user daemon-reload; "
|
||||
f"systemctl --user reset-failed hermes-builtin-ui 2>/dev/null; "
|
||||
f"systemctl --user restart hermes-gateway hermes-builtin-ui || RC=1; "
|
||||
f"sleep 6; bash {postcheck} || RC=1; "
|
||||
f"if [ $RC -ne 0 ]; then echo '✗ HERMES-UPDATE FEHLGESCHLAGEN (Dienste laufen wieder, aber alter Stand)'; fi; "
|
||||
f"if [ $RC -ne 0 ]; then if [ \"$(git -C {path} rev-parse HEAD 2>/dev/null)\" != \"$ALT\" ]; then "
|
||||
f"echo '✗ HERMES-UPDATE UNVOLLSTÄNDIG (neuer Code, der Rest scheiterte — Dienste laufen, Protokoll prüfen)'; "
|
||||
f"else echo '✗ HERMES-UPDATE FEHLGESCHLAGEN (Dienste laufen wieder, aber alter Stand)'; fi; fi; "
|
||||
f"exit $RC")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user