blob: de0d866a1e8dd67d4b866401cd5ace4930ab0bda [file] [log] [blame]
# 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'
- name: Update apt cache / upgrade packages via apt
apt:
update_cache: yes
upgrade: yes
when:
- ansible_facts['distribution'] == 'Ubuntu'
# lcitool variables -f json ubuntu-2204 qemu | jq -r '.pkgs[]' | xargs -n 1 echo "-"
- name: Install basic packages to build QEMU on Ubuntu 22.04
package:
name:
- bash
- bc
- bison
- bsdextrautils
- bzip2
- ca-certificates
- ccache
- clang
- dbus
- debianutils
- diffutils
- exuberant-ctags
- findutils
- flex
- g++
- gcc
- gcovr
- genisoimage
- gettext
- git
- hostname
- libaio-dev
- libasan5
- libasound2-dev
- libattr1-dev
- libbpf-dev
- libbrlapi-dev
- libbz2-dev
- libc6-dev
- libcacard-dev
- libcap-ng-dev
- libcapstone-dev
- libcmocka-dev
- libcurl4-gnutls-dev
- libdaxctl-dev
- libdrm-dev
- libepoxy-dev
- libfdt-dev
- libffi-dev
- libgbm-dev
- libgcrypt20-dev
- libglib2.0-dev
- libglusterfs-dev
- libgnutls28-dev
- libgtk-3-dev
- libibumad-dev
- libibverbs-dev
- libiscsi-dev
- libjemalloc-dev
- libjpeg-turbo8-dev
- libjson-c-dev
- liblttng-ust-dev
- liblzo2-dev
- libncursesw5-dev
- libnfs-dev
- libnuma-dev
- libpam0g-dev
- libpcre2-dev
- libpixman-1-dev
- libpng-dev
- libpulse-dev
- librbd-dev
- librdmacm-dev
- libsasl2-dev
- libsdl2-dev
- libsdl2-image-dev
- libseccomp-dev
- libslirp-dev
- libsnappy-dev
- libspice-protocol-dev
- libssh-dev
- libsystemd-dev
- libtasn1-6-dev
- libubsan1
- libudev-dev
- liburing-dev
- libusb-1.0-0-dev
- libusbredirhost-dev
- libvdeplug-dev
- libvirglrenderer-dev
- libvte-2.91-dev
- libxml2-dev
- libzstd-dev
- llvm
- locales
- make
- meson
- multipath-tools
- ncat
- nettle-dev
- ninja-build
- openssh-client
- pkgconf
- python3
- python3-numpy
- python3-opencv
- python3-pillow
- python3-pip
- python3-sphinx
- python3-sphinx-rtd-theme
- python3-venv
- python3-yaml
- rpm2cpio
- sed
- sparse
- systemtap-sdt-dev
- tar
- tesseract-ocr
- tesseract-ocr-eng
- texinfo
- xfslibs-dev
- zlib1g-dev
state: present
when:
- ansible_facts['distribution'] == 'Ubuntu'
- ansible_facts['distribution_version'] == '22.04'
# not all packages are available for all architectures
- name: Install additional packages to build QEMU on Ubuntu 22.04
package:
name:
- libpmem-dev
- libspice-server-dev
- libxen-dev
state: present
when:
- ansible_facts['distribution'] == 'Ubuntu'
- ansible_facts['distribution_version'] == '22.04'
- ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64'
- name: Install armhf cross-compile packages to build QEMU on AArch64 Ubuntu 22.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'] == '22.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'