# Copyright (c) 2021 Red Hat, Inc.
#
# Author:
#  Cleber Rosa <crosa@redhat.com>
#
# This work is licensed under the terms of the GNU GPL, version 2 or
# later.  See the COPYING file in the top-level directory.
#
# This is an ansible playbook file.  Run it to set up systems with the
# environment needed to build QEMU.
---
- name: Installation of basic packages to build QEMU
  hosts: all
  tasks:
    - name: Check for suitable ansible version
      delegate_to: localhost
      assert:
        that:
          - '((ansible_version.major == 2) and (ansible_version.minor >= 8)) or (ansible_version.major >= 3)'
        msg: "Unsuitable ansible version, please use version 2.8.0 or later"

    - name: Add armhf foreign architecture to aarch64 hosts
      command: dpkg --add-architecture armhf
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['architecture'] == 'aarch64'

    - name: Update apt cache / upgrade packages via apt
      apt:
        update_cache: yes
        upgrade: yes
      when:
        - ansible_facts['distribution'] == 'Ubuntu'

    # the package lists are updated by "make lcitool-refresh"
    - name: Include package lists based on OS and architecture
      include_vars:
        file: "ubuntu-2204-{{ ansible_facts['architecture'] }}.yaml"
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['distribution_version'] == '22.04'
        - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64'

    - name: Install packages for QEMU on Ubuntu 22.04
      package:
        name: "{{ packages }}"
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['distribution_version'] == '22.04'
        - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64'

    - name: Install armhf cross-compile packages to build QEMU on AArch64 Ubuntu 22.04
      package:
        name:
          - binutils-arm-linux-gnueabihf
          - gcc-arm-linux-gnueabihf
          - libblkid-dev:armhf
          - libc6-dev:armhf
          - libffi-dev:armhf
          - libglib2.0-dev:armhf
          - libmount-dev:armhf
          - libpcre2-dev:armhf
          - libpixman-1-dev:armhf
          - zlib1g-dev:armhf
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['distribution_version'] == '22.04'
        - ansible_facts['architecture'] == 'aarch64'