qemu/scripts/ci/setup/build-environment.yml
Alex Bennée c1924cde87 scripts/ci: clean-up the 20.04/22.04 confusion in ansible
We have a bunch of references to 20.04 (which s390x is still on)
although we are basically building on 22.04 now. Clean up the textual
references and use lcitool to generate the full package list to be
consistent.

We can drop "Install packages to build QEMU on Ubuntu on non-s390x" as
when we upgrade the s390x builder to 22.04 it won't need this
workaround.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20230503091244.1450613-19-alex.bennee@linaro.org>
2023-05-10 16:01:00 +01:00

275 lines
7.8 KiB
YAML

# 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
- libpmem-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
- libspice-server-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
- libxen-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'
- 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'