--- - name: Set package directory ansible.builtin.set_fact: build_dir: "{{ aur_build_dir }}/{{ item.name }}" - name: "Retrieve package name for {{ item.name }}" ansible.builtin.command: argv: - grep - --only-matching - --perl-regexp - "(?<=pkgname=).*" - "{{ build_dir }}/PKGBUILD" register: pkg_name - name: "Retrieve package version for {{ item.name }}" ansible.builtin.command: argv: - grep - --only-matching - --perl-regexp - "(?<=pkgver=).*" - "{{ build_dir }}/PKGBUILD" register: pkg_version - name: "Retrieve package release for {{ item.name }}" ansible.builtin.command: argv: - grep - --only-matching - --perl-regexp - "(?<=pkgrel=).*" - "{{ build_dir }}/PKGBUILD" register: pkg_release - name: Set package filename & version ansible.builtin.set_fact: package_filename: "{{ pkg_name.stdout }}-{{ pkg_version.stdout }}-{{ pkg_release.stdout }}-{{ item.arch }}.pkg.tar.zst" installed_version: ansible_facts.packages[item.package_name].version|default('') - name: "Build package {{ item.name }}" ansible.builtin.command: "makepkg --syncdeps --rmdeps --clean --noconfirm --force" args: chdir: "{{ build_dir }}" creates: "{{ build_dir }}/{{ package_filename }}" register: package_build when: item.version != installed_version - name: "Install {{ item.name }}" become: true community.general.pacman: name: "{{ build_dir }}/{{ package_filename }}" state: present when: item.version != installed_version