54 lines
2.0 KiB
Bash
Executable File
54 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Patch existing lobe-sandbox-base image with correctly-installed uv.
|
|
# One-shot fix for the UV_INSTALL_DIR mistake in initial build.
|
|
set -euo pipefail
|
|
|
|
PROJECT="lobe-sandbox"
|
|
BUILDER="sb-patch"
|
|
IMAGE="lobe-sandbox-base"
|
|
log() { echo "==> [$(date +%H:%M:%S)] $*"; }
|
|
|
|
incus info "$BUILDER" --project "$PROJECT" >/dev/null 2>&1 && \
|
|
incus delete "$BUILDER" --project "$PROJECT" --force
|
|
|
|
log "Launch from base"
|
|
incus init "$IMAGE" "$BUILDER" --project "$PROJECT" -p sandbox-default
|
|
incus start "$BUILDER" --project "$PROJECT"
|
|
sleep 3
|
|
|
|
log "Install uv via UV_INSTALL_DIR (correct env var)"
|
|
incus exec "$BUILDER" --project "$PROJECT" -- bash -c '
|
|
rm -f /usr/local/bin/uv /usr/local/bin/uvx /root/.local/bin/uv /root/.local/bin/uvx 2>/dev/null || true
|
|
curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR=/usr/local/bin UV_NO_MODIFY_PATH=1 sh
|
|
ls -la /usr/local/bin/uv /usr/local/bin/uvx
|
|
'
|
|
|
|
log "Verify uv as root AND as sandbox user"
|
|
incus exec "$BUILDER" --project "$PROJECT" -- uv --version
|
|
incus exec "$BUILDER" --project "$PROJECT" --user 1000 -- uv --version
|
|
|
|
log "Realistic LLM flow: create venv, install requests"
|
|
incus exec "$BUILDER" --project "$PROJECT" --user 1000 --cwd /workspace -- bash -c '
|
|
uv venv .venv --seed 2>&1 | tail -3
|
|
uv pip install --python .venv/bin/python requests 2>&1 | tail -3
|
|
.venv/bin/python -c "import requests; print(\"requests\", requests.__version__)"
|
|
'
|
|
|
|
log "Cleanup cache (shrink image)"
|
|
incus exec "$BUILDER" --project "$PROJECT" --user 1000 -- rm -rf /home/sandbox/.cache /workspace/.venv
|
|
incus exec "$BUILDER" --project "$PROJECT" -- bash -c "rm -rf /root/.cache /tmp/* /var/tmp/*"
|
|
|
|
log "Stop builder"
|
|
incus stop "$BUILDER" --project "$PROJECT"
|
|
|
|
log "Replace image alias"
|
|
incus image delete "$IMAGE" --project "$PROJECT" || true
|
|
incus publish "$BUILDER" --project "$PROJECT" --alias "$IMAGE"
|
|
|
|
log "Cleanup patch container"
|
|
incus delete "$BUILDER" --project "$PROJECT"
|
|
|
|
log "Final"
|
|
incus image list --project "$PROJECT"
|
|
log "DONE"
|