Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 28 additions & 2 deletions scripts/wave-container-shell.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand All @@ -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'"
}
Comment on lines +327 to +331

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"
Expand Down Expand Up @@ -373,6 +398,7 @@ install_ai_profile_launchers() {
fi
}

ensure_user_cargo_cache
ensure_container_history
install_ai_profile_launchers

Expand Down
7 changes: 5 additions & 2 deletions user-layer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down