From 2cc17f4028686b7df9d6c5f61731c7050a652f70 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 4 Jun 2025 10:46:40 +0200 Subject: [PATCH] optimize uv python install --- misc/tools.func | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/misc/tools.func b/misc/tools.func index 341a82159..643229cc4 100644 --- a/misc/tools.func +++ b/misc/tools.func @@ -1068,17 +1068,23 @@ function setup_uv() { if [[ -n "$PYTHON_VERSION" ]]; then $STD msg_info "Ensuring Python $PYTHON_VERSION is available via uv..." - if ! uv python list | grep -q "cpython-${PYTHON_VERSION}-linux"; then - msg_error "Python version $PYTHON_VERSION not available via uv" + + FULL_PYTHON=$(uv python list | grep -E "^cpython-${PYTHON_VERSION//./\\.}\.[0-9]+-linux.*" | sort -V | tail -n1 | awk '{print $1}') + + if [[ -z "$FULL_PYTHON" ]]; then + msg_error "No matching Python $PYTHON_VERSION.x version found via uv" return 1 fi - if ! uv python list | grep -q "cpython-${PYTHON_VERSION}-linux.*.local/share/uv/python"; then - $STD uv python install "$PYTHON_VERSION" - msg_ok "Installed Python $PYTHON_VERSION via uv" + + # check if already installed + if uv python list | grep -q "$FULL_PYTHON.*uv/python"; then + $STD msg_ok "Python ${FULL_PYTHON#cpython-} already installed via uv" else - $STD msg_ok "Python $PYTHON_VERSION already installed via uv" + $STD uv python install "${FULL_PYTHON#cpython-}" + msg_ok "Installed Python ${FULL_PYTHON#cpython-} via uv" fi fi + } # ------------------------------------------------------------------------------