fix(macos_container): mount supervise db's parent dir, not the file
Apple's `container run --mount type=bind` only accepts directory sources — a file source fails with "path '<file>' is not a directory". Move the sqlite db into its own ~/.bot-bottle/db/ subdirectory so it can be bind-mounted the same way the CA/routes mounts already are, without exposing the rest of ~/.bot-bottle. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -405,7 +405,15 @@ def _sidecar_mounts(
|
||||
|
||||
sp = plan.supervise_plan
|
||||
if sp is not None:
|
||||
mounts.append((str(sp.db_path), DB_PATH_IN_CONTAINER, False))
|
||||
# `container run --mount type=bind` only accepts directory
|
||||
# sources (a file source fails with "is not a directory") —
|
||||
# mount db_path's dedicated parent dir instead of the file
|
||||
# itself, same as the CA/routes mounts above.
|
||||
mounts.append((
|
||||
str(sp.db_path.parent),
|
||||
str(Path(DB_PATH_IN_CONTAINER).parent),
|
||||
False,
|
||||
))
|
||||
|
||||
return tuple(mounts)
|
||||
|
||||
|
||||
@@ -110,7 +110,10 @@ def host_db_path() -> Path:
|
||||
# Calls bot_bottle_root() through this module's globals so that patches
|
||||
# on supervise.bot_bottle_root propagate to callers going through
|
||||
# supervise.host_db_path().
|
||||
return bot_bottle_root() / HOST_DB_FILENAME
|
||||
#
|
||||
# Kept in its own "db" subdirectory (see supervise_types.host_db_path
|
||||
# for why) — must stay in sync with that copy.
|
||||
return bot_bottle_root() / "db" / HOST_DB_FILENAME
|
||||
|
||||
|
||||
def audit_log_path(component: str, slug: str) -> Path:
|
||||
|
||||
@@ -50,7 +50,14 @@ def bot_bottle_root() -> Path:
|
||||
def host_db_path() -> Path:
|
||||
# Look up bot_bottle_root through this module's live namespace so that
|
||||
# monkey-patches on supervise_types.bot_bottle_root take effect.
|
||||
return sys.modules[__name__].bot_bottle_root() / HOST_DB_FILENAME
|
||||
#
|
||||
# Lives in its own "db" subdirectory, not directly under
|
||||
# bot_bottle_root(), so backends that can only bind-mount
|
||||
# directories (macos_container's `container run --mount`, which
|
||||
# rejects file sources with "is not a directory") can share this
|
||||
# one file with a sidecar without also exposing bot_bottle_root()'s
|
||||
# other contents (git-gate keys, per-bottle state, etc.).
|
||||
return sys.modules[__name__].bot_bottle_root() / "db" / HOST_DB_FILENAME
|
||||
|
||||
|
||||
def _require_str(raw: dict[str, object], key: str) -> str:
|
||||
|
||||
Reference in New Issue
Block a user