diff --git a/llvm.sh b/llvm.sh index 1ab9dd9..e615bf9 100755 --- a/llvm.sh +++ b/llvm.sh @@ -13,6 +13,7 @@ set -eux usage() { set +x echo "Usage: $0 [llvm_major_version] [all] [OPTIONS]" 1>&2 + echo -e "latest\t\t\tInstall the latest available major version." 1>&2 echo -e "all\t\t\tInstall all packages." 1>&2 echo -e "-n=code_name\t\tSpecifies the distro codename, for example bionic" 1>&2 echo -e "-h\t\t\tPrints this help." 1>&2 @@ -159,17 +160,18 @@ LLVM_VERSION_PATTERNS[19]="-19" LLVM_VERSION_PATTERNS[20]="-20" LLVM_VERSION_PATTERNS[21]="-21" LLVM_VERSION_PATTERNS[22]="" +LLVM_VERSION_PATTERNS["latest"]="" if [ ! ${LLVM_VERSION_PATTERNS[$LLVM_VERSION]+_} ]; then echo "This script does not support LLVM version $LLVM_VERSION" exit 3 fi -LLVM_VERSION_STRING=${LLVM_VERSION_PATTERNS[$LLVM_VERSION]} +LLVM_REPO_SUFFIX=${LLVM_VERSION_PATTERNS[$LLVM_VERSION]} # join the repository name if [[ -n "${CODENAME}" ]]; then - REPO_NAME="deb ${BASE_URL}/${CODENAME}/ llvm-toolchain${LINKNAME}${LLVM_VERSION_STRING} main" + REPO_NAME="deb ${BASE_URL}/${CODENAME}/ llvm-toolchain${LINKNAME}${LLVM_REPO_SUFFIX} main" # check if the repository exists for the distro and version if ! wget -q --method=HEAD ${BASE_URL}/${CODENAME} &> /dev/null && \ ! curl -sSLI -XHEAD ${BASE_URL}/${CODENAME} &> /dev/null; then @@ -213,7 +215,7 @@ elif [[ $is_new_debian -eq 1 ]]; then Architectures: amd64 arm64 Signed-By: /etc/apt/trusted.gpg.d/apt.llvm.org.asc URIs: ${BASE_URL}/${CODENAME}/ -Suites: llvm-toolchain${LINKNAME}${LLVM_VERSION_STRING} +Suites: llvm-toolchain${LINKNAME}${LLVM_REPO_SUFFIX} Components: main" echo "$TEXT_TO_ADD" | tee -a "$SOURCES_FILE" > /dev/null else @@ -221,6 +223,12 @@ else fi apt-get update + +if [[ "$LLVM_VERSION" == "latest" ]]; then + LLVM_VERSION=$(apt-cache search '^llvm-[0-9]+$' | awk '{print $1}' | sed "s/llvm-//" | sort -n | tail -n 1) + echo "Installing version=$LLVM_VERSION" +fi + PKG="clang-$LLVM_VERSION lldb-$LLVM_VERSION lld-$LLVM_VERSION clangd-$LLVM_VERSION" if [[ $ALL -eq 1 ]]; then # same as in test-install.sh