aboutsummaryrefslogtreecommitdiff
path: root/scripts/ci/setup/build-environment.yml
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/ci/setup/build-environment.yml')
-rw-r--r--scripts/ci/setup/build-environment.yml214
1 files changed, 186 insertions, 28 deletions
diff --git a/scripts/ci/setup/build-environment.yml b/scripts/ci/setup/build-environment.yml
index 581c1c75d1..f344d1a850 100644
--- a/scripts/ci/setup/build-environment.yml
+++ b/scripts/ci/setup/build-environment.yml
@@ -19,6 +19,12 @@
- '((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
@@ -26,91 +32,243 @@
when:
- ansible_facts['distribution'] == 'Ubuntu'
- - name: Install basic packages to build QEMU on Ubuntu 18.04/20.04
+ # 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:
- # Originally from tests/docker/dockerfiles/ubuntu1804.docker
+ - bash
+ - bc
+ - bison
+ - bsdextrautils
+ - bzip2
+ - ca-certificates
- ccache
+ - clang
+ - dbus
+ - debianutils
+ - diffutils
+ - exuberant-ctags
+ - findutils
+ - flex
+ - g++
- gcc
+ - gcovr
+ - genisoimage
- gettext
- git
- - glusterfs-common
+ - 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
- - libncurses5-dev
- libncursesw5-dev
- libnfs-dev
- - libnss3-dev
- libnuma-dev
+ - libpam0g-dev
+ - libpcre2-dev
- libpixman-1-dev
- - librados-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
- - python3-yaml
+ - 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
- - ninja-build
+ - 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 packages to build QEMU on Ubuntu 18.04/20.04 on non-s390x
+ - name: Install armhf cross-compile packages to build QEMU on AArch64 Ubuntu 22.04
package:
name:
- - libspice-server-dev
- - libxen-dev
- state: present
+ - 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['architecture'] != 's390x'
+ - ansible_facts['distribution_version'] == '22.04'
+ - ansible_facts['architecture'] == 'aarch64'
- - name: Install basic packages to build QEMU on Ubuntu 18.04
- package:
+ - name: Enable EPEL repo on EL8
+ dnf:
name:
- # Originally from tests/docker/dockerfiles/ubuntu1804.docker
- - clang
+ - epel-release
+ state: present
when:
- - ansible_facts['distribution'] == 'Ubuntu'
- - ansible_facts['distribution_version'] == '18.04'
+ - ansible_facts['distribution_file_variety'] in ['RedHat', 'CentOS']
+ - ansible_facts['distribution_major_version'] == '8'
- - name: Install basic packages to build QEMU on Ubuntu 20.04
- package:
+ - 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:
- # Originally from tests/docker/dockerfiles/ubuntu2004.docker
- - clang-10
+ - bzip2
+ - bzip2-devel
+ - capstone-devel
+ - dbus-daemon
+ - device-mapper-multipath-devel
+ - diffutils
+ - gcc
+ - gcc-c++
- genisoimage
- - liblttng-ust-dev
- - libslirp-dev
- - netcat-openbsd
+ - 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'] == 'Ubuntu'
- - ansible_facts['distribution_version'] == '20.04'
+ - 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'