#!/usr/bin/env bash #===- libcxx/utils/docker/scripts/install_clang_package.sh -----------------===// # # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # #===-----------------------------------------------------------------------===// set -e function show_usage() { cat << EOF Usage: install_clang_package.sh [options] Install Available options: -h|--help show this help message --version the numeric version of the package to use. EOF } VERSION="9" while [[ $# -gt 0 ]]; do case "$1" in --version) shift VERSION="$1" shift ;; -h|--help) show_usage exit 0 ;; *) echo "Unknown option: $1" exit 1 esac done set -x curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - add-apt-repository -s "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs) main" apt-get update apt-get upgrade -y apt-get install -y --no-install-recommends "clang-$VERSION" # FIXME(EricWF): Remove this once the clang packages are no longer broken. if [ -f "/usr/local/bin/clang" ]; then echo "clang already exists" exit 1 else CC_BINARY="$(which clang-$VERSION)" ln -s "$CC_BINARY" "/usr/local/bin/clang" fi if [ -f "/usr/local/bin/clang++" ]; then echo "clang++ already exists" exit 1 else CXX_BINARY="$(which clang++-$VERSION)" ln -s "$CXX_BINARY" "/usr/local/bin/clang++" fi echo "Testing clang version..." clang --version echo "Testing clang++ version..." clang++ --version # Figure out the libc++ and libc++abi package versions that we want. if [ "$VERSION" == "" ]; then VERSION="$(apt-cache search 'libc\+\+-[0-9]-dev' | awk '{print $1}' | awk -F- '{print $2}')" echo "Installing version '$VERSION'" fi apt-get purge -y "libc++-$VERSION-dev" "libc++abi-$VERSION-dev" apt-get install -y --no-install-recommends "libc++-$VERSION-dev" "libc++abi-$VERSION-dev" echo "Done"