A recent update to qemu-xen has bumped the build requirements, with Python 3.8
being the new baseline but also needing the 'ensurepip' and 'tomllib/tomli'
packages.
* Ubuntu/Debian package 'ensurepip' separately, but it can be obtained by
installing the python3-venv package.
* 'tomllib' was added to the python standard library in Python 3.11, but
previously it was a separate package named 'tomli'.
In terms of changes required to build QEMU:
* Ubuntu 24.04 (Noble) has Python 3.12 so only needs python3-venv
* Ubuntu 22.04 (Jammy) has Python 3.10 but does have a python3-tomli package
that QEMU is happy with.
* FreeBSD has Python 3.9, but Python 3.11 is available.
In terms of exclusions:
* Ubuntu 20.04 (Focal) has Python 3.8, but lacks any kind of tomli package.
* Fedora 29 (Python 3.7), OpenSUSE Leap 15.6 (Python 3.6), and Ubuntu
18.04/Bionic (Python 3.6) are now too old.
Detecting tomllib/tomli is more than can fit in build's one-liner, so break it
out into a proper script.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
install_script: pkg install -y seabios gmake ninja bash
pkgconf python bison perl5
yajl lzo2 pixman argp-standalone
- libxml2 glib git
+ libxml2 glib git python311
build_script:
- cc --version
+ - export PYTHON=/usr/local/bin/python3.11
- ./configure --with-system-seabios=/usr/local/share/seabios/bios.bin
- gmake -j`sysctl -n hw.ncpu` clang=y
meson
ninja-build
python3-packaging
+ python3-tomli
+ python3-venv
)
apt-get -y --no-install-recommends install "${DEPS[@]}"
meson
ninja-build
python3-packaging
+ python3-venv
)
apt-get -y --no-install-recommends install "${DEPS[@]}"
cfgargs+=("--with-extra-qemuu-configure-args=\"--disable-werror\"")
fi
- # Qemu requires Python 3.5 or later, and ninja
+ # Qemu requires Python 3.8 or later, and ninja
# and Clang 10 or later
- if ! type python3 || python3 -c "import sys; res = sys.version_info < (3, 5); exit(not(res))" \
+ if ! type python3 || ! python3 automation/scripts/qemu-deps-check.py \
|| [[ "$cc_is_clang" == y && "$cc_ver" -lt 0x0a0000 ]] \
|| ! type ninja; then
cfgargs+=("--with-system-qemu=/bin/false")
--- /dev/null
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+import sys
+
+if sys.version_info < (3, 8):
+ print("Python %d.%d.%d too old" %
+ (sys.version_info.major,
+ sys.version_info.minor,
+ sys.version_info.micro))
+ exit(1)
+
+try:
+ import tomllib
+except ImportError:
+ try:
+ import tomli
+ except ImportError:
+ print("No tomli")
+ exit(1)