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 - libpng-dev 99c1924cdeSAlex Bennée - libpulse-dev 100159c5d17SCleber Rosa - librbd-dev 101159c5d17SCleber Rosa - librdmacm-dev 102159c5d17SCleber Rosa - libsasl2-dev 103159c5d17SCleber Rosa - libsdl2-dev 104c1924cdeSAlex Bennée - libsdl2-image-dev 105159c5d17SCleber Rosa - libseccomp-dev 106c1924cdeSAlex Bennée - libslirp-dev 107159c5d17SCleber Rosa - libsnappy-dev 108159c5d17SCleber Rosa - libspice-protocol-dev 109159c5d17SCleber Rosa - libssh-dev 110c1924cdeSAlex Bennée - libsystemd-dev 111c1924cdeSAlex Bennée - libtasn1-6-dev 112c1924cdeSAlex Bennée - libubsan1 113c1924cdeSAlex Bennée - libudev-dev 114c1924cdeSAlex Bennée - liburing-dev 115159c5d17SCleber Rosa - libusb-1.0-0-dev 116159c5d17SCleber Rosa - libusbredirhost-dev 117159c5d17SCleber Rosa - libvdeplug-dev 118c1924cdeSAlex Bennée - libvirglrenderer-dev 119159c5d17SCleber Rosa - libvte-2.91-dev 120c1924cdeSAlex Bennée - libxml2-dev 121159c5d17SCleber Rosa - libzstd-dev 122c1924cdeSAlex Bennée - llvm 123c1924cdeSAlex Bennée - locales 124159c5d17SCleber Rosa - make 125c1924cdeSAlex Bennée - meson 126c1924cdeSAlex Bennée - multipath-tools 127c1924cdeSAlex Bennée - ncat 128c1924cdeSAlex Bennée - nettle-dev 129c1924cdeSAlex Bennée - ninja-build 130c1924cdeSAlex Bennée - openssh-client 131c1924cdeSAlex Bennée - pkgconf 132c1924cdeSAlex Bennée - python3 133c1924cdeSAlex Bennée - python3-numpy 134c1924cdeSAlex Bennée - python3-opencv 135c1924cdeSAlex Bennée - python3-pillow 136c1924cdeSAlex Bennée - python3-pip 137159c5d17SCleber Rosa - python3-sphinx 138159c5d17SCleber Rosa - python3-sphinx-rtd-theme 139c1924cdeSAlex Bennée - python3-venv 140c1924cdeSAlex Bennée - python3-yaml 141c1924cdeSAlex Bennée - rpm2cpio 142c1924cdeSAlex Bennée - sed 143159c5d17SCleber Rosa - sparse 144c1924cdeSAlex Bennée - systemtap-sdt-dev 145c1924cdeSAlex Bennée - tar 146c1924cdeSAlex Bennée - tesseract-ocr 147c1924cdeSAlex Bennée - tesseract-ocr-eng 148c1924cdeSAlex Bennée - texinfo 149159c5d17SCleber Rosa - xfslibs-dev 150c1924cdeSAlex Bennée - zlib1g-dev 151159c5d17SCleber Rosa state: present 152159c5d17SCleber Rosa when: 153159c5d17SCleber Rosa - ansible_facts['distribution'] == 'Ubuntu' 154c1924cdeSAlex Bennée - ansible_facts['distribution_version'] == '22.04' 155159c5d17SCleber Rosa 15683561896SAlex Bennée # not all packages are available for all architectures 15783561896SAlex Bennée - name: Install additional packages to build QEMU on Ubuntu 22.04 15883561896SAlex Bennée package: 15983561896SAlex Bennée name: 16083561896SAlex Bennée - libpmem-dev 16183561896SAlex Bennée - libspice-server-dev 16283561896SAlex Bennée - libxen-dev 16383561896SAlex Bennée state: present 16483561896SAlex Bennée when: 16583561896SAlex Bennée - ansible_facts['distribution'] == 'Ubuntu' 16683561896SAlex Bennée - ansible_facts['distribution_version'] == '22.04' 16783561896SAlex Bennée - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64' 16883561896SAlex Bennée 169c1924cdeSAlex Bennée - name: Install armhf cross-compile packages to build QEMU on AArch64 Ubuntu 22.04 17093c9aeedSAlex Bennée package: 17193c9aeedSAlex Bennée name: 17293c9aeedSAlex Bennée - binutils-arm-linux-gnueabihf 17393c9aeedSAlex Bennée - gcc-arm-linux-gnueabihf 17493c9aeedSAlex Bennée - libblkid-dev:armhf 17593c9aeedSAlex Bennée - libc6-dev:armhf 17693c9aeedSAlex Bennée - libffi-dev:armhf 17793c9aeedSAlex Bennée - libglib2.0-dev:armhf 17893c9aeedSAlex Bennée - libmount-dev:armhf 17993c9aeedSAlex Bennée - libpcre2-dev:armhf 18093c9aeedSAlex Bennée - libpixman-1-dev:armhf 18193c9aeedSAlex Bennée - zlib1g-dev:armhf 18293c9aeedSAlex Bennée when: 18393c9aeedSAlex Bennée - ansible_facts['distribution'] == 'Ubuntu' 184c1924cdeSAlex Bennée - ansible_facts['distribution_version'] == '22.04' 18593c9aeedSAlex Bennée - ansible_facts['architecture'] == 'aarch64' 18693c9aeedSAlex Bennée 187a9253230SPaolo Bonzini - name: Enable EPEL repo on EL8 188a9253230SPaolo Bonzini dnf: 189a9253230SPaolo Bonzini name: 190a9253230SPaolo Bonzini - epel-release 191a9253230SPaolo Bonzini state: present 192a9253230SPaolo Bonzini when: 193a9253230SPaolo Bonzini - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] 194a9253230SPaolo Bonzini - ansible_facts['distribution_major_version'] == '8' 195a9253230SPaolo Bonzini 1964b950af8SPaolo Bonzini - name: Enable PowerTools repo on CentOS 8 1974b950af8SPaolo Bonzini ini_file: 1984b950af8SPaolo Bonzini path: /etc/yum.repos.d/CentOS-Stream-PowerTools.repo 1994b950af8SPaolo Bonzini section: powertools 2004b950af8SPaolo Bonzini option: enabled 2014b950af8SPaolo Bonzini value: "1" 2024b950af8SPaolo Bonzini when: 2034b950af8SPaolo Bonzini - ansible_facts['distribution_file_variety'] == 'CentOS' 2044b950af8SPaolo Bonzini - ansible_facts['distribution_major_version'] == '8' 2054b950af8SPaolo Bonzini 206d7c2e2b3SCleber Rosa - name: Install basic packages to build QEMU on EL8 207d7c2e2b3SCleber Rosa dnf: 208d7c2e2b3SCleber Rosa # This list of packages start with tests/docker/dockerfiles/centos8.docker 209d7c2e2b3SCleber Rosa # but only include files that are common to all distro variants and present 210d7c2e2b3SCleber Rosa # in the standard repos (no add-ons) 211d7c2e2b3SCleber Rosa name: 212d7c2e2b3SCleber Rosa - bzip2 213d7c2e2b3SCleber Rosa - bzip2-devel 214a9253230SPaolo Bonzini - capstone-devel 215d7c2e2b3SCleber Rosa - dbus-daemon 216cb1513dfSPaolo Bonzini - device-mapper-multipath-devel 217d7c2e2b3SCleber Rosa - diffutils 218d7c2e2b3SCleber Rosa - gcc 219d7c2e2b3SCleber Rosa - gcc-c++ 220d7c2e2b3SCleber Rosa - genisoimage 221d7c2e2b3SCleber Rosa - gettext 222d7c2e2b3SCleber Rosa - git 223d7c2e2b3SCleber Rosa - glib2-devel 224cb1513dfSPaolo Bonzini - glusterfs-api-devel 225cb1513dfSPaolo Bonzini - gnutls-devel 226d7c2e2b3SCleber Rosa - libaio-devel 227cb1513dfSPaolo Bonzini - libcap-ng-devel 228cb1513dfSPaolo Bonzini - libcurl-devel 229d7c2e2b3SCleber Rosa - libepoxy-devel 230cb1513dfSPaolo Bonzini - libfdt-devel 231d7c2e2b3SCleber Rosa - libgcrypt-devel 232cb1513dfSPaolo Bonzini - libiscsi-devel 233cb1513dfSPaolo Bonzini - libpmem-devel 234cb1513dfSPaolo Bonzini - librados-devel 235cb1513dfSPaolo Bonzini - librbd-devel 236cb1513dfSPaolo Bonzini - libseccomp-devel 237cb1513dfSPaolo Bonzini - libssh-devel 238cb1513dfSPaolo Bonzini - libxkbcommon-devel 239d7c2e2b3SCleber Rosa - lzo-devel 240d7c2e2b3SCleber Rosa - make 241d7c2e2b3SCleber Rosa - mesa-libEGL-devel 242d7c2e2b3SCleber Rosa - nettle-devel 2430f900baeSLucas Mateus Castro (alqotel) - ninja-build 244d7c2e2b3SCleber Rosa - nmap-ncat 245cb1513dfSPaolo Bonzini - numactl-devel 246d7c2e2b3SCleber Rosa - pixman-devel 24711b4a4eeSPaolo Bonzini - python38 248cb1513dfSPaolo Bonzini - python3-sphinx 249d7c2e2b3SCleber Rosa - rdma-core-devel 250cb1513dfSPaolo Bonzini - redhat-rpm-config 251cb1513dfSPaolo Bonzini - snappy-devel 252d7c2e2b3SCleber Rosa - spice-glib-devel 253cb1513dfSPaolo Bonzini - systemd-devel 254d7c2e2b3SCleber Rosa - systemtap-sdt-devel 255d7c2e2b3SCleber Rosa - tar 256d7c2e2b3SCleber Rosa - zlib-devel 257d7c2e2b3SCleber Rosa state: present 258d7c2e2b3SCleber Rosa when: 2594b950af8SPaolo Bonzini - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] 260d7c2e2b3SCleber Rosa - ansible_facts['distribution_version'] == '8' 261556ede02SLucas Mateus Castro (alqotel) 262556ede02SLucas Mateus Castro (alqotel) - name: Install packages only available on x86 and aarch64 263556ede02SLucas Mateus Castro (alqotel) dnf: 264556ede02SLucas Mateus Castro (alqotel) # Spice server not available in ppc64le 265556ede02SLucas Mateus Castro (alqotel) name: 266556ede02SLucas Mateus Castro (alqotel) - spice-server 267cb1513dfSPaolo Bonzini - spice-server-devel 268556ede02SLucas Mateus Castro (alqotel) state: present 269556ede02SLucas Mateus Castro (alqotel) when: 2704b950af8SPaolo Bonzini - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] 271556ede02SLucas Mateus Castro (alqotel) - ansible_facts['distribution_version'] == '8' 272556ede02SLucas Mateus Castro (alqotel) - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64' 27311b4a4eeSPaolo Bonzini 27411b4a4eeSPaolo Bonzini - name: Check whether the Python runtime version is managed by alternatives 27511b4a4eeSPaolo Bonzini stat: 27611b4a4eeSPaolo Bonzini path: /etc/alternatives/python3 27711b4a4eeSPaolo Bonzini register: python3 27811b4a4eeSPaolo Bonzini 27911b4a4eeSPaolo Bonzini - name: Set default Python runtime to 3.8 on EL8 28011b4a4eeSPaolo Bonzini command: alternatives --set python3 /usr/bin/python3.8 28111b4a4eeSPaolo Bonzini when: 28211b4a4eeSPaolo Bonzini - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS'] 28311b4a4eeSPaolo Bonzini - ansible_facts['distribution_version'] == '8' 28411b4a4eeSPaolo Bonzini - python3.stat.islnk and python3.stat.lnk_target != '/usr/bin/python3.8' 285