# 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'
        - ansible_facts['distribution_version'] == '20.04'

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

    - name: Install basic packages to build QEMU on Ubuntu 20.04
      package:
        name:
          - ccache
          - gcc
          - gettext
          - git
          - glusterfs-common
          - libaio-dev
          - libattr1-dev
          - libbrlapi-dev
          - libbz2-dev
          - libcacard-dev
          - libcap-ng-dev
          - libcurl4-gnutls-dev
          - libdrm-dev
          - libepoxy-dev
          - libfdt-dev
          - libgbm-dev
          - libgtk-3-dev
          - libibverbs-dev
          - libiscsi-dev
          - libjemalloc-dev
          - libjpeg-turbo8-dev
          - liblzo2-dev
          - libncurses5-dev
          - libncursesw5-dev
          - libnfs-dev
          - libnss3-dev
          - libnuma-dev
          - libpixman-1-dev
          - librados-dev
          - librbd-dev
          - librdmacm-dev
          - libsasl2-dev
          - libsdl2-dev
          - libseccomp-dev
          - libsnappy-dev
          - libspice-protocol-dev
          - libssh-dev
          - libusb-1.0-0-dev
          - libusbredirhost-dev
          - libvdeplug-dev
          - libvte-2.91-dev
          - libzstd-dev
          - make
          - python3-yaml
          - python3-sphinx
          - python3-sphinx-rtd-theme
          - ninja-build
          - sparse
          - xfslibs-dev
        state: present
      when:
        - ansible_facts['distribution'] == 'Ubuntu'

    - name: Install packages to build QEMU on Ubuntu 20.04 on non-s390x
      package:
        name:
          - libspice-server-dev
          - libxen-dev
        state: present
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64'

    - name: Install basic packages to build QEMU on Ubuntu 20.04
      package:
        name:
        # Originally from tests/docker/dockerfiles/ubuntu2004.docker
          - clang-10
          - genisoimage
          - liblttng-ust-dev
          - libslirp-dev
          - netcat-openbsd
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['distribution_version'] == '20.04'

    - name: Install armhf cross-compile packages to build QEMU on AArch64 Ubuntu 20.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'] == '20.04'
        - ansible_facts['architecture'] == 'aarch64'

    - name: Install basic packages to build QEMU on EL8
      dnf:
        # This list of packages start with tests/docker/dockerfiles/centos8.docker
        # but only include files that are common to all distro variants and present
        # in the standard repos (no add-ons)
        name:
          - bzip2
          - bzip2-devel
          - dbus-daemon
          - diffutils
          - gcc
          - gcc-c++
          - genisoimage
          - gettext
          - git
          - glib2-devel
          - libaio-devel
          - libepoxy-devel
          - libgcrypt-devel
          - lzo-devel
          - make
          - mesa-libEGL-devel
          - nettle-devel
          - ninja-build
          - nmap-ncat
          - perl-Test-Harness
          - pixman-devel
          - python36
          - rdma-core-devel
          - spice-glib-devel
          - systemtap-sdt-devel
          - tar
          - zlib-devel
        state: present
      when:
        - ansible_facts['distribution_file_variety'] == 'RedHat'
        - ansible_facts['distribution_version'] == '8'

    - name: Install packages only available on x86 and aarch64
      dnf:
        # Spice server not available in ppc64le
        name:
          - spice-server
        state: present
      when:
        - ansible_facts['distribution_file_variety'] == 'RedHat'
        - ansible_facts['distribution_version'] == '8'
        - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64'
