|
15 | 15 | import tempfile |
16 | 16 | import urllib.request |
17 | 17 |
|
18 | | -# this is a copy of https://apt.llvm.org/llvm.sh modified to add support back in |
19 | | -# for older versions of clang < 8, and removed the need for clangd, lldb |
| 18 | +# This is a modified version of https://apt.llvm.org/llvm.sh that: |
| 19 | +# - Supports older versions of clang (3.9, 6.0, 7) |
| 20 | +# - Supports any future version dynamically (8+) |
| 21 | +# - Removes the need for clangd, lldb |
20 | 22 |
|
21 | 23 | LLVM_SH = """\ |
22 | 24 | #!/bin/bash |
|
46 | 48 | exit 1 |
47 | 49 | fi |
48 | 50 |
|
49 | | -declare -A LLVM_VERSION_PATTERNS |
50 | | -LLVM_VERSION_PATTERNS[3]="-3.9" |
51 | | -LLVM_VERSION_PATTERNS[6]="-6.0" |
52 | | -LLVM_VERSION_PATTERNS[7]="-7" |
53 | | -LLVM_VERSION_PATTERNS[8]="-8" |
54 | | -LLVM_VERSION_PATTERNS[9]="-9" |
55 | | -LLVM_VERSION_PATTERNS[10]="-10" |
56 | | -LLVM_VERSION_PATTERNS[11]="-11" |
57 | | -LLVM_VERSION_PATTERNS[12]="-12" |
58 | | -LLVM_VERSION_PATTERNS[13]="-13" |
59 | | -LLVM_VERSION_PATTERNS[14]="-14" |
60 | | -LLVM_VERSION_PATTERNS[15]="-15" |
61 | | -LLVM_VERSION_PATTERNS[16]="-16" |
62 | | -LLVM_VERSION_PATTERNS[17]="-17" |
63 | | -LLVM_VERSION_PATTERNS[18]="-18" |
64 | | -
|
65 | | -if [ ! ${LLVM_VERSION_PATTERNS[$LLVM_VERSION]+_} ]; then |
66 | | - echo "This script does not support LLVM version $LLVM_VERSION" |
67 | | - exit 3 |
68 | | -fi |
| 51 | +# Determine the version string suffix for package names |
| 52 | +# Old versions (3, 6, 7) have special suffixes and are explicitly set to hardcoded values. |
| 53 | +# 8+ use -VERSION format. This should be the case moving forward but may need to be changed |
| 54 | +# if llvm changes it in the future and `latest` fails. |
| 55 | +case "$LLVM_VERSION" in |
| 56 | + 3) LLVM_VERSION_STRING="-3.9" ;; |
| 57 | + 6) LLVM_VERSION_STRING="-6.0" ;; |
| 58 | + 7) LLVM_VERSION_STRING="-7" ;; |
| 59 | + *) LLVM_VERSION_STRING="-${LLVM_VERSION}" ;; |
| 60 | +esac |
69 | 61 |
|
70 | | -LLVM_VERSION_STRING=${LLVM_VERSION_PATTERNS[$LLVM_VERSION]} |
| 62 | +# Get the codename for the distribution |
| 63 | +CODENAME=$(lsb_release -cs) |
71 | 64 |
|
72 | 65 | # find the right repository name for the distro and version |
73 | 66 | case "$DIST_VERSION" in |
74 | 67 | Debian_9* ) REPO_NAME="deb http://apt.llvm.org/stretch/ llvm-toolchain-stretch$LLVM_VERSION_STRING main" ;; |
75 | 68 | Debian_10* ) REPO_NAME="deb http://apt.llvm.org/buster/ llvm-toolchain-buster$LLVM_VERSION_STRING main" ;; |
76 | 69 | Debian_11* ) REPO_NAME="deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye$LLVM_VERSION_STRING main" ;; |
77 | 70 | Debian_12* ) REPO_NAME="deb http://apt.llvm.org/bookworm/ llvm-toolchain-bookworm$LLVM_VERSION_STRING main" ;; |
| 71 | + Debian_13* ) REPO_NAME="deb http://apt.llvm.org/trixie/ llvm-toolchain-trixie$LLVM_VERSION_STRING main" ;; |
78 | 72 | Debian_unstable ) REPO_NAME="deb http://apt.llvm.org/unstable/ llvm-toolchain$LLVM_VERSION_STRING main" ;; |
79 | 73 | Debian_testing ) REPO_NAME="deb http://apt.llvm.org/unstable/ llvm-toolchain$LLVM_VERSION_STRING main" ;; |
80 | 74 | Ubuntu_16.04 ) REPO_NAME="deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial$LLVM_VERSION_STRING main" ;; |
81 | 75 | Ubuntu_18.04 ) REPO_NAME="deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic$LLVM_VERSION_STRING main" ;; |
82 | 76 | Ubuntu_18.10 ) REPO_NAME="deb http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic$LLVM_VERSION_STRING main" ;; |
83 | 77 | Ubuntu_19.04 ) REPO_NAME="deb http://apt.llvm.org/disco/ llvm-toolchain-disco$LLVM_VERSION_STRING main" ;; |
84 | | - Ubuntu_19.10 ) REPO_NAME="deb http://apt.llvm.org/eoan/ llvm-toolchain-eoan$LLVM_VERSION_STRING main" ;; |
85 | | - Ubuntu_20.04 ) REPO_NAME="deb http://apt.llvm.org/focal/ llvm-toolchain-focal$LLVM_VERSION_STRING main" ;; |
86 | | - Ubuntu_20.10 ) REPO_NAME="deb http://apt.llvm.org/groovy/ llvm-toolchain-groovy$LLVM_VERSION_STRING main" ;; |
87 | | - Ubuntu_21.04 ) REPO_NAME="deb http://apt.llvm.org/hirsute/ llvm-toolchain-hirsute$LLVM_VERSION_STRING main" ;; |
88 | | - Ubuntu_22.04 ) REPO_NAME="deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy$LLVM_VERSION_STRING main" ;; |
89 | | - Ubuntu_24.04 ) REPO_NAME="deb http://apt.llvm.org/noble/ llvm-toolchain-noble$LLVM_VERSION_STRING main" ;; |
| 78 | + Ubuntu_19.10 ) REPO_NAME="deb http://apt.llvm.org/eoan/ llvm-toolchain-eoan$LLVM_VERSION_STRING main" ;; |
| 79 | + Ubuntu_20.04 ) REPO_NAME="deb http://apt.llvm.org/focal/ llvm-toolchain-focal$LLVM_VERSION_STRING main" ;; |
| 80 | + Ubuntu_20.10 ) REPO_NAME="deb http://apt.llvm.org/groovy/ llvm-toolchain-groovy$LLVM_VERSION_STRING main" ;; |
| 81 | + Ubuntu_21.04 ) REPO_NAME="deb http://apt.llvm.org/hirsute/ llvm-toolchain-hirsute$LLVM_VERSION_STRING main" ;; |
| 82 | + Ubuntu_22.04 ) REPO_NAME="deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy$LLVM_VERSION_STRING main" ;; |
| 83 | + Ubuntu_24.04 ) REPO_NAME="deb http://apt.llvm.org/noble/ llvm-toolchain-noble$LLVM_VERSION_STRING main" ;; |
| 84 | + Ubuntu_24.10 ) REPO_NAME="deb http://apt.llvm.org/oracular/ llvm-toolchain-oracular$LLVM_VERSION_STRING main" ;; |
| 85 | + Ubuntu_25.04 ) REPO_NAME="deb http://apt.llvm.org/plucky/ llvm-toolchain-plucky$LLVM_VERSION_STRING main" ;; |
| 86 | + Ubuntu_25.10 ) REPO_NAME="deb http://apt.llvm.org/questing/ llvm-toolchain-questing$LLVM_VERSION_STRING main" ;; |
90 | 87 | * ) |
91 | | - echo "Distribution '$DISTRO' in version '$VERSION' is not supported by this script (${DIST_VERSION})." |
92 | | - exit 2 |
| 88 | + # Try to use the codename directly for unknown distributions |
| 89 | + if [ -n "$CODENAME" ]; then |
| 90 | + echo "Unknown distribution '$DIST_VERSION', trying codename '$CODENAME'" |
| 91 | + REPO_NAME="deb http://apt.llvm.org/$CODENAME/ llvm-toolchain-$CODENAME$LLVM_VERSION_STRING main" |
| 92 | + else |
| 93 | + echo "Distribution '$DISTRO' in version '$VERSION' is not supported by this script (${DIST_VERSION})." |
| 94 | + exit 2 |
| 95 | + fi |
| 96 | + ;; |
93 | 97 | esac |
94 | 98 |
|
95 | 99 |
|
|
0 commit comments