Skip to content

Commit 400b450

Browse files
committed
remove hardcoded versioning for clang post 8 to support later versions without needing to change builder
1 parent 9b2ebe9 commit 400b450

File tree

1 file changed

+35
-31
lines changed

1 file changed

+35
-31
lines changed

builder/imports/llvm.py

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
import tempfile
1616
import urllib.request
1717

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
2022

2123
LLVM_SH = """\
2224
#!/bin/bash
@@ -46,50 +48,52 @@
4648
exit 1
4749
fi
4850
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
6961
70-
LLVM_VERSION_STRING=${LLVM_VERSION_PATTERNS[$LLVM_VERSION]}
62+
# Get the codename for the distribution
63+
CODENAME=$(lsb_release -cs)
7164
7265
# find the right repository name for the distro and version
7366
case "$DIST_VERSION" in
7467
Debian_9* ) REPO_NAME="deb http://apt.llvm.org/stretch/ llvm-toolchain-stretch$LLVM_VERSION_STRING main" ;;
7568
Debian_10* ) REPO_NAME="deb http://apt.llvm.org/buster/ llvm-toolchain-buster$LLVM_VERSION_STRING main" ;;
7669
Debian_11* ) REPO_NAME="deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye$LLVM_VERSION_STRING main" ;;
7770
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" ;;
7872
Debian_unstable ) REPO_NAME="deb http://apt.llvm.org/unstable/ llvm-toolchain$LLVM_VERSION_STRING main" ;;
7973
Debian_testing ) REPO_NAME="deb http://apt.llvm.org/unstable/ llvm-toolchain$LLVM_VERSION_STRING main" ;;
8074
Ubuntu_16.04 ) REPO_NAME="deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial$LLVM_VERSION_STRING main" ;;
8175
Ubuntu_18.04 ) REPO_NAME="deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic$LLVM_VERSION_STRING main" ;;
8276
Ubuntu_18.10 ) REPO_NAME="deb http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic$LLVM_VERSION_STRING main" ;;
8377
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" ;;
9087
* )
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+
;;
9397
esac
9498
9599

0 commit comments

Comments
 (0)