- name: Set package directory ansible.builtin.set_fact: build_dir: '{{ aur_build_dir }}/{{ item.name }}' - name: 'Retrieve package name for {{ item.name }}' command: argv: - grep - --only-matching - --perl-regexp - "(?<=pkgname=).*" - "{{ build_dir }}/PKGBUILD" register: pkg_name - name: 'Retrieve package version for {{ item.name }}' command: argv: - grep - --only-matching - --perl-regexp - "(?<=pkgver=).*" - "{{ build_dir }}/PKGBUILD" register: pkg_version - name: 'Retrieve package release for {{ item.name }}' 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