diff --git a/tasks/arch_linux/aur.yml b/tasks/arch_linux/aur.yml new file mode 100644 index 0000000..e6aafcc --- /dev/null +++ b/tasks/arch_linux/aur.yml @@ -0,0 +1,56 @@ +- name: set aur build directory + set_fact: + aur_build_dir: '{{ aur_build_dir | /usr/local/src }}' + +- name: set build directory + 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 + +- set_fact: + package_filename: '{{ pkg_name.stdout }}-{{ pkg_version.stdout }}-{{ pkg_release.stdout }}-{{ item.arch }}.pkg.tar.zst' + installed_version: ansible_facts.packages[pkg_name.stdout].version|default('') + +- name: build package {{ item.name }} + command: makepkg --syncdeps --rmdeps --clean --noconfirm --force + args: + chdir: '{{ build_dir }}' + creates: '{{ build_dir }}/{{ package_filename }}' + register: package_build + when: pkg_version.stdout != installed_version + +- name: install {{ item.name }} + become: true + pacman: + name: '{{ build_dir }}/{{ package_filename }}' + state: present + when: pkg_version.stdout != installed_version