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 28159c5d17SCleber Rosa - name: Update apt cache / upgrade packages via apt 29159c5d17SCleber Rosa apt: 30159c5d17SCleber Rosa update_cache: yes 31159c5d17SCleber Rosa upgrade: yes 32159c5d17SCleber Rosa when: 33159c5d17SCleber Rosa - ansible_facts['distribution'] == 'Ubuntu' 34159c5d17SCleber Rosa 35c1924cdeSAlex Bennée # lcitool variables -f json ubuntu-2204 qemu | jq -r '.pkgs[]' | xargs -n 1 echo "-" 36c1924cdeSAlex Bennée - name: Install basic packages to build QEMU on Ubuntu 22.04 37159c5d17SCleber Rosa package: 38159c5d17SCleber Rosa name: 39c1924cdeSAlex Bennée - bash 40c1924cdeSAlex Bennée - bc 41c1924cdeSAlex Bennée - bison 42c1924cdeSAlex Bennée - bsdextrautils 43c1924cdeSAlex Bennée - bzip2 44c1924cdeSAlex Bennée - ca-certificates 45159c5d17SCleber Rosa - ccache 46c1924cdeSAlex Bennée - clang 47c1924cdeSAlex Bennée - dbus 48c1924cdeSAlex Bennée - debianutils 49c1924cdeSAlex Bennée - diffutils 50c1924cdeSAlex Bennée - exuberant-ctags 51c1924cdeSAlex Bennée - findutils 52c1924cdeSAlex Bennée - flex 53c1924cdeSAlex Bennée - g++ 54159c5d17SCleber Rosa - gcc 55c1924cdeSAlex Bennée - gcovr 56c1924cdeSAlex Bennée - genisoimage 57159c5d17SCleber Rosa - gettext 58159c5d17SCleber Rosa - git 59c1924cdeSAlex Bennée - hostname 60159c5d17SCleber Rosa - libaio-dev 61c1924cdeSAlex Bennée - libasan5 62c1924cdeSAlex Bennée - libasound2-dev 63159c5d17SCleber Rosa - libattr1-dev 64c1924cdeSAlex Bennée - libbpf-dev 65159c5d17SCleber Rosa - libbrlapi-dev 66159c5d17SCleber Rosa - libbz2-dev 67c1924cdeSAlex Bennée - libc6-dev 68159c5d17SCleber Rosa - libcacard-dev 69159c5d17SCleber Rosa - libcap-ng-dev 70c1924cdeSAlex Bennée - libcapstone-dev 71c1924cdeSAlex Bennée - libcmocka-dev 72159c5d17SCleber Rosa - libcurl4-gnutls-dev 73c1924cdeSAlex Bennée - libdaxctl-dev 74159c5d17SCleber Rosa - libdrm-dev 75159c5d17SCleber Rosa - libepoxy-dev 76159c5d17SCleber Rosa - libfdt-dev 77c1924cdeSAlex Bennée - libffi-dev 78159c5d17SCleber Rosa - libgbm-dev 79c1924cdeSAlex Bennée - libgcrypt20-dev 80c1924cdeSAlex Bennée - libglib2.0-dev 81c1924cdeSAlex Bennée - libglusterfs-dev 82c1924cdeSAlex Bennée - libgnutls28-dev 83159c5d17SCleber Rosa - libgtk-3-dev 84c1924cdeSAlex Bennée - libibumad-dev 85159c5d17SCleber Rosa - libibverbs-dev 86159c5d17SCleber Rosa - libiscsi-dev 87159c5d17SCleber Rosa - libjemalloc-dev 88159c5d17SCleber Rosa - libjpeg-turbo8-dev 89c1924cdeSAlex Bennée - libjson-c-dev 90c1924cdeSAlex Bennée - liblttng-ust-dev 91159c5d17SCleber Rosa - liblzo2-dev 92159c5d17SCleber Rosa - libncursesw5-dev 93159c5d17SCleber Rosa - libnfs-dev 94159c5d17SCleber Rosa - libnuma-dev 95c1924cdeSAlex Bennée - libpam0g-dev 96c1924cdeSAlex Bennée - libpcre2-dev 97159c5d17SCleber Rosa - libpixman-1-dev 98c1924cdeSAlex Bennée - libpmem-dev 99c1924cdeSAlex Bennée - libpng-dev 100c1924cdeSAlex Bennée - libpulse-dev 101159c5d17SCleber Rosa - librbd-dev 102159c5d17SCleber Rosa - librdmacm-dev 103159c5d17SCleber Rosa - libsasl2-dev 104159c5d17SCleber Rosa - libsdl2-dev 105c1924cdeSAlex Bennée - libsdl2-image-dev 106159c5d17SCleber Rosa - libseccomp-dev 107c1924cdeSAlex Bennée - libslirp-dev 108159c5d17SCleber Rosa - libsnappy-dev 109159c5d17SCleber Rosa - libspice-protocol-dev 110c1924cdeSAlex Bennée - libspice-server-dev 111159c5d17SCleber Rosa - libssh-dev 112c1924cdeSAlex Bennée - libsystemd-dev 113c1924cdeSAlex Bennée - libtasn1-6-dev 114c1924cdeSAlex Bennée - libubsan1 115c1924cdeSAlex Bennée - libudev-dev 116c1924cdeSAlex Bennée - liburing-dev 117159c5d17SCleber Rosa - libusb-1.0-0-dev 118159c5d17SCleber Rosa - libusbredirhost-dev 119159c5d17SCleber Rosa - libvdeplug-dev 120c1924cdeSAlex Bennée - libvirglrenderer-dev 121159c5d17SCleber Rosa - libvte-2.91-dev 122c1924cdeSAlex Bennée - libxen-dev 123c1924cdeSAlex Bennée - libxml2-dev 124159c5d17SCleber Rosa - libzstd-dev 125c1924cdeSAlex Bennée - llvm 126c1924cdeSAlex Bennée - locales 127159c5d17SCleber Rosa - make 128c1924cdeSAlex Bennée - meson 129c1924cdeSAlex Bennée - multipath-tools 130c1924cdeSAlex Bennée - ncat 131c1924cdeSAlex Bennée - nettle-dev 132c1924cdeSAlex Bennée - ninja-build 133c1924cdeSAlex Bennée - openssh-client 134c1924cdeSAlex Bennée - pkgconf 135c1924cdeSAlex Bennée - python3 136c1924cdeSAlex Bennée - python3-numpy 137c1924cdeSAlex Bennée - python3-opencv 138c1924cdeSAlex Bennée - python3-pillow 139c1924cdeSAlex Bennée - python3-pip 140159c5d17SCleber Rosa - python3-sphinx 141159c5d17SCleber Rosa - python3-sphinx-rtd-theme 142c1924cdeSAlex Bennée - python3-venv 143c1924cdeSAlex Bennée - python3-yaml 144c1924cdeSAlex Bennée - rpm2cpio 145c1924cdeSAlex Bennée - sed 146159c5d17SCleber Rosa - sparse 147c1924cdeSAlex Bennée - systemtap-sdt-dev 148c1924cdeSAlex Bennée - tar 149c1924cdeSAlex Bennée - tesseract-ocr 150c1924cdeSAlex Bennée - tesseract-ocr-eng 151c1924cdeSAlex Bennée - texinfo 152159c5d17SCleber Rosa - xfslibs-dev 153c1924cdeSAlex Bennée - zlib1g-dev 154159c5d17SCleber Rosa state: present 155159c5d17SCleber Rosa when: 156159c5d17SCleber Rosa - ansible_facts['distribution'] == 'Ubuntu' 157c1924cdeSAlex Bennée - ansible_facts['distribution_version'] == '22.04' 158159c5d17SCleber Rosa 159c1924cdeSAlex Bennée - name: Install armhf cross-compile packages to build QEMU on AArch64 Ubuntu 22.04 16093c9aeedSAlex Bennée package: 16193c9aeedSAlex Bennée name: 16293c9aeedSAlex Bennée - binutils-arm-linux-gnueabihf 16393c9aeedSAlex Bennée - gcc-arm-linux-gnueabihf 16493c9aeedSAlex Bennée - libblkid-dev:armhf 16593c9aeedSAlex Bennée - libc6-dev:armhf 16693c9aeedSAlex Bennée - libffi-dev:armhf 16793c9aeedSAlex Bennée - libglib2.0-dev:armhf 16893c9aeedSAlex Bennée - libmount-dev:armhf 16993c9aeedSAlex Bennée - libpcre2-dev:armhf 17093c9aeedSAlex Bennée - libpixman-1-dev:armhf 17193c9aeedSAlex Bennée - zlib1g-dev:armhf 17293c9aeedSAlex Bennée when: 17393c9aeedSAlex Bennée - ansible_facts['distribution'] == 'Ubuntu' 174c1924cdeSAlex Bennée - ansible_facts['distribution_version'] == '22.04' 17593c9aeedSAlex Bennée - ansible_facts['architecture'] == 'aarch64' 17693c9aeedSAlex Bennée 177a9253230SPaolo Bonzini - name: Enable EPEL repo on EL8 178a9253230SPaolo Bonzini dnf: 179a9253230SPaolo Bonzini name: 180a9253230SPaolo Bonzini - epel-release 181a9253230SPaolo Bonzini state: present 182a9253230SPaolo Bonzini when: 183a9253230SPaolo Bonzini - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] 184a9253230SPaolo Bonzini - ansible_facts['distribution_major_version'] == '8' 185a9253230SPaolo Bonzini 1864b950af8SPaolo Bonzini - name: Enable PowerTools repo on CentOS 8 1874b950af8SPaolo Bonzini ini_file: 1884b950af8SPaolo Bonzini path: /etc/yum.repos.d/CentOS-Stream-PowerTools.repo 1894b950af8SPaolo Bonzini section: powertools 1904b950af8SPaolo Bonzini option: enabled 1914b950af8SPaolo Bonzini value: "1" 1924b950af8SPaolo Bonzini when: 1934b950af8SPaolo Bonzini - ansible_facts['distribution_file_variety'] == 'CentOS' 1944b950af8SPaolo Bonzini - ansible_facts['distribution_major_version'] == '8' 1954b950af8SPaolo Bonzini 196d7c2e2b3SCleber Rosa - name: Install basic packages to build QEMU on EL8 197d7c2e2b3SCleber Rosa dnf: 198d7c2e2b3SCleber Rosa # This list of packages start with tests/docker/dockerfiles/centos8.docker 199d7c2e2b3SCleber Rosa # but only include files that are common to all distro variants and present 200d7c2e2b3SCleber Rosa # in the standard repos (no add-ons) 201d7c2e2b3SCleber Rosa name: 202d7c2e2b3SCleber Rosa - bzip2 203d7c2e2b3SCleber Rosa - bzip2-devel 204a9253230SPaolo Bonzini - capstone-devel 205d7c2e2b3SCleber Rosa - dbus-daemon 206cb1513dfSPaolo Bonzini - device-mapper-multipath-devel 207d7c2e2b3SCleber Rosa - diffutils 208d7c2e2b3SCleber Rosa - gcc 209d7c2e2b3SCleber Rosa - gcc-c++ 210d7c2e2b3SCleber Rosa - genisoimage 211d7c2e2b3SCleber Rosa - gettext 212d7c2e2b3SCleber Rosa - git 213d7c2e2b3SCleber Rosa - glib2-devel 214cb1513dfSPaolo Bonzini - glusterfs-api-devel 215cb1513dfSPaolo Bonzini - gnutls-devel 216d7c2e2b3SCleber Rosa - libaio-devel 217cb1513dfSPaolo Bonzini - libcap-ng-devel 218cb1513dfSPaolo Bonzini - libcurl-devel 219d7c2e2b3SCleber Rosa - libepoxy-devel 220cb1513dfSPaolo Bonzini - libfdt-devel 221d7c2e2b3SCleber Rosa - libgcrypt-devel 222cb1513dfSPaolo Bonzini - libiscsi-devel 223cb1513dfSPaolo Bonzini - libpmem-devel 224cb1513dfSPaolo Bonzini - librados-devel 225cb1513dfSPaolo Bonzini - librbd-devel 226cb1513dfSPaolo Bonzini - libseccomp-devel 227cb1513dfSPaolo Bonzini - libssh-devel 228cb1513dfSPaolo Bonzini - libxkbcommon-devel 229d7c2e2b3SCleber Rosa - lzo-devel 230d7c2e2b3SCleber Rosa - make 231d7c2e2b3SCleber Rosa - mesa-libEGL-devel 232d7c2e2b3SCleber Rosa - nettle-devel 2330f900baeSLucas Mateus Castro (alqotel) - ninja-build 234d7c2e2b3SCleber Rosa - nmap-ncat 235cb1513dfSPaolo Bonzini - numactl-devel 236d7c2e2b3SCleber Rosa - pixman-devel 23711b4a4eeSPaolo Bonzini - python38 238cb1513dfSPaolo Bonzini - python3-sphinx 239d7c2e2b3SCleber Rosa - rdma-core-devel 240cb1513dfSPaolo Bonzini - redhat-rpm-config 241cb1513dfSPaolo Bonzini - snappy-devel 242d7c2e2b3SCleber Rosa - spice-glib-devel 243cb1513dfSPaolo Bonzini - systemd-devel 244d7c2e2b3SCleber Rosa - systemtap-sdt-devel 245d7c2e2b3SCleber Rosa - tar 246d7c2e2b3SCleber Rosa - zlib-devel 247d7c2e2b3SCleber Rosa state: present 248d7c2e2b3SCleber Rosa when: 2494b950af8SPaolo Bonzini - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] 250d7c2e2b3SCleber Rosa - ansible_facts['distribution_version'] == '8' 251556ede02SLucas Mateus Castro (alqotel) 252556ede02SLucas Mateus Castro (alqotel) - name: Install packages only available on x86 and aarch64 253556ede02SLucas Mateus Castro (alqotel) dnf: 254556ede02SLucas Mateus Castro (alqotel) # Spice server not available in ppc64le 255556ede02SLucas Mateus Castro (alqotel) name: 256556ede02SLucas Mateus Castro (alqotel) - spice-server 257cb1513dfSPaolo Bonzini - spice-server-devel 258556ede02SLucas Mateus Castro (alqotel) state: present 259556ede02SLucas Mateus Castro (alqotel) when: 2604b950af8SPaolo Bonzini - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] 261556ede02SLucas Mateus Castro (alqotel) - ansible_facts['distribution_version'] == '8' 262556ede02SLucas Mateus Castro (alqotel) - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64' 26311b4a4eeSPaolo Bonzini 26411b4a4eeSPaolo Bonzini - name: Check whether the Python runtime version is managed by alternatives 26511b4a4eeSPaolo Bonzini stat: 26611b4a4eeSPaolo Bonzini path: /etc/alternatives/python3 26711b4a4eeSPaolo Bonzini register: python3 26811b4a4eeSPaolo Bonzini 26911b4a4eeSPaolo Bonzini - name: Set default Python runtime to 3.8 on EL8 27011b4a4eeSPaolo Bonzini command: alternatives --set python3 /usr/bin/python3.8 27111b4a4eeSPaolo Bonzini when: 27211b4a4eeSPaolo Bonzini - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] 27311b4a4eeSPaolo Bonzini - ansible_facts['distribution_version'] == '8' 27411b4a4eeSPaolo Bonzini - python3.stat.islnk and python3.stat.lnk_target != '/usr/bin/python3.8' 275