1159c5d17SCleber Rosa# Copyright (c) 2021 Red Hat, Inc. 2159c5d17SCleber Rosa# 3159c5d17SCleber Rosa# Author: 4159c5d17SCleber Rosa# Cleber Rosa <crosa@redhat.com> 5159c5d17SCleber Rosa# 6159c5d17SCleber Rosa# This work is licensed under the terms of the GNU GPL, version 2 or 7159c5d17SCleber Rosa# later. See the COPYING file in the top-level directory. 8159c5d17SCleber Rosa# 9159c5d17SCleber Rosa# This is an ansible playbook file. Run it to set up systems with the 10159c5d17SCleber Rosa# environment needed to build QEMU. 11159c5d17SCleber Rosa--- 12159c5d17SCleber Rosa- name: Installation of basic packages to build QEMU 13159c5d17SCleber Rosa hosts: all 14159c5d17SCleber Rosa tasks: 15159c5d17SCleber Rosa - name: Check for suitable ansible version 16159c5d17SCleber Rosa delegate_to: localhost 17159c5d17SCleber Rosa assert: 18159c5d17SCleber Rosa that: 19159c5d17SCleber Rosa - '((ansible_version.major == 2) and (ansible_version.minor >= 8)) or (ansible_version.major >= 3)' 20159c5d17SCleber Rosa msg: "Unsuitable ansible version, please use version 2.8.0 or later" 21159c5d17SCleber Rosa 2293c9aeedSAlex Bennée - name: Add armhf foreign architecture to aarch64 hosts 2393c9aeedSAlex Bennée command: dpkg --add-architecture armhf 2493c9aeedSAlex Bennée when: 2593c9aeedSAlex Bennée - ansible_facts['distribution'] == 'Ubuntu' 2693c9aeedSAlex Bennée - ansible_facts['architecture'] == 'aarch64' 2793c9aeedSAlex Bennée - ansible_facts['distribution_version'] == '20.04' 2893c9aeedSAlex Bennée 29159c5d17SCleber Rosa - name: Update apt cache / upgrade packages via apt 30159c5d17SCleber Rosa apt: 31159c5d17SCleber Rosa update_cache: yes 32159c5d17SCleber Rosa upgrade: yes 33159c5d17SCleber Rosa when: 34159c5d17SCleber Rosa - ansible_facts['distribution'] == 'Ubuntu' 35159c5d17SCleber Rosa 36f3f0cbafSThomas Huth - name: Install basic packages to build QEMU on Ubuntu 20.04 37159c5d17SCleber Rosa package: 38159c5d17SCleber Rosa name: 39159c5d17SCleber Rosa - ccache 40159c5d17SCleber Rosa - gcc 41159c5d17SCleber Rosa - gettext 42159c5d17SCleber Rosa - git 43159c5d17SCleber Rosa - glusterfs-common 44159c5d17SCleber Rosa - libaio-dev 45159c5d17SCleber Rosa - libattr1-dev 46159c5d17SCleber Rosa - libbrlapi-dev 47159c5d17SCleber Rosa - libbz2-dev 48159c5d17SCleber Rosa - libcacard-dev 49a9253230SPaolo Bonzini - libcapstone-dev 50159c5d17SCleber Rosa - libcap-ng-dev 51159c5d17SCleber Rosa - libcurl4-gnutls-dev 52159c5d17SCleber Rosa - libdrm-dev 53159c5d17SCleber Rosa - libepoxy-dev 54159c5d17SCleber Rosa - libfdt-dev 55159c5d17SCleber Rosa - libgbm-dev 56159c5d17SCleber Rosa - libgtk-3-dev 57159c5d17SCleber Rosa - libibverbs-dev 58159c5d17SCleber Rosa - libiscsi-dev 59159c5d17SCleber Rosa - libjemalloc-dev 60159c5d17SCleber Rosa - libjpeg-turbo8-dev 61159c5d17SCleber Rosa - liblzo2-dev 62159c5d17SCleber Rosa - libncurses5-dev 63159c5d17SCleber Rosa - libncursesw5-dev 64159c5d17SCleber Rosa - libnfs-dev 65159c5d17SCleber Rosa - libnss3-dev 66159c5d17SCleber Rosa - libnuma-dev 67159c5d17SCleber Rosa - libpixman-1-dev 68159c5d17SCleber Rosa - librados-dev 69159c5d17SCleber Rosa - librbd-dev 70159c5d17SCleber Rosa - librdmacm-dev 71159c5d17SCleber Rosa - libsasl2-dev 72159c5d17SCleber Rosa - libsdl2-dev 73159c5d17SCleber Rosa - libseccomp-dev 74159c5d17SCleber Rosa - libsnappy-dev 75159c5d17SCleber Rosa - libspice-protocol-dev 76159c5d17SCleber Rosa - libssh-dev 77159c5d17SCleber Rosa - libusb-1.0-0-dev 78159c5d17SCleber Rosa - libusbredirhost-dev 79159c5d17SCleber Rosa - libvdeplug-dev 80159c5d17SCleber Rosa - libvte-2.91-dev 81159c5d17SCleber Rosa - libzstd-dev 82159c5d17SCleber Rosa - make 83159c5d17SCleber Rosa - python3-yaml 84159c5d17SCleber Rosa - python3-sphinx 85159c5d17SCleber Rosa - python3-sphinx-rtd-theme 86159c5d17SCleber Rosa - ninja-build 87159c5d17SCleber Rosa - sparse 88159c5d17SCleber Rosa - xfslibs-dev 89159c5d17SCleber Rosa state: present 90159c5d17SCleber Rosa when: 91159c5d17SCleber Rosa - ansible_facts['distribution'] == 'Ubuntu' 92159c5d17SCleber Rosa 93f3f0cbafSThomas Huth - name: Install packages to build QEMU on Ubuntu 20.04 on non-s390x 94159c5d17SCleber Rosa package: 95159c5d17SCleber Rosa name: 96159c5d17SCleber Rosa - libspice-server-dev 97159c5d17SCleber Rosa - libxen-dev 98159c5d17SCleber Rosa state: present 99159c5d17SCleber Rosa when: 100159c5d17SCleber Rosa - ansible_facts['distribution'] == 'Ubuntu' 101561612f9SLucas Mateus Castro (alqotel) - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64' 102159c5d17SCleber Rosa 103159c5d17SCleber Rosa - name: Install basic packages to build QEMU on Ubuntu 20.04 104159c5d17SCleber Rosa package: 105159c5d17SCleber Rosa name: 106159c5d17SCleber Rosa # Originally from tests/docker/dockerfiles/ubuntu2004.docker 107159c5d17SCleber Rosa - clang-10 108159c5d17SCleber Rosa - genisoimage 109159c5d17SCleber Rosa - liblttng-ust-dev 110159c5d17SCleber Rosa - libslirp-dev 111159c5d17SCleber Rosa - netcat-openbsd 112159c5d17SCleber Rosa when: 113159c5d17SCleber Rosa - ansible_facts['distribution'] == 'Ubuntu' 114159c5d17SCleber Rosa - ansible_facts['distribution_version'] == '20.04' 115d7c2e2b3SCleber Rosa 11693c9aeedSAlex Bennée - name: Install armhf cross-compile packages to build QEMU on AArch64 Ubuntu 20.04 11793c9aeedSAlex Bennée package: 11893c9aeedSAlex Bennée name: 11993c9aeedSAlex Bennée - binutils-arm-linux-gnueabihf 12093c9aeedSAlex Bennée - gcc-arm-linux-gnueabihf 12193c9aeedSAlex Bennée - libblkid-dev:armhf 12293c9aeedSAlex Bennée - libc6-dev:armhf 12393c9aeedSAlex Bennée - libffi-dev:armhf 12493c9aeedSAlex Bennée - libglib2.0-dev:armhf 12593c9aeedSAlex Bennée - libmount-dev:armhf 12693c9aeedSAlex Bennée - libpcre2-dev:armhf 12793c9aeedSAlex Bennée - libpixman-1-dev:armhf 12893c9aeedSAlex Bennée - zlib1g-dev:armhf 12993c9aeedSAlex Bennée when: 13093c9aeedSAlex Bennée - ansible_facts['distribution'] == 'Ubuntu' 13193c9aeedSAlex Bennée - ansible_facts['distribution_version'] == '20.04' 13293c9aeedSAlex Bennée - ansible_facts['architecture'] == 'aarch64' 13393c9aeedSAlex Bennée 134a9253230SPaolo Bonzini - name: Enable EPEL repo on EL8 135a9253230SPaolo Bonzini dnf: 136a9253230SPaolo Bonzini name: 137a9253230SPaolo Bonzini - epel-release 138a9253230SPaolo Bonzini state: present 139a9253230SPaolo Bonzini when: 140a9253230SPaolo Bonzini - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] 141a9253230SPaolo Bonzini - ansible_facts['distribution_major_version'] == '8' 142a9253230SPaolo Bonzini 1434b950af8SPaolo Bonzini - name: Enable PowerTools repo on CentOS 8 1444b950af8SPaolo Bonzini ini_file: 1454b950af8SPaolo Bonzini path: /etc/yum.repos.d/CentOS-Stream-PowerTools.repo 1464b950af8SPaolo Bonzini section: powertools 1474b950af8SPaolo Bonzini option: enabled 1484b950af8SPaolo Bonzini value: "1" 1494b950af8SPaolo Bonzini when: 1504b950af8SPaolo Bonzini - ansible_facts['distribution_file_variety'] == 'CentOS' 1514b950af8SPaolo Bonzini - ansible_facts['distribution_major_version'] == '8' 1524b950af8SPaolo Bonzini 153d7c2e2b3SCleber Rosa - name: Install basic packages to build QEMU on EL8 154d7c2e2b3SCleber Rosa dnf: 155d7c2e2b3SCleber Rosa # This list of packages start with tests/docker/dockerfiles/centos8.docker 156d7c2e2b3SCleber Rosa # but only include files that are common to all distro variants and present 157d7c2e2b3SCleber Rosa # in the standard repos (no add-ons) 158d7c2e2b3SCleber Rosa name: 159d7c2e2b3SCleber Rosa - bzip2 160d7c2e2b3SCleber Rosa - bzip2-devel 161a9253230SPaolo Bonzini - capstone-devel 162d7c2e2b3SCleber Rosa - dbus-daemon 163cb1513dfSPaolo Bonzini - device-mapper-multipath-devel 164d7c2e2b3SCleber Rosa - diffutils 165d7c2e2b3SCleber Rosa - gcc 166d7c2e2b3SCleber Rosa - gcc-c++ 167d7c2e2b3SCleber Rosa - genisoimage 168d7c2e2b3SCleber Rosa - gettext 169d7c2e2b3SCleber Rosa - git 170d7c2e2b3SCleber Rosa - glib2-devel 171cb1513dfSPaolo Bonzini - glusterfs-api-devel 172cb1513dfSPaolo Bonzini - gnutls-devel 173d7c2e2b3SCleber Rosa - libaio-devel 174cb1513dfSPaolo Bonzini - libcap-ng-devel 175cb1513dfSPaolo Bonzini - libcurl-devel 176d7c2e2b3SCleber Rosa - libepoxy-devel 177cb1513dfSPaolo Bonzini - libfdt-devel 178d7c2e2b3SCleber Rosa - libgcrypt-devel 179cb1513dfSPaolo Bonzini - libiscsi-devel 180cb1513dfSPaolo Bonzini - libpmem-devel 181cb1513dfSPaolo Bonzini - librados-devel 182cb1513dfSPaolo Bonzini - librbd-devel 183cb1513dfSPaolo Bonzini - libseccomp-devel 184cb1513dfSPaolo Bonzini - libssh-devel 185cb1513dfSPaolo Bonzini - libxkbcommon-devel 186d7c2e2b3SCleber Rosa - lzo-devel 187d7c2e2b3SCleber Rosa - make 188d7c2e2b3SCleber Rosa - mesa-libEGL-devel 189d7c2e2b3SCleber Rosa - nettle-devel 1900f900baeSLucas Mateus Castro (alqotel) - ninja-build 191d7c2e2b3SCleber Rosa - nmap-ncat 192cb1513dfSPaolo Bonzini - numactl-devel 193d7c2e2b3SCleber Rosa - pixman-devel 19411b4a4eeSPaolo Bonzini - python38 195cb1513dfSPaolo Bonzini - python3-sphinx 196d7c2e2b3SCleber Rosa - rdma-core-devel 197cb1513dfSPaolo Bonzini - redhat-rpm-config 198cb1513dfSPaolo Bonzini - snappy-devel 199d7c2e2b3SCleber Rosa - spice-glib-devel 200cb1513dfSPaolo Bonzini - systemd-devel 201d7c2e2b3SCleber Rosa - systemtap-sdt-devel 202d7c2e2b3SCleber Rosa - tar 203d7c2e2b3SCleber Rosa - zlib-devel 204d7c2e2b3SCleber Rosa state: present 205d7c2e2b3SCleber Rosa when: 2064b950af8SPaolo Bonzini - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] 207d7c2e2b3SCleber Rosa - ansible_facts['distribution_version'] == '8' 208556ede02SLucas Mateus Castro (alqotel) 209556ede02SLucas Mateus Castro (alqotel) - name: Install packages only available on x86 and aarch64 210556ede02SLucas Mateus Castro (alqotel) dnf: 211556ede02SLucas Mateus Castro (alqotel) # Spice server not available in ppc64le 212556ede02SLucas Mateus Castro (alqotel) name: 213556ede02SLucas Mateus Castro (alqotel) - spice-server 214cb1513dfSPaolo Bonzini - spice-server-devel 215556ede02SLucas Mateus Castro (alqotel) state: present 216556ede02SLucas Mateus Castro (alqotel) when: 2174b950af8SPaolo Bonzini - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] 218556ede02SLucas Mateus Castro (alqotel) - ansible_facts['distribution_version'] == '8' 219556ede02SLucas Mateus Castro (alqotel) - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64' 22011b4a4eeSPaolo Bonzini 22111b4a4eeSPaolo Bonzini - name: Check whether the Python runtime version is managed by alternatives 22211b4a4eeSPaolo Bonzini stat: 22311b4a4eeSPaolo Bonzini path: /etc/alternatives/python3 22411b4a4eeSPaolo Bonzini register: python3 22511b4a4eeSPaolo Bonzini 22611b4a4eeSPaolo Bonzini - name: Set default Python runtime to 3.8 on EL8 22711b4a4eeSPaolo Bonzini command: alternatives --set python3 /usr/bin/python3.8 22811b4a4eeSPaolo Bonzini when: 22911b4a4eeSPaolo Bonzini - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] 23011b4a4eeSPaolo Bonzini - ansible_facts['distribution_version'] == '8' 23111b4a4eeSPaolo Bonzini - python3.stat.islnk and python3.stat.lnk_target != '/usr/bin/python3.8' 232