#!/bin/bash # This script tests if the python only compilation works correctly # for users who do not have any compilers installed on their system set -e merge_base_commit=$(git merge-base HEAD origin/main) echo "INFO: current merge base commit with main: $merge_base_commit" git show --oneline -s $merge_base_commit # test whether the metadata.json url is valid, retry each 3 minutes up to 5 times # this avoids cumbersome error messages & manual retries in case the precompiled wheel # for the given commit is still being built in the release pipeline meta_json_url="https://wheels.vllm.ai/$merge_base_commit/vllm/metadata.json" echo "INFO: will use metadata.json from $meta_json_url" for i in {1..5}; do echo "Checking metadata.json URL (attempt $i)..." if curl --fail "$meta_json_url" > metadata.json; then echo "INFO: metadata.json URL is valid." # check whether it is valid json by python if python3 -m json.tool metadata.json; then echo "INFO: metadata.json is valid JSON. Proceeding with the test." else echo "CRITICAL: metadata.json exists but is not valid JSON, please do report in #sig-ci channel!" exit 1 fi break fi # failure handling if [ $i -eq 5 ]; then echo "ERROR: metadata.json URL is still not valid after 5 attempts." echo "ERROR: Please check whether the precompiled wheel for commit $merge_base_commit exists." echo " NOTE: If $merge_base_commit is a new commit on main, maybe try again after its release pipeline finishes." echo " NOTE: If it fails, please report in #sig-ci channel." exit 1 else echo "WARNING: metadata.json URL is not valid. Retrying in 3 minutes..." sleep 180 fi done set -x cd /vllm-workspace/ # uninstall vllm pip3 uninstall -y vllm # restore the original files mv src/vllm ./vllm # remove all compilers apt remove --purge build-essential -y apt autoremove -y echo 'import os; os.system("touch /tmp/changed.file")' >> vllm/__init__.py VLLM_PRECOMPILED_WHEEL_COMMIT=$merge_base_commit VLLM_USE_PRECOMPILED=1 pip3 install -vvv -e . # Run the script python3 -c 'import vllm' # Check if the clangd log file was created if [ ! -f /tmp/changed.file ]; then echo "ERROR: changed.file was not created, python only compilation failed" exit 1 fi