#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" export UV_PROJECT_ENVIRONMENT="${UV_PROJECT_ENVIRONMENT:-$ROOT_DIR/.venv}" METAX_PYPI_INDEX="${METAX_PYPI_INDEX:-https://repos.metax-tech.com/r/maca-pypi/simple}" METAX_PYPI_HOST="${METAX_PYPI_HOST:-repos.metax-tech.com}" METAX_INSTALL_GPU_DEPS="${METAX_INSTALL_GPU_DEPS:-false}" METAX_TORCH_SPEC="${METAX_TORCH_SPEC:-torch}" METAX_TORCHAUDIO_SPEC="${METAX_TORCHAUDIO_SPEC:-}" METAX_TORCHVISION_SPEC="${METAX_TORCHVISION_SPEC:-}" METAX_VLLM_SPEC="${METAX_VLLM_SPEC:-vllm}" usage() { cat </dev/null 2>&1; then pip3 index versions "$LIST_PACKAGE" \ -i "$METAX_PYPI_INDEX" \ --trusted-host "$METAX_PYPI_HOST" elif command -v pip >/dev/null 2>&1; then pip index versions "$LIST_PACKAGE" \ -i "$METAX_PYPI_INDEX" \ --trusted-host "$METAX_PYPI_HOST" else python3 -m pip index versions "$LIST_PACKAGE" \ -i "$METAX_PYPI_INDEX" \ --trusted-host "$METAX_PYPI_HOST" fi exit 0 fi uv venv "$UV_PROJECT_ENVIRONMENT" uv sync --project "$ROOT_DIR/environments/metax" --no-dev --no-install-project "$@" gpu_install_args=(pip install --reinstall) if [[ "$METAX_INSTALL_GPU_DEPS" != "true" ]]; then gpu_install_args+=(--no-deps) fi gpu_install_args+=( --index-url "$METAX_PYPI_INDEX" \ --trusted-host "$METAX_PYPI_HOST" \ ) for package_spec in "$METAX_TORCH_SPEC" "$METAX_TORCHAUDIO_SPEC" "$METAX_TORCHVISION_SPEC" "$METAX_VLLM_SPEC"; do [[ -n "$package_spec" ]] && gpu_install_args+=("$package_spec") done uv "${gpu_install_args[@]}" if [[ "$METAX_INSTALL_GPU_DEPS" != "true" ]]; then echo "[sync_metax_env] Installed MetaX GPU stack with --no-deps to avoid PyPI/NVIDIA fallback." echo "[sync_metax_env] Set METAX_INSTALL_GPU_DEPS=true only if the MetaX index hosts all required GPU-stack dependencies." fi "$UV_PROJECT_ENVIRONMENT/bin/python" - <<'PY' import importlib import torch print("torch", torch.__version__) print("torch.cuda.is_available", torch.cuda.is_available()) for name in ("vllm",): module = importlib.import_module(name) print(name, getattr(module, "__version__", "unknown")) PY