# 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'] != 's390x'

    - 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
          - nmap-ncat
          - perl-Test-Harness
          - pixman-devel
          - python36
          - rdma-core-devel
          - spice-glib-devel
          - spice-server
          - systemtap-sdt-devel
          - tar
          - zlib-devel
        state: present
      when:
        - ansible_facts['distribution_file_variety'] == 'RedHat'
        - ansible_facts['distribution_version'] == '8'
