Skip to content

Instantly share code, notes, and snippets.

@alxschwarz
Last active June 29, 2016 11:27
Show Gist options
  • Select an option

  • Save alxschwarz/34e8cb271c7e7ce42f59cdd419dbc16f to your computer and use it in GitHub Desktop.

Select an option

Save alxschwarz/34e8cb271c7e7ce42f59cdd419dbc16f to your computer and use it in GitHub Desktop.
clang-3.8.sh
#!/bin/bash
export DEBIAN_FRONTEND=noninteractive
print_status() {
echo
echo "## $1"
echo
}
bail() {
echo 'Error executing command, exiting'
exit 1
}
exec_cmd_nobail() {
echo "+ $1"
bash -c "$1"
}
exec_cmd() {
exec_cmd_nobail "$1" || bail
}
create_clang_symlink () {
if [ -f /usr/bin/clang++-3.8 ] && [ ! -L /usr/bin/clang++ ]; then
sudo ln -s /usr/bin/clang++-3.8 /usr/bin/clang++
fi
}
create_llvm_symlink () {
if [ -f /usr/bin/usr/bin/llvm-symbolizer-3.8 ] && [ ! -L /usr/bin/llvm-symbolizer ]; then
sudo ln -s /usr/bin/llvm-symbolizer-3.8 /usr/bin/llvm-symbolizer
fi
}
print_status "Removing clang and llvm packages..."
exec_cmd 'sudo apt-get remove clang* -y && sudo apt-get autoremove -y'
print_status "Adding llvm-3.8 repo key"
if [ -x /usr/bin/curl ]; then
exec_cmd 'curl -s http://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -'
else
exec_cmd 'wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -'
fi
print_status 'Creating apt sources list file for llvm repo...'
exec_cmd "echo '' | sudo tee /etc/apt/sources.list.d/llvm.list"
exec_cmd "echo 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.8 main' | sudo tee -a /etc/apt/sources.list.d/llvm.list"
exec_cmd "echo 'deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.8 main' | sudo tee -a /etc/apt/sources.list.d/llvm.list"
print_status "Updating repo metadata..."
exec_cmd 'sudo apt-get update'
print_status "Installing clang and llvm packages..."
exec_cmd 'sudo apt-get install clang-3.8 lldb-3.8 clang-tidy-3.8 -y'
print_status 'Creating symlink for clang++'
create_clang_symlink
print_status 'Creating symlink for llvm'
create_llvm_symlink
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment