#!/bin/bash # # Create isolated venv for embedding service (.venv-embedding). # set -euo pipefail PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "${PROJECT_ROOT}" VENV_DIR="${PROJECT_ROOT}/.venv-embedding" PYTHON_BIN="${PYTHON_BIN:-python3}" TMP_DIR="${EMBEDDING_PIP_TMPDIR:-${PROJECT_ROOT}/.tmp/embedding-pip}" if ! command -v "${PYTHON_BIN}" >/dev/null 2>&1; then echo "ERROR: python not found: ${PYTHON_BIN}" >&2 exit 1 fi if [[ -d "${VENV_DIR}" && ! -f "${VENV_DIR}/bin/activate" ]]; then echo "Found broken venv at ${VENV_DIR}, recreating..." rm -rf "${VENV_DIR}" fi if [[ ! -d "${VENV_DIR}" ]]; then echo "Creating ${VENV_DIR}" "${PYTHON_BIN}" -m venv "${VENV_DIR}" else echo "Reusing ${VENV_DIR}" fi mkdir -p "${TMP_DIR}" export TMPDIR="${TMP_DIR}" PIP_ARGS=(--no-cache-dir) echo "Using TMPDIR=${TMPDIR}" "${VENV_DIR}/bin/python" -m pip install "${PIP_ARGS[@]}" --upgrade pip wheel "${VENV_DIR}/bin/python" -m pip install "${PIP_ARGS[@]}" -r requirements_embedding_service.txt # Install vendored clip client (for clip-as-service image backend) "${VENV_DIR}/bin/python" -m pip install "${PIP_ARGS[@]}" -e third-party/clip-as-service/client if [[ "${INSTALL_LOCAL_ST:-0}" == "1" ]]; then echo "INSTALL_LOCAL_ST=1 detected. Installing local_st extras..." "${VENV_DIR}/bin/python" -m pip install "${PIP_ARGS[@]}" -r requirements_embedding_local_st.txt fi echo echo "Done." echo "Embedding venv: ${VENV_DIR}" echo "Start service: ./scripts/start_embedding_service.sh"