Fixes #16 by replacing uses of the `apt_key:` module with `get_url:` to download apt keyrings into `/etc/apt/keyrings`, then used `signed-by=/etc/path/keyrings/<keyring>` in the appropriate sources.list file.
108 lines
2.7 KiB
YAML
108 lines
2.7 KiB
YAML
---
|
|
- name: get latest stable github release
|
|
uri:
|
|
url: https://api.github.com/repos/llvm/llvm-project/releases/latest
|
|
register: llvm_latest
|
|
|
|
- name: read /etc/os-release
|
|
slurp:
|
|
src: /etc/os-release
|
|
register: os_release_b64
|
|
- name: extract UBUNTU_CODENAME=<name> to support dirivitive distros
|
|
set_fact:
|
|
ubuntu_codename: >-
|
|
{{
|
|
os_release_b64.content | b64decode |
|
|
regex_search('UBUNTU_CODENAME=.*') |
|
|
replace('UBUNTU_CODENAME=', '')
|
|
}}
|
|
|
|
- set_fact:
|
|
llvm_major_version:
|
|
'{{llvm_latest.json.tag_name[8:llvm_latest.json.tag_name.find(".")]}}'
|
|
- set_fact:
|
|
llvm_apt_repo_url:
|
|
'http://apt.llvm.org/{{ubuntu_codename}}/'
|
|
llvm_apt_category:
|
|
'llvm-toolchain-{{ubuntu_codename}}-{{llvm_major_version}}'
|
|
keyring: '/etc/apt/keyrings/llvm.asc'
|
|
|
|
- name: remove old keyring
|
|
when: '"WSL" not in ansible_kernel'
|
|
become: true
|
|
apt_key:
|
|
url: https://apt.llvm.org/llvm-snapshot.gpg.key
|
|
id: 6084F3CF814B57C1CF12EFD515CF4D18AF4F7421
|
|
state: absent
|
|
|
|
- name: remove old upstream deb repository
|
|
become: true
|
|
apt_repository:
|
|
repo: 'deb {{llvm_apt_repo_url}} {{llvm_apt_category}} main'
|
|
state: absent
|
|
filename: llvm
|
|
update_cache: false
|
|
|
|
- name: remove old upstream deb-src repository
|
|
become: true
|
|
apt_repository:
|
|
repo: 'deb-src {{llvm_apt_repo_url}} {{llvm_apt_category}} main'
|
|
state: absent
|
|
filename: llvm
|
|
update_cache: false
|
|
|
|
- name: add apt repository key
|
|
become: true
|
|
get_url:
|
|
url: https://apt.llvm.org/llvm-snapshot.gpg.key
|
|
dest: '{{keyring}}'
|
|
|
|
- name: add upstream deb repository
|
|
become: true
|
|
apt_repository:
|
|
repo: >
|
|
deb [signed-by={{keyring}}]
|
|
{{llvm_apt_repo_url}} {{llvm_apt_category}} main
|
|
state: present
|
|
filename: llvm
|
|
update_cache: false
|
|
|
|
- name: add upstream deb-src repository
|
|
become: true
|
|
apt_repository:
|
|
repo: >
|
|
deb-src [signed-by={{keyring}}]
|
|
{{llvm_apt_repo_url}} {{llvm_apt_category}} main
|
|
state: present
|
|
filename: llvm
|
|
update_cache: false
|
|
|
|
- name: update apt cache
|
|
become: true
|
|
apt:
|
|
update_cache: true
|
|
|
|
- name: install apt packages
|
|
become: true
|
|
apt:
|
|
name:
|
|
- clang-{{llvm_major_version}}
|
|
- clang-format-{{llvm_major_version}}
|
|
- clang-tidy-{{llvm_major_version}}
|
|
- clang-tools-{{llvm_major_version}}
|
|
- clangd-{{llvm_major_version}}
|
|
- llvm-{{llvm_major_version}}
|
|
state: latest
|
|
install_recommends: true
|
|
|
|
- name: update alternatives
|
|
become: true
|
|
alternatives:
|
|
link: '/usr/bin/{{item}}'
|
|
name: '{{item}}'
|
|
path: '/usr/bin/{{item}}-{{llvm_major_version}}'
|
|
priority: '{{llvm_major_version}}0'
|
|
with_items:
|
|
- clang-format
|
|
- clangd
|