| # 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 | |
| - libcapstone-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: Enable EPEL repo on EL8 | |
| dnf: | |
| name: | |
| - epel-release | |
| state: present | |
| when: | |
| - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] | |
| - ansible_facts['distribution_major_version'] == '8' | |
| - name: Enable PowerTools repo on CentOS 8 | |
| ini_file: | |
| path: /etc/yum.repos.d/CentOS-Stream-PowerTools.repo | |
| section: powertools | |
| option: enabled | |
| value: "1" | |
| when: | |
| - ansible_facts['distribution_file_variety'] == 'CentOS' | |
| - ansible_facts['distribution_major_version'] == '8' | |
| - 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 | |
| - capstone-devel | |
| - dbus-daemon | |
| - device-mapper-multipath-devel | |
| - diffutils | |
| - gcc | |
| - gcc-c++ | |
| - genisoimage | |
| - gettext | |
| - git | |
| - glib2-devel | |
| - glusterfs-api-devel | |
| - gnutls-devel | |
| - libaio-devel | |
| - libcap-ng-devel | |
| - libcurl-devel | |
| - libepoxy-devel | |
| - libfdt-devel | |
| - libgcrypt-devel | |
| - libiscsi-devel | |
| - libpmem-devel | |
| - librados-devel | |
| - librbd-devel | |
| - libseccomp-devel | |
| - libssh-devel | |
| - libxkbcommon-devel | |
| - lzo-devel | |
| - make | |
| - mesa-libEGL-devel | |
| - nettle-devel | |
| - ninja-build | |
| - nmap-ncat | |
| - numactl-devel | |
| - pixman-devel | |
| - python38 | |
| - python3-sphinx | |
| - rdma-core-devel | |
| - redhat-rpm-config | |
| - snappy-devel | |
| - spice-glib-devel | |
| - systemd-devel | |
| - systemtap-sdt-devel | |
| - tar | |
| - zlib-devel | |
| state: present | |
| when: | |
| - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] | |
| - ansible_facts['distribution_version'] == '8' | |
| - name: Install packages only available on x86 and aarch64 | |
| dnf: | |
| # Spice server not available in ppc64le | |
| name: | |
| - spice-server | |
| - spice-server-devel | |
| state: present | |
| when: | |
| - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] | |
| - ansible_facts['distribution_version'] == '8' | |
| - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64' | |
| - name: Check whether the Python runtime version is managed by alternatives | |
| stat: | |
| path: /etc/alternatives/python3 | |
| register: python3 | |
| - name: Set default Python runtime to 3.8 on EL8 | |
| command: alternatives --set python3 /usr/bin/python3.8 | |
| when: | |
| - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] | |
| - ansible_facts['distribution_version'] == '8' | |
| - python3.stat.islnk and python3.stat.lnk_target != '/usr/bin/python3.8' |