1#!/bin/bash 2 3set -ex 4 5if [ -n "$CLANG_VERSION" ]; then 6 7 if [[ $CLANG_VERSION == 9 && $UBUNTU_VERSION == 18.04 ]]; then 8 sudo apt-get update 9 # gpg-agent is not available by default on 18.04 10 sudo apt-get install -y --no-install-recommends gpg-agent 11 wget --no-check-certificate -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - 12 apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-${CLANG_VERSION} main" 13 elif [[ $UBUNTU_VERSION == 22.04 ]]; then 14 # work around ubuntu apt-get conflicts 15 sudo apt-get -y -f install 16 fi 17 18 sudo apt-get update 19 apt-get install -y --no-install-recommends clang-"$CLANG_VERSION" 20 apt-get install -y --no-install-recommends llvm-"$CLANG_VERSION" 21 22 # Install dev version of LLVM. 23 if [ -n "$LLVMDEV" ]; then 24 sudo apt-get install -y --no-install-recommends llvm-"$CLANG_VERSION"-dev 25 fi 26 27 # Use update-alternatives to make this version the default 28 update-alternatives --install /usr/bin/clang clang /usr/bin/clang-"$CLANG_VERSION" 50 29 update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-"$CLANG_VERSION" 50 30 # Override cc/c++ to clang as well 31 update-alternatives --install /usr/bin/cc cc /usr/bin/clang 50 32 update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 50 33 34 # clang's packaging is a little messed up (the runtime libs aren't 35 # added into the linker path), so give it a little help 36 clang_lib=("/usr/lib/llvm-$CLANG_VERSION/lib/clang/"*"/lib/linux") 37 echo "$clang_lib" > /etc/ld.so.conf.d/clang.conf 38 ldconfig 39 40 # Cleanup package manager 41 apt-get autoclean && apt-get clean 42 rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 43 44fi 45