--- - name: get latest stable github release uri: url: https://api.github.com/repos/llvm/llvm-project/releases/latest headers: '{{github_auth_headers}}' register: llvm_latest - name: read /etc/os-release slurp: src: /etc/os-release register: os_release_b64 - name: extract UBUNTU_CODENAME= 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}}' environment: '{{proxy_environment}}' - 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