mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-03 09:53:45 +00:00
The signature mismatch error persists because 'uv sync' installs and potentially imports the llama-stack package, caching provider modules in memory BEFORE we do the editable install with fresh source code. This fix adds the --no-install-project flag to 'uv sync', which: 1. Installs all dependencies but skips installing the project itself 2. Prevents Python from importing and caching provider modules 3. Ensures the subsequent 'uv pip install -e .' loads fresh source code This should finally resolve the persistent signature mismatch errors in CI where the protocol has 'authorization' parameter but provider implementations appear not to.
83 lines
3.3 KiB
YAML
83 lines
3.3 KiB
YAML
name: Setup runner
|
|
description: Prepare a runner for the tests (install uv, python, project dependencies, etc.)
|
|
inputs:
|
|
python-version:
|
|
description: The Python version to use
|
|
required: false
|
|
default: "3.12"
|
|
client-version:
|
|
description: The llama-stack-client-python version to test against (latest or published)
|
|
required: false
|
|
default: "latest"
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@6b9c6063abd6010835644d4c2e1bef4cf5cd0fca # v6.0.1
|
|
with:
|
|
python-version: ${{ inputs.python-version }}
|
|
version: 0.7.6
|
|
|
|
- name: Configure client installation
|
|
id: client-config
|
|
uses: ./.github/actions/install-llama-stack-client
|
|
with:
|
|
client-version: ${{ inputs.client-version }}
|
|
|
|
- name: Install dependencies
|
|
shell: bash
|
|
env:
|
|
UV_EXTRA_INDEX_URL: ${{ steps.client-config.outputs.uv-extra-index-url }}
|
|
PYTHONDONTWRITEBYTECODE: 1
|
|
run: |
|
|
# Export UV env vars for current step and persist to GITHUB_ENV for subsequent steps
|
|
if [ -n "$UV_EXTRA_INDEX_URL" ]; then
|
|
export UV_INDEX_STRATEGY=unsafe-best-match
|
|
echo "UV_EXTRA_INDEX_URL=$UV_EXTRA_INDEX_URL" >> $GITHUB_ENV
|
|
echo "UV_INDEX_STRATEGY=$UV_INDEX_STRATEGY" >> $GITHUB_ENV
|
|
echo "Exported UV environment variables for current and subsequent steps"
|
|
fi
|
|
|
|
echo "Clearing cached virtual environment to ensure fresh install"
|
|
# Remove cached venv that may contain old code
|
|
if [ -d ".venv" ]; then
|
|
echo "Removing cached .venv directory"
|
|
rm -rf .venv
|
|
fi
|
|
|
|
# Clear Python bytecode cache
|
|
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
|
find . -name "*.pyc" -delete 2>/dev/null || true
|
|
|
|
# Clear uv's cache directory to force rebuilding wheels from source
|
|
if [ -n "$UV_CACHE_DIR" ] && [ -d "$UV_CACHE_DIR" ]; then
|
|
echo "Clearing UV cache at $UV_CACHE_DIR"
|
|
rm -rf "$UV_CACHE_DIR"/*
|
|
fi
|
|
|
|
echo "Syncing dependencies with uv (will create fresh venv)"
|
|
# Use --no-install-project to avoid installing llama-stack yet (we'll do it later with -e)
|
|
# This prevents Python from importing old code during sync
|
|
uv sync --all-groups --no-install-project
|
|
|
|
echo "Force reinstalling llama-stack from source to ensure latest changes"
|
|
uv pip install --force-reinstall --no-deps -e .
|
|
|
|
echo "Installing ci-tests distribution dependencies"
|
|
uv run llama stack list-deps ci-tests | xargs -L1 uv pip install
|
|
|
|
echo "Installing ad-hoc dependencies"
|
|
uv pip install faiss-cpu
|
|
|
|
# Install specific client version after sync if needed
|
|
if [ "${{ steps.client-config.outputs.install-after-sync }}" = "true" ]; then
|
|
echo "Installing llama-stack-client from: ${{ steps.client-config.outputs.install-source }}"
|
|
uv pip install ${{ steps.client-config.outputs.install-source }}
|
|
fi
|
|
|
|
echo "Final cleanup: removing all bytecode cache after installations"
|
|
find . -name "*.pyc" -type f -delete 2>/dev/null || true
|
|
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
|
|
|
echo "Installed llama packages"
|
|
uv pip list | grep llama
|