xref: /qemu/scripts/ci/setup/build-environment.yml (revision 556ede02)
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        - ansible_facts['distribution_version'] == '20.04'
2893c9aeedSAlex Bennée
29159c5d17SCleber Rosa    - name: Update apt cache / upgrade packages via apt
30159c5d17SCleber Rosa      apt:
31159c5d17SCleber Rosa        update_cache: yes
32159c5d17SCleber Rosa        upgrade: yes
33159c5d17SCleber Rosa      when:
34159c5d17SCleber Rosa        - ansible_facts['distribution'] == 'Ubuntu'
35159c5d17SCleber Rosa
36f3f0cbafSThomas Huth    - name: Install basic packages to build QEMU on Ubuntu 20.04
37159c5d17SCleber Rosa      package:
38159c5d17SCleber Rosa        name:
39159c5d17SCleber Rosa          - ccache
40159c5d17SCleber Rosa          - gcc
41159c5d17SCleber Rosa          - gettext
42159c5d17SCleber Rosa          - git
43159c5d17SCleber Rosa          - glusterfs-common
44159c5d17SCleber Rosa          - libaio-dev
45159c5d17SCleber Rosa          - libattr1-dev
46159c5d17SCleber Rosa          - libbrlapi-dev
47159c5d17SCleber Rosa          - libbz2-dev
48159c5d17SCleber Rosa          - libcacard-dev
49159c5d17SCleber Rosa          - libcap-ng-dev
50159c5d17SCleber Rosa          - libcurl4-gnutls-dev
51159c5d17SCleber Rosa          - libdrm-dev
52159c5d17SCleber Rosa          - libepoxy-dev
53159c5d17SCleber Rosa          - libfdt-dev
54159c5d17SCleber Rosa          - libgbm-dev
55159c5d17SCleber Rosa          - libgtk-3-dev
56159c5d17SCleber Rosa          - libibverbs-dev
57159c5d17SCleber Rosa          - libiscsi-dev
58159c5d17SCleber Rosa          - libjemalloc-dev
59159c5d17SCleber Rosa          - libjpeg-turbo8-dev
60159c5d17SCleber Rosa          - liblzo2-dev
61159c5d17SCleber Rosa          - libncurses5-dev
62159c5d17SCleber Rosa          - libncursesw5-dev
63159c5d17SCleber Rosa          - libnfs-dev
64159c5d17SCleber Rosa          - libnss3-dev
65159c5d17SCleber Rosa          - libnuma-dev
66159c5d17SCleber Rosa          - libpixman-1-dev
67159c5d17SCleber Rosa          - librados-dev
68159c5d17SCleber Rosa          - librbd-dev
69159c5d17SCleber Rosa          - librdmacm-dev
70159c5d17SCleber Rosa          - libsasl2-dev
71159c5d17SCleber Rosa          - libsdl2-dev
72159c5d17SCleber Rosa          - libseccomp-dev
73159c5d17SCleber Rosa          - libsnappy-dev
74159c5d17SCleber Rosa          - libspice-protocol-dev
75159c5d17SCleber Rosa          - libssh-dev
76159c5d17SCleber Rosa          - libusb-1.0-0-dev
77159c5d17SCleber Rosa          - libusbredirhost-dev
78159c5d17SCleber Rosa          - libvdeplug-dev
79159c5d17SCleber Rosa          - libvte-2.91-dev
80159c5d17SCleber Rosa          - libzstd-dev
81159c5d17SCleber Rosa          - make
82159c5d17SCleber Rosa          - python3-yaml
83159c5d17SCleber Rosa          - python3-sphinx
84159c5d17SCleber Rosa          - python3-sphinx-rtd-theme
85159c5d17SCleber Rosa          - ninja-build
86159c5d17SCleber Rosa          - sparse
87159c5d17SCleber Rosa          - xfslibs-dev
88159c5d17SCleber Rosa        state: present
89159c5d17SCleber Rosa      when:
90159c5d17SCleber Rosa        - ansible_facts['distribution'] == 'Ubuntu'
91159c5d17SCleber Rosa
92f3f0cbafSThomas Huth    - name: Install packages to build QEMU on Ubuntu 20.04 on non-s390x
93159c5d17SCleber Rosa      package:
94159c5d17SCleber Rosa        name:
95159c5d17SCleber Rosa          - libspice-server-dev
96159c5d17SCleber Rosa          - libxen-dev
97159c5d17SCleber Rosa        state: present
98159c5d17SCleber Rosa      when:
99159c5d17SCleber Rosa        - ansible_facts['distribution'] == 'Ubuntu'
100561612f9SLucas Mateus Castro (alqotel)        - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64'
101159c5d17SCleber Rosa
102159c5d17SCleber Rosa    - name: Install basic packages to build QEMU on Ubuntu 20.04
103159c5d17SCleber Rosa      package:
104159c5d17SCleber Rosa        name:
105159c5d17SCleber Rosa        # Originally from tests/docker/dockerfiles/ubuntu2004.docker
106159c5d17SCleber Rosa          - clang-10
107159c5d17SCleber Rosa          - genisoimage
108159c5d17SCleber Rosa          - liblttng-ust-dev
109159c5d17SCleber Rosa          - libslirp-dev
110159c5d17SCleber Rosa          - netcat-openbsd
111159c5d17SCleber Rosa      when:
112159c5d17SCleber Rosa        - ansible_facts['distribution'] == 'Ubuntu'
113159c5d17SCleber Rosa        - ansible_facts['distribution_version'] == '20.04'
114d7c2e2b3SCleber Rosa
11593c9aeedSAlex Bennée    - name: Install armhf cross-compile packages to build QEMU on AArch64 Ubuntu 20.04
11693c9aeedSAlex Bennée      package:
11793c9aeedSAlex Bennée        name:
11893c9aeedSAlex Bennée          - binutils-arm-linux-gnueabihf
11993c9aeedSAlex Bennée          - gcc-arm-linux-gnueabihf
12093c9aeedSAlex Bennée          - libblkid-dev:armhf
12193c9aeedSAlex Bennée          - libc6-dev:armhf
12293c9aeedSAlex Bennée          - libffi-dev:armhf
12393c9aeedSAlex Bennée          - libglib2.0-dev:armhf
12493c9aeedSAlex Bennée          - libmount-dev:armhf
12593c9aeedSAlex Bennée          - libpcre2-dev:armhf
12693c9aeedSAlex Bennée          - libpixman-1-dev:armhf
12793c9aeedSAlex Bennée          - zlib1g-dev:armhf
12893c9aeedSAlex Bennée      when:
12993c9aeedSAlex Bennée        - ansible_facts['distribution'] == 'Ubuntu'
13093c9aeedSAlex Bennée        - ansible_facts['distribution_version'] == '20.04'
13193c9aeedSAlex Bennée        - ansible_facts['architecture'] == 'aarch64'
13293c9aeedSAlex Bennée
133d7c2e2b3SCleber Rosa    - name: Install basic packages to build QEMU on EL8
134d7c2e2b3SCleber Rosa      dnf:
135d7c2e2b3SCleber Rosa        # This list of packages start with tests/docker/dockerfiles/centos8.docker
136d7c2e2b3SCleber Rosa        # but only include files that are common to all distro variants and present
137d7c2e2b3SCleber Rosa        # in the standard repos (no add-ons)
138d7c2e2b3SCleber Rosa        name:
139d7c2e2b3SCleber Rosa          - bzip2
140d7c2e2b3SCleber Rosa          - bzip2-devel
141d7c2e2b3SCleber Rosa          - dbus-daemon
142d7c2e2b3SCleber Rosa          - diffutils
143d7c2e2b3SCleber Rosa          - gcc
144d7c2e2b3SCleber Rosa          - gcc-c++
145d7c2e2b3SCleber Rosa          - genisoimage
146d7c2e2b3SCleber Rosa          - gettext
147d7c2e2b3SCleber Rosa          - git
148d7c2e2b3SCleber Rosa          - glib2-devel
149d7c2e2b3SCleber Rosa          - libaio-devel
150d7c2e2b3SCleber Rosa          - libepoxy-devel
151d7c2e2b3SCleber Rosa          - libgcrypt-devel
152d7c2e2b3SCleber Rosa          - lzo-devel
153d7c2e2b3SCleber Rosa          - make
154d7c2e2b3SCleber Rosa          - mesa-libEGL-devel
155d7c2e2b3SCleber Rosa          - nettle-devel
1560f900baeSLucas Mateus Castro (alqotel)          - ninja-build
157d7c2e2b3SCleber Rosa          - nmap-ncat
158d7c2e2b3SCleber Rosa          - perl-Test-Harness
159d7c2e2b3SCleber Rosa          - pixman-devel
160d7c2e2b3SCleber Rosa          - python36
161d7c2e2b3SCleber Rosa          - rdma-core-devel
162d7c2e2b3SCleber Rosa          - spice-glib-devel
163d7c2e2b3SCleber Rosa          - systemtap-sdt-devel
164d7c2e2b3SCleber Rosa          - tar
165d7c2e2b3SCleber Rosa          - zlib-devel
166d7c2e2b3SCleber Rosa        state: present
167d7c2e2b3SCleber Rosa      when:
168d7c2e2b3SCleber Rosa        - ansible_facts['distribution_file_variety'] == 'RedHat'
169d7c2e2b3SCleber Rosa        - ansible_facts['distribution_version'] == '8'
170*556ede02SLucas Mateus Castro (alqotel)
171*556ede02SLucas Mateus Castro (alqotel)    - name: Install packages only available on x86 and aarch64
172*556ede02SLucas Mateus Castro (alqotel)      dnf:
173*556ede02SLucas Mateus Castro (alqotel)        # Spice server not available in ppc64le
174*556ede02SLucas Mateus Castro (alqotel)        name:
175*556ede02SLucas Mateus Castro (alqotel)          - spice-server
176*556ede02SLucas Mateus Castro (alqotel)        state: present
177*556ede02SLucas Mateus Castro (alqotel)      when:
178*556ede02SLucas Mateus Castro (alqotel)        - ansible_facts['distribution_file_variety'] == 'RedHat'
179*556ede02SLucas Mateus Castro (alqotel)        - ansible_facts['distribution_version'] == '8'
180*556ede02SLucas Mateus Castro (alqotel)        - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64'
181