local/roles/llvm/tasks/Ubuntu.yaml
Kenneth Benzie (Benie) 31a819e481 Stop using apt_key: module to install keyrings
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.
2023-06-24 11:25:54 +01:00

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