From cadc8824e093f37c36263b2aefba3cd680389f0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Romain=20Gon=C3=A7alves?= Date: Thu, 29 Dec 2022 15:20:47 +0100 Subject: feat(roles/_workstation): add makepkg role --- roles/_workstation/basetools/defaults/main.yml | 9 ++++++++- roles/_workstation/basetools/meta/main.yml | 21 +++++++++++++++++++++ roles/_workstation/basetools/tasks/install.yml | 22 ++++++++++++++++++++++ roles/_workstation/basetools/tasks/main.yml | 8 ++++++++ roles/_workstation/makepkg/defaults/main.yml | 4 ++++ roles/_workstation/makepkg/meta/main.yml | 22 ++++++++++++++++++++++ roles/_workstation/makepkg/tasks/install.yml | 21 +++++++++++++++++++++ roles/_workstation/makepkg/tasks/main.yml | 16 ++++++++++++++++ site.workstation.yml | 1 + 9 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 roles/_workstation/basetools/meta/main.yml create mode 100644 roles/_workstation/basetools/tasks/install.yml create mode 100644 roles/_workstation/makepkg/defaults/main.yml create mode 100644 roles/_workstation/makepkg/meta/main.yml create mode 100644 roles/_workstation/makepkg/tasks/install.yml create mode 100644 roles/_workstation/makepkg/tasks/main.yml diff --git a/roles/_workstation/basetools/defaults/main.yml b/roles/_workstation/basetools/defaults/main.yml index 740a870..f26785a 100644 --- a/roles/_workstation/basetools/defaults/main.yml +++ b/roles/_workstation/basetools/defaults/main.yml @@ -1,6 +1,13 @@ --- -basetools_distribution_packages: [] +basetools_distribution_packages: +basetools_makepkg_packages: + - conftest + - dive-bin + - pandoc-bin + - pipewatch-git + - wkhtmltopdf + - yay-bin basetools_common_packages: - ansible - ansible-lint diff --git a/roles/_workstation/basetools/meta/main.yml b/roles/_workstation/basetools/meta/main.yml new file mode 100644 index 0000000..f4acc42 --- /dev/null +++ b/roles/_workstation/basetools/meta/main.yml @@ -0,0 +1,21 @@ +--- + +argument_specs: + main: + short_description: basetools main entrypoint. + options: + basetools_common_packages: + type: list + elements: str + required: true + description: Common packages accross all operating system + basetools_distribution_packages: + type: list + elements: str + required: true + description: Operating system specific packages + basetools_makepkg_packages: + type: list + elements: str + required: true + description: Makepkg specific packages diff --git a/roles/_workstation/basetools/tasks/install.yml b/roles/_workstation/basetools/tasks/install.yml new file mode 100644 index 0000000..5e24f4e --- /dev/null +++ b/roles/_workstation/basetools/tasks/install.yml @@ -0,0 +1,22 @@ +--- + +- name: install distribution packages + ansible.builtin.package: + name: "{{ item }}" + state: present + loop: + - "{{ basetools_common_packages }}" + - "{{ basetools_distribution_packages }}" + +- name: install community package + ansible.builtin.include_role: + name: _workstation/makepkg + vars: + makepkg_package_name: "{{ item }}" + loop: + - conftest + - dive-bin + - pandoc-bin + - pipewatch-git + - wkhtmltopdf + when: ansible_distribution in ["Archlinux"] diff --git a/roles/_workstation/basetools/tasks/main.yml b/roles/_workstation/basetools/tasks/main.yml index f53d213..6b8e1cd 100644 --- a/roles/_workstation/basetools/tasks/main.yml +++ b/roles/_workstation/basetools/tasks/main.yml @@ -11,3 +11,11 @@ loop: - "{{ basetools_common_packages }}" - "{{ basetools_distribution_packages }}" + +- name: install community package + ansible.builtin.include_role: + name: _workstation/makepkg + vars: + makepkg_package_name: "{{ item }}" + loop: "{{ basetools_makepkg_packages }}" + when: ansible_distribution in ["Archlinux"] diff --git a/roles/_workstation/makepkg/defaults/main.yml b/roles/_workstation/makepkg/defaults/main.yml new file mode 100644 index 0000000..96e3521 --- /dev/null +++ b/roles/_workstation/makepkg/defaults/main.yml @@ -0,0 +1,4 @@ +--- + +makepkg_mirror_url: https://aur.archlinux.org +makepkg_root_build_dir: /tmp/makepkg diff --git a/roles/_workstation/makepkg/meta/main.yml b/roles/_workstation/makepkg/meta/main.yml new file mode 100644 index 0000000..07c1a64 --- /dev/null +++ b/roles/_workstation/makepkg/meta/main.yml @@ -0,0 +1,22 @@ +--- + +argument_specs: + main: + short_description: makepkg main entrypoint. + options: + makepkg_root_build_dir: + type: path + required: true + description: Local build directory + makepkg_package_name: + type: str + required: true + description: Package name (from the AUR) + makepkg_user: + type: str + required: true + description: User for building the package + makepkg_mirror_url: + type: str + required: true + description: Mirror url (usually the AUR) diff --git a/roles/_workstation/makepkg/tasks/install.yml b/roles/_workstation/makepkg/tasks/install.yml new file mode 100644 index 0000000..b9caeef --- /dev/null +++ b/roles/_workstation/makepkg/tasks/install.yml @@ -0,0 +1,21 @@ +--- + +- name: clone repository # noqa: latest[git] + ansible.builtin.git: + repo: "{{ makepkg_mirror_url }}/{{ makepkg_package_name }}.git" + dest: "{{ makepkg_root_build_dir }}/{{ makepkg_package_name }}" + force: true + become: true + become_user: "{{ makepkg_user }}" + +- name: make package # noqa: no-changed-when + ansible.builtin.command: + cmd: makepkg -fs + chdir: "{{ makepkg_root_build_dir }}/{{ makepkg_package_name }}" + become: true + become_user: "{{ makepkg_user }}" + +- name: install package # noqa: no-changed-when + ansible.builtin.shell: + cmd: pacman --noconfirm -U *.zst + chdir: "{{ makepkg_root_build_dir }}/{{ makepkg_package_name }}" diff --git a/roles/_workstation/makepkg/tasks/main.yml b/roles/_workstation/makepkg/tasks/main.yml new file mode 100644 index 0000000..1a31fd9 --- /dev/null +++ b/roles/_workstation/makepkg/tasks/main.yml @@ -0,0 +1,16 @@ +--- + +- name: "check that package is present: {{ makepkg_package_name }}" + ansible.builtin.command: + cmd: pacman -Q {{ makepkg_package_name }} + register: makepkg_result_check_package + changed_when: + - makepkg_result_check_package.rc != 0 + failed_when: + - makepkg_result_check_package.rc == 1 + - "'was not found' not in makepkg_result_check_package.stderr" + +- name: include install task # noqa: no-handler + ansible.builtin.include_tasks: + file: install.yml + when: makepkg_result_check_package.changed diff --git a/site.workstation.yml b/site.workstation.yml index a7efba8..07911d1 100644 --- a/site.workstation.yml +++ b/site.workstation.yml @@ -13,6 +13,7 @@ shell_workstation_user: "{{ _workstation_user }}" syncthing_workstation_user: "{{ _workstation_user }}" yay_workstation_user: "{{ _workstation_user }}" + makepkg_user: "{{ _workstation_user }}" pre_tasks: - name: verify running as root -- cgit v1.2.3