From 7216ce350e951d84173be3334b1792201fe8bc00 Mon Sep 17 00:00:00 2001 From: brettheap Date: Sat, 25 Jul 2026 16:30:39 -0400 Subject: [PATCH] fix: make rustBench Tauri startup durable --- devBenches/rustBench | 2 +- scripts/wave-container-shell.sh | 30 ++++++++++++++++++++++++++++-- user-layer/Dockerfile | 7 +++++-- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/devBenches/rustBench b/devBenches/rustBench index f9fbd25..b34fab7 160000 --- a/devBenches/rustBench +++ b/devBenches/rustBench @@ -1 +1 @@ -Subproject commit f9fbd25cc551f0aec8fde632cd4bd52e1c5e5e93 +Subproject commit b34fab7a0be368987afe720813e58867661cf256 diff --git a/scripts/wave-container-shell.sh b/scripts/wave-container-shell.sh index 8e0efb4..096db2b 100755 --- a/scripts/wave-container-shell.sh +++ b/scripts/wave-container-shell.sh @@ -224,9 +224,20 @@ create_with_compose() { fi local override_file + local compose_args override_file="$(write_wave_compose_override)" + compose_args=(-f "$compose_file") + if [[ "$container" == "rust-bench" && -d /mnt/wslg ]]; then + local wslg_compose_file="$bench_dir/.devcontainer/docker-compose.wslg.yml" + if [[ ! -f "$wslg_compose_file" ]]; then + echo "rustBench WSLg override is missing: $wslg_compose_file" >&2 + exit 1 + fi + compose_args+=(-f "$wslg_compose_file") + fi + compose_args+=(-f "$override_file") echo "Creating $container with docker compose..." - docker compose -f "$compose_file" -f "$override_file" up -d "$container" + docker compose "${compose_args[@]}" up -d "$container" } recreate_with_compose() { @@ -260,6 +271,12 @@ container_missing_required_mounts() { "/home/${container_user}/.grok-profiles" "/home/${container_user}/.glm-profiles" ) + if [[ "$container" == "rust-bench" ]]; then + required_mounts+=("/home/${container_user}/.cargo") + if [[ -d /mnt/wslg ]]; then + required_mounts+=("/mnt/wslg") + fi + fi local mount local destination @@ -291,7 +308,9 @@ if ! docker container inspect "$container" >/dev/null 2>&1; then else create_with_compose fi -elif [[ -f "$bench_dir/.devcontainer/devcontainer.json" ]] && container_missing_required_mounts; then +fi + +if [[ -f "$bench_dir/.devcontainer/devcontainer.json" ]] && container_missing_required_mounts; then recreate_with_compose fi @@ -305,6 +324,12 @@ ensure_container_history() { "mkdir -p '$container_history_dir' && touch '$container_history_file' && chown -R '${container_user}:${container_user}' '$container_history_dir'" } +ensure_user_cargo_cache() { + [[ "$container" == "rust-bench" ]] || return 0 + docker exec --user root "$container" sh -c \ + "mkdir -p '/home/${container_user}/.cargo' && chown -R '${container_user}:${container_user}' '/home/${container_user}/.cargo'" +} + claude_launcher="$workbenches_root/base-image/files/claude-profile" codex_launcher="$workbenches_root/base-image/files/codex-profile" provider_launcher="$workbenches_root/base-image/files/provider-profile" @@ -373,6 +398,7 @@ install_ai_profile_launchers() { fi } +ensure_user_cargo_cache ensure_container_history install_ai_profile_launchers diff --git a/user-layer/Dockerfile b/user-layer/Dockerfile index 3d79c11..ec0b541 100644 --- a/user-layer/Dockerfile +++ b/user-layer/Dockerfile @@ -126,8 +126,11 @@ RUN if [ -n "$EXTRA_CHOWN_DIRS" ]; then \ USER $USERNAME -# Pre-create .vscode-server so volume mounts inherit correct ownership -RUN mkdir -p /home/$USERNAME/.vscode-server/extensions +# Pre-create user-owned cache roots so first-use named volumes inherit the +# runtime user's ownership instead of becoming root-only. +RUN mkdir -p \ + /home/$USERNAME/.vscode-server/extensions \ + /home/$USERNAME/.cargo # Configure git credential helper RUN git config --global credential.helper gh