python_only_compile.sh 2.31 KB
Newer Older
1
2
3
4
5
6
#!/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

7
merge_base_commit=$(git merge-base HEAD origin/main)
8
echo "INFO: current merge base commit with main: $merge_base_commit"
9
10
git show --oneline -s $merge_base_commit

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 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

45
46
47
48
49
cd /vllm-workspace/

# uninstall vllm
pip3 uninstall -y vllm
# restore the original files
50
mv src/vllm ./vllm
51
52
53
54
55
56
57

# remove all compilers
apt remove --purge build-essential -y
apt autoremove -y

echo 'import os; os.system("touch /tmp/changed.file")' >> vllm/__init__.py

58
VLLM_PRECOMPILED_WHEEL_COMMIT=$merge_base_commit VLLM_USE_PRECOMPILED=1 pip3 install -vvv -e .
59
60
61
62
63
64

# Run the script
python3 -c 'import vllm'

# Check if the clangd log file was created
if [ ! -f /tmp/changed.file ]; then
65
    echo "ERROR: changed.file was not created, python only compilation failed"
66
67
    exit 1
fi