mirror of https://github.com/xemu-project/xemu.git
* separate accepted and auto-installed versions of Python dependencies
* bump tricore container to Debian 11 * small configure cleanups -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmTsZ14UHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroMlVQf+Juomqo/luBwWwwguEZp32s+c+CYI HZJJJSIycq/VY2OsT9e+H1eMJYsCsdzJxn1NcnmEIUSMRkIuCxV5F62gaMl6BjgF tH8v4y1ZBDc0i0zw6qkuZM4sydNkK1XohGeOp8NkTE7F2fX0DT2AO17rSKIHh77R enNE5yq+s0YGHfYz7PbNvT1G+YXqt9SEEfCqIHkCQccjgFx9PEJu7PPuWdIYLG5s VVIyrbZzcX7OmQCCWdEZCe5t8swbOHtzE5D3JUVvfnUDj3BONXQybp/14rEikrjU fuy9sf3qW4XlwzPOUWFlPfxJIg8KWB1fL2wIppDn2gKrBB7fekwz5hlJRA== =lZmw -----END PGP SIGNATURE----- Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging * separate accepted and auto-installed versions of Python dependencies * bump tricore container to Debian 11 * small configure cleanups # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmTsZ14UHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroMlVQf+Juomqo/luBwWwwguEZp32s+c+CYI # HZJJJSIycq/VY2OsT9e+H1eMJYsCsdzJxn1NcnmEIUSMRkIuCxV5F62gaMl6BjgF # tH8v4y1ZBDc0i0zw6qkuZM4sydNkK1XohGeOp8NkTE7F2fX0DT2AO17rSKIHh77R # enNE5yq+s0YGHfYz7PbNvT1G+YXqt9SEEfCqIHkCQccjgFx9PEJu7PPuWdIYLG5s # VVIyrbZzcX7OmQCCWdEZCe5t8swbOHtzE5D3JUVvfnUDj3BONXQybp/14rEikrjU # fuy9sf3qW4XlwzPOUWFlPfxJIg8KWB1fL2wIppDn2gKrBB7fekwz5hlJRA== # =lZmw # -----END PGP SIGNATURE----- # gpg: Signature made Mon 28 Aug 2023 05:22:38 EDT # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * tag 'for-upstream' of https://gitlab.com/bonzini/qemu: configure: remove unnecessary mkdir -p configure: fix container_hosts misspellings and duplications target/i386: add support for VMX_SECONDARY_EXEC_ENABLE_USER_WAIT_PAUSE tests/docker: add python3-tomli dependency to containers Revert "tests: Use separate virtual environment for avocado" configure: switch to ensuregroup python: use vendored tomli configure: never use PyPI for Meson lcitool: bump libvirt-ci submodule and regenerate python: mkvenv: add ensuregroup command python: mkvenv: introduce TOML-like representation of dependencies python: mkvenv: tweak the matching of --diagnose to depspecs dockerfiles: bump tricore cross compiler container to Debian 11 configure: fix and complete detection of tricore tools Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
eaf760ac0d
|
@ -103,7 +103,7 @@ crash-test-debian:
|
|||
script:
|
||||
- cd build
|
||||
- make NINJA=":" check-venv
|
||||
- tests/venv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
|
||||
- pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
|
||||
|
||||
build-system-fedora:
|
||||
extends:
|
||||
|
@ -146,8 +146,8 @@ crash-test-fedora:
|
|||
script:
|
||||
- cd build
|
||||
- make NINJA=":" check-venv
|
||||
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
|
||||
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
|
||||
- pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
|
||||
- pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
|
||||
|
||||
build-system-centos:
|
||||
extends:
|
||||
|
|
|
@ -11,6 +11,6 @@ MAKE='/usr/local/bin/gmake'
|
|||
NINJA='/usr/local/bin/ninja'
|
||||
PACKAGING_COMMAND='pkg'
|
||||
PIP3='/usr/local/bin/pip-3.8'
|
||||
PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cmocka ctags curl cyrus-sasl dbus diffutils dtc flex fusefs-libs3 gettext git glib gmake gnutls gsed gtk3 json-c libepoxy libffi libgcrypt libjpeg-turbo libnfs libslirp libspice-server libssh libtasn1 llvm lzo2 meson mtools ncurses nettle ninja opencv pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy sndio socat spice-protocol tesseract usbredir virglrenderer vte3 xorriso zstd'
|
||||
PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cmocka ctags curl cyrus-sasl dbus diffutils dtc flex fusefs-libs3 gettext git glib gmake gnutls gsed gtk3 json-c libepoxy libffi libgcrypt libjpeg-turbo libnfs libslirp libspice-server libssh libtasn1 llvm lzo2 meson mtools ncurses nettle ninja opencv pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-tomli py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy sndio socat spice-protocol tesseract usbredir virglrenderer vte3 xorriso zstd'
|
||||
PYPI_PKGS=''
|
||||
PYTHON='/usr/local/bin/python3'
|
||||
|
|
|
@ -12,5 +12,5 @@ NINJA='/opt/homebrew/bin/ninja'
|
|||
PACKAGING_COMMAND='brew'
|
||||
PIP3='/opt/homebrew/bin/pip3'
|
||||
PKGS='bash bc bison bzip2 capstone ccache cmocka ctags curl dbus diffutils dtc flex gcovr gettext git glib gnu-sed gnutls gtk+3 jemalloc jpeg-turbo json-c libepoxy libffi libgcrypt libiscsi libnfs libpng libslirp libssh libtasn1 libusb llvm lzo make meson mtools ncurses nettle ninja pixman pkg-config python3 rpm2cpio sdl2 sdl2_image snappy socat sparse spice-protocol tesseract usbredir vde vte3 xorriso zlib zstd'
|
||||
PYPI_PKGS='PyYAML numpy pillow sphinx sphinx-rtd-theme'
|
||||
PYPI_PKGS='PyYAML numpy pillow sphinx sphinx-rtd-theme tomli'
|
||||
PYTHON='/opt/homebrew/bin/python3'
|
||||
|
|
|
@ -1018,19 +1018,14 @@ fi
|
|||
python="$python -B"
|
||||
mkvenv="$python ${source_path}/python/scripts/mkvenv.py"
|
||||
|
||||
mkvenv_flags=""
|
||||
if test "$download" = "enabled" ; then
|
||||
mkvenv_flags="--online"
|
||||
fi
|
||||
# Finish preparing the virtual environment using vendored .whl files
|
||||
|
||||
if ! $mkvenv ensure \
|
||||
$mkvenv_flags \
|
||||
--dir "${source_path}/python/wheels" \
|
||||
--diagnose "meson" \
|
||||
"meson>=0.63.0" ;
|
||||
then
|
||||
exit 1
|
||||
if $python -c 'import sys; sys.exit(sys.version_info >= (3,11))'; then
|
||||
$mkvenv ensure --dir "${source_path}/python/wheels" \
|
||||
'tomli>=1.2.0' || exit 1
|
||||
fi
|
||||
$mkvenv ensuregroup --dir "${source_path}/python/wheels" \
|
||||
${source_path}/pythondeps.toml meson || exit 1
|
||||
|
||||
# At this point, we expect Meson to be installed and available.
|
||||
# We expect mkvenv or pip to have created pyvenv/bin/meson for us.
|
||||
|
@ -1047,10 +1042,9 @@ if test "$download" = "enabled" -a "$docs" = "enabled" ; then
|
|||
fi
|
||||
|
||||
if test "$docs" != "disabled" ; then
|
||||
if ! $mkvenv ensure \
|
||||
if ! $mkvenv ensuregroup \
|
||||
$mkvenv_flags \
|
||||
--diagnose "sphinx-build" \
|
||||
"sphinx>=1.6.0" "sphinx-rtd-theme>=0.5.0";
|
||||
${source_path}/pythondeps.toml docs;
|
||||
then
|
||||
if test "$docs" = "enabled" ; then
|
||||
exit 1
|
||||
|
@ -1271,6 +1265,7 @@ fi
|
|||
: ${cross_prefix_sh4="sh4-linux-gnu-"}
|
||||
: ${cross_prefix_sparc64="sparc64-linux-gnu-"}
|
||||
: ${cross_prefix_sparc="$cross_prefix_sparc64"}
|
||||
: ${cross_prefix_tricore="tricore-"}
|
||||
: ${cross_prefix_x86_64="x86_64-linux-gnu-"}
|
||||
|
||||
: ${cross_cc_aarch64_be="$cross_cc_aarch64"}
|
||||
|
@ -1357,7 +1352,7 @@ probe_target_compiler() {
|
|||
sh4) container_hosts=x86_64 ;;
|
||||
sparc64) container_hosts=x86_64 ;;
|
||||
tricore) container_hosts=x86_64 ;;
|
||||
x86_64) container_hosts="aarch64 ppc64el x86_64" ;;
|
||||
x86_64) container_hosts="aarch64 ppc64le x86_64" ;;
|
||||
xtensa*) container_hosts=x86_64 ;;
|
||||
esac
|
||||
|
||||
|
@ -1458,17 +1453,12 @@ probe_target_compiler() {
|
|||
tricore)
|
||||
container_image=debian-tricore-cross
|
||||
container_cross_prefix=tricore-
|
||||
container_cross_as=tricore-as
|
||||
container_cross_ld=tricore-ld
|
||||
container_cross_cc=tricore-gcc
|
||||
break
|
||||
;;
|
||||
x86_64)
|
||||
container_image=debian-amd64-cross
|
||||
container_cross_prefix=x86_64-linux-gnu-
|
||||
;;
|
||||
xtensa*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-xtensa-cross
|
||||
|
||||
# default to the dc232b cpu
|
||||
|
@ -1785,7 +1775,6 @@ fi
|
|||
for target in $target_list; do
|
||||
target_dir="$target"
|
||||
target_name=$(echo $target | cut -d '-' -f 1)$EXESUF
|
||||
mkdir -p "$target_dir"
|
||||
case $target in
|
||||
*-user) symlink "../qemu-$target_name" "$target_dir/qemu-$target_name" ;;
|
||||
*) symlink "../qemu-system-$target_name" "$target_dir/qemu-system-$target_name" ;;
|
||||
|
|
|
@ -61,19 +61,19 @@ Under ``tests/avocado/`` as the root we have:
|
|||
::
|
||||
|
||||
$ make check-venv (needed only the first time to create the venv)
|
||||
$ ./tests/venv/bin/avocado run -t acpi tests/avocado
|
||||
$ ./pyvenv/bin/avocado run -t acpi tests/avocado
|
||||
|
||||
The above will run all acpi avocado tests including this one.
|
||||
In order to run the individual tests, perform the following:
|
||||
::
|
||||
|
||||
$ ./tests/venv/bin/avocado run tests/avocado/acpi-bits.py --tap -
|
||||
$ ./pyvenv/bin/avocado run tests/avocado/acpi-bits.py --tap -
|
||||
|
||||
The above will produce output in tap format. You can omit "--tap -" in the
|
||||
end and it will produce output like the following:
|
||||
::
|
||||
|
||||
$ ./tests/venv/bin/avocado run tests/avocado/acpi-bits.py
|
||||
$ ./pyvenv/bin/avocado run tests/avocado/acpi-bits.py
|
||||
Fetching asset from tests/avocado/acpi-bits.py:AcpiBitsTest.test_acpi_smbios_bits
|
||||
JOB ID : eab225724da7b64c012c65705dc2fa14ab1defef
|
||||
JOB LOG : /home/anisinha/avocado/job-results/job-2022-10-10T17.58-eab2257/job.log
|
||||
|
|
|
@ -894,9 +894,9 @@ You can run the avocado tests simply by executing:
|
|||
|
||||
make check-avocado
|
||||
|
||||
This involves the automatic creation of Python virtual environment
|
||||
within the build tree (at ``tests/venv``) which will have all the
|
||||
right dependencies, and will save tests results also within the
|
||||
This involves the automatic installation, from PyPI, of all the
|
||||
necessary avocado-framework dependencies into the QEMU venv within the
|
||||
build tree (at ``./pyvenv``). Test results are also saved within the
|
||||
build tree (at ``tests/results``).
|
||||
|
||||
Note: the build environment must be using a Python 3 stack, and have
|
||||
|
@ -953,7 +953,7 @@ may be invoked by running:
|
|||
|
||||
.. code::
|
||||
|
||||
tests/venv/bin/avocado run $OPTION1 $OPTION2 tests/avocado/
|
||||
pyvenv/bin/avocado run $OPTION1 $OPTION2 tests/avocado/
|
||||
|
||||
Note that if ``make check-avocado`` was not executed before, it is
|
||||
possible to create the Python virtual environment with the dependencies
|
||||
|
@ -968,20 +968,20 @@ a test file. To run tests from a single file within the build tree, use:
|
|||
|
||||
.. code::
|
||||
|
||||
tests/venv/bin/avocado run tests/avocado/$TESTFILE
|
||||
pyvenv/bin/avocado run tests/avocado/$TESTFILE
|
||||
|
||||
To run a single test within a test file, use:
|
||||
|
||||
.. code::
|
||||
|
||||
tests/venv/bin/avocado run tests/avocado/$TESTFILE:$TESTCLASS.$TESTNAME
|
||||
pyvenv/bin/avocado run tests/avocado/$TESTFILE:$TESTCLASS.$TESTNAME
|
||||
|
||||
Valid test names are visible in the output from any previous execution
|
||||
of Avocado or ``make check-avocado``, and can also be queried using:
|
||||
|
||||
.. code::
|
||||
|
||||
tests/venv/bin/avocado list tests/avocado
|
||||
pyvenv/bin/avocado list tests/avocado
|
||||
|
||||
Manual Installation
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
|
|
@ -14,6 +14,8 @@ Commands:
|
|||
post_init
|
||||
post-venv initialization
|
||||
ensure Ensure that the specified package is installed.
|
||||
ensuregroup
|
||||
Ensure that the specified package group is installed.
|
||||
|
||||
--------------------------------------------------
|
||||
|
||||
|
@ -44,8 +46,24 @@ options:
|
|||
--online Install packages from PyPI, if necessary.
|
||||
--dir DIR Path to vendored packages where we may install from.
|
||||
|
||||
--------------------------------------------------
|
||||
|
||||
usage: mkvenv ensuregroup [-h] [--online] [--dir DIR] file group...
|
||||
|
||||
positional arguments:
|
||||
file pointer to a TOML file
|
||||
group section name in the TOML file
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--online Install packages from PyPI, if necessary.
|
||||
--dir DIR Path to vendored packages where we may install from.
|
||||
|
||||
"""
|
||||
|
||||
# The duplication between importlib and pkg_resources does not help
|
||||
# pylint: disable=too-many-lines
|
||||
|
||||
# Copyright (C) 2022-2023 Red Hat, Inc.
|
||||
#
|
||||
# Authors:
|
||||
|
@ -69,6 +87,7 @@ import sysconfig
|
|||
from types import SimpleNamespace
|
||||
from typing import (
|
||||
Any,
|
||||
Dict,
|
||||
Iterator,
|
||||
Optional,
|
||||
Sequence,
|
||||
|
@ -95,6 +114,18 @@ except ImportError:
|
|||
except ImportError:
|
||||
HAVE_DISTLIB = False
|
||||
|
||||
# Try to load tomllib, with a fallback to tomli.
|
||||
# HAVE_TOMLLIB is checked below, just-in-time, so that mkvenv does not fail
|
||||
# outside the venv or before a potential call to ensurepip in checkpip().
|
||||
HAVE_TOMLLIB = True
|
||||
try:
|
||||
import tomllib
|
||||
except ImportError:
|
||||
try:
|
||||
import tomli as tomllib
|
||||
except ImportError:
|
||||
HAVE_TOMLLIB = False
|
||||
|
||||
# Do not add any mandatory dependencies from outside the stdlib:
|
||||
# This script *must* be usable standalone!
|
||||
|
||||
|
@ -786,40 +817,68 @@ def pip_install(
|
|||
)
|
||||
|
||||
|
||||
def _make_version_constraint(info: Dict[str, str], install: bool) -> str:
|
||||
"""
|
||||
Construct the version constraint part of a PEP 508 dependency
|
||||
specification (for example '>=0.61.5') from the accepted and
|
||||
installed keys of the provided dictionary.
|
||||
|
||||
:param info: A dictionary corresponding to a TOML key-value list.
|
||||
:param install: True generates install constraints, False generates
|
||||
presence constraints
|
||||
"""
|
||||
if install and "installed" in info:
|
||||
return "==" + info["installed"]
|
||||
|
||||
dep_spec = info.get("accepted", "")
|
||||
dep_spec = dep_spec.strip()
|
||||
# Double check that they didn't just use a version number
|
||||
if dep_spec and dep_spec[0] not in "!~><=(":
|
||||
raise Ouch(
|
||||
"invalid dependency specifier " + dep_spec + " in dependency file"
|
||||
)
|
||||
|
||||
return dep_spec
|
||||
|
||||
|
||||
def _do_ensure(
|
||||
dep_specs: Sequence[str],
|
||||
group: Dict[str, Dict[str, str]],
|
||||
online: bool = False,
|
||||
wheels_dir: Optional[Union[str, Path]] = None,
|
||||
prog: Optional[str] = None,
|
||||
) -> Optional[Tuple[str, bool]]:
|
||||
"""
|
||||
Use pip to ensure we have the package specified by @dep_specs.
|
||||
Use pip to ensure we have the packages specified in @group.
|
||||
|
||||
If the package is already installed, do nothing. If online and
|
||||
If the packages are already installed, do nothing. If online and
|
||||
wheels_dir are both provided, prefer packages found in wheels_dir
|
||||
first before connecting to PyPI.
|
||||
|
||||
:param dep_specs:
|
||||
PEP 508 dependency specifications. e.g. ['meson>=0.61.5'].
|
||||
:param group: A dictionary of dictionaries, corresponding to a
|
||||
section in a pythondeps.toml file.
|
||||
:param online: If True, fall back to PyPI.
|
||||
:param wheels_dir: If specified, search this path for packages.
|
||||
"""
|
||||
absent = []
|
||||
present = []
|
||||
for spec in dep_specs:
|
||||
matcher = distlib.version.LegacyMatcher(spec)
|
||||
ver = _get_version(matcher.name)
|
||||
canary = None
|
||||
for name, info in group.items():
|
||||
constraint = _make_version_constraint(info, False)
|
||||
matcher = distlib.version.LegacyMatcher(name + constraint)
|
||||
print(f"mkvenv: checking for {matcher}", file=sys.stderr)
|
||||
ver = _get_version(name)
|
||||
if (
|
||||
ver is None
|
||||
# Always pass installed package to pip, so that they can be
|
||||
# updated if the requested version changes
|
||||
or not _is_system_package(matcher.name)
|
||||
or not _is_system_package(name)
|
||||
or not matcher.match(distlib.version.LegacyVersion(ver))
|
||||
):
|
||||
absent.append(spec)
|
||||
absent.append(name + _make_version_constraint(info, True))
|
||||
if len(absent) == 1:
|
||||
canary = info.get("canary", None)
|
||||
else:
|
||||
logger.info("found %s %s", matcher.name, ver)
|
||||
present.append(matcher.name)
|
||||
logger.info("found %s %s", name, ver)
|
||||
present.append(name)
|
||||
|
||||
if present:
|
||||
generate_console_scripts(present)
|
||||
|
@ -839,7 +898,7 @@ def _do_ensure(
|
|||
absent[0],
|
||||
online,
|
||||
wheels_dir,
|
||||
prog if absent[0] == dep_specs[0] else None,
|
||||
canary,
|
||||
)
|
||||
|
||||
return None
|
||||
|
@ -867,12 +926,83 @@ def ensure(
|
|||
be presented to the user. e.g., 'sphinx-build' can be used as a
|
||||
bellwether for the presence of 'sphinx'.
|
||||
"""
|
||||
print(f"mkvenv: checking for {', '.join(dep_specs)}", file=sys.stderr)
|
||||
|
||||
if not HAVE_DISTLIB:
|
||||
raise Ouch("a usable distlib could not be found, please install it")
|
||||
|
||||
result = _do_ensure(dep_specs, online, wheels_dir, prog)
|
||||
# Convert the depspecs to a dictionary, as if they came
|
||||
# from a section in a pythondeps.toml file
|
||||
group: Dict[str, Dict[str, str]] = {}
|
||||
for spec in dep_specs:
|
||||
name = distlib.version.LegacyMatcher(spec).name
|
||||
group[name] = {}
|
||||
|
||||
spec = spec.strip()
|
||||
pos = len(name)
|
||||
ver = spec[pos:].strip()
|
||||
if ver:
|
||||
group[name]["accepted"] = ver
|
||||
|
||||
if prog:
|
||||
group[name]["canary"] = prog
|
||||
prog = None
|
||||
|
||||
result = _do_ensure(group, online, wheels_dir)
|
||||
if result:
|
||||
# Well, that's not good.
|
||||
if result[1]:
|
||||
raise Ouch(result[0])
|
||||
raise SystemExit(f"\n{result[0]}\n\n")
|
||||
|
||||
|
||||
def _parse_groups(file: str) -> Dict[str, Dict[str, Any]]:
|
||||
if not HAVE_TOMLLIB:
|
||||
if sys.version_info < (3, 11):
|
||||
raise Ouch("found no usable tomli, please install it")
|
||||
|
||||
raise Ouch(
|
||||
"Python >=3.11 does not have tomllib... what have you done!?"
|
||||
)
|
||||
|
||||
# Use loads() to support both tomli v1.2.x (Ubuntu 22.04,
|
||||
# Debian bullseye-backports) and v2.0.x
|
||||
with open(file, "r", encoding="ascii") as depfile:
|
||||
contents = depfile.read()
|
||||
return tomllib.loads(contents) # type: ignore
|
||||
|
||||
|
||||
def ensure_group(
|
||||
file: str,
|
||||
groups: Sequence[str],
|
||||
online: bool = False,
|
||||
wheels_dir: Optional[Union[str, Path]] = None,
|
||||
) -> None:
|
||||
"""
|
||||
Use pip to ensure we have the package specified by @dep_specs.
|
||||
|
||||
If the package is already installed, do nothing. If online and
|
||||
wheels_dir are both provided, prefer packages found in wheels_dir
|
||||
first before connecting to PyPI.
|
||||
|
||||
:param dep_specs:
|
||||
PEP 508 dependency specifications. e.g. ['meson>=0.61.5'].
|
||||
:param online: If True, fall back to PyPI.
|
||||
:param wheels_dir: If specified, search this path for packages.
|
||||
"""
|
||||
|
||||
if not HAVE_DISTLIB:
|
||||
raise Ouch("found no usable distlib, please install it")
|
||||
|
||||
parsed_deps = _parse_groups(file)
|
||||
|
||||
to_install: Dict[str, Dict[str, str]] = {}
|
||||
for group in groups:
|
||||
try:
|
||||
to_install.update(parsed_deps[group])
|
||||
except KeyError as exc:
|
||||
raise Ouch(f"group {group} not defined") from exc
|
||||
|
||||
result = _do_ensure(to_install, online, wheels_dir)
|
||||
if result:
|
||||
# Well, that's not good.
|
||||
if result[1]:
|
||||
|
@ -907,6 +1037,37 @@ def _add_post_init_subcommand(subparsers: Any) -> None:
|
|||
subparsers.add_parser("post_init", help="post-venv initialization")
|
||||
|
||||
|
||||
def _add_ensuregroup_subcommand(subparsers: Any) -> None:
|
||||
subparser = subparsers.add_parser(
|
||||
"ensuregroup",
|
||||
help="Ensure that the specified package group is installed.",
|
||||
)
|
||||
subparser.add_argument(
|
||||
"--online",
|
||||
action="store_true",
|
||||
help="Install packages from PyPI, if necessary.",
|
||||
)
|
||||
subparser.add_argument(
|
||||
"--dir",
|
||||
type=str,
|
||||
action="store",
|
||||
help="Path to vendored packages where we may install from.",
|
||||
)
|
||||
subparser.add_argument(
|
||||
"file",
|
||||
type=str,
|
||||
action="store",
|
||||
help=("Path to a TOML file describing package groups"),
|
||||
)
|
||||
subparser.add_argument(
|
||||
"group",
|
||||
type=str,
|
||||
action="store",
|
||||
help="One or more package group names",
|
||||
nargs="+",
|
||||
)
|
||||
|
||||
|
||||
def _add_ensure_subcommand(subparsers: Any) -> None:
|
||||
subparser = subparsers.add_parser(
|
||||
"ensure", help="Ensure that the specified package is installed."
|
||||
|
@ -964,6 +1125,7 @@ def main() -> int:
|
|||
_add_create_subcommand(subparsers)
|
||||
_add_post_init_subcommand(subparsers)
|
||||
_add_ensure_subcommand(subparsers)
|
||||
_add_ensuregroup_subcommand(subparsers)
|
||||
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
|
@ -982,6 +1144,13 @@ def main() -> int:
|
|||
wheels_dir=args.dir,
|
||||
prog=args.diagnose,
|
||||
)
|
||||
if args.command == "ensuregroup":
|
||||
ensure_group(
|
||||
file=args.file,
|
||||
groups=args.group,
|
||||
online=args.online,
|
||||
wheels_dir=args.dir,
|
||||
)
|
||||
logger.debug("mkvenv.py %s: exiting", args.command)
|
||||
except Ouch as exc:
|
||||
print("\n*** Ouch! ***\n", file=sys.stderr)
|
||||
|
|
|
@ -43,13 +43,16 @@ def main() -> int:
|
|||
packages = {
|
||||
"meson==0.63.3":
|
||||
"d677b809c4895dcbaac9bf6c43703fcb3609a4b24c6057c78f828590049cf43a",
|
||||
|
||||
"tomli==2.0.1":
|
||||
"939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
|
||||
}
|
||||
|
||||
vendor_dir = Path(__file__, "..", "..", "wheels").resolve()
|
||||
|
||||
with tempfile.NamedTemporaryFile(mode="w", encoding="utf-8") as file:
|
||||
for dep_spec, checksum in packages.items():
|
||||
file.write(f"{dep_spec} --hash=sha256:{checksum}")
|
||||
print(f"{dep_spec} --hash=sha256:{checksum}", file=file)
|
||||
file.flush()
|
||||
|
||||
cli_args = [
|
||||
|
|
|
@ -94,6 +94,12 @@ allow_subclassing_any = True
|
|||
[mypy-fuse]
|
||||
ignore_missing_imports = True
|
||||
|
||||
[mypy-tomli]
|
||||
ignore_missing_imports = True
|
||||
|
||||
[mypy-tomllib]
|
||||
ignore_missing_imports = True
|
||||
|
||||
[mypy-urwid]
|
||||
ignore_missing_imports = True
|
||||
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,32 @@
|
|||
# This file describes Python package requirements to be
|
||||
# installed in the pyvenv Python virtual environment.
|
||||
#
|
||||
# Packages are placed in groups, which are installed using
|
||||
# the ensuregroup subcommand of python/scripts/mkvenv.py.
|
||||
# Each group forms a TOML section and each entry in the
|
||||
# section is a TOML key-value list describing a package.
|
||||
# All fields are optional; valid fields are:
|
||||
#
|
||||
# - accepted: accepted versions when using a system package
|
||||
# - installed: fixed version to install in the virtual environment
|
||||
# if a system package is not found; if not specified,
|
||||
# the minimum and maximum
|
||||
# - canary: if specified, use this program name to present more
|
||||
# precise error diagnostics to the user. For example,
|
||||
# 'sphinx-build' can be used as a bellwether for the
|
||||
# presence of 'sphinx' in the system.
|
||||
|
||||
[meson]
|
||||
# The install key should match the version in python/wheels/
|
||||
meson = { accepted = ">=0.63.0", installed = "0.63.3", canary = "meson" }
|
||||
|
||||
[docs]
|
||||
sphinx = { accepted = ">=1.6", installed = "5.3.0", canary = "sphinx-build" }
|
||||
sphinx_rtd_theme = { accepted = ">=0.5", installed = "1.1.1" }
|
||||
|
||||
[avocado]
|
||||
# Note that qemu.git/python/ is always implicitly installed.
|
||||
# Prefer an LTS version when updating the accepted versions of
|
||||
# avocado-framework, for example right now the limit is 92.x.
|
||||
avocado-framework = { accepted = "(>=88.1, <93.0)", installed = "88.1", canary = "avocado" }
|
||||
pycdlib = { accepted = ">=1.11.0" }
|
|
@ -4,7 +4,7 @@
|
|||
# KVM and x86_64, or tests that are generic enough to be valid for all
|
||||
# targets. Such a test list can be generated with:
|
||||
#
|
||||
# ./tests/venv/bin/avocado list --filter-by-tags-include-empty \
|
||||
# ./pyvenv/bin/avocado list --filter-by-tags-include-empty \
|
||||
# --filter-by-tags-include-empty-key -t accel:kvm,arch:x86_64 \
|
||||
# tests/avocado/
|
||||
#
|
||||
|
@ -22,7 +22,7 @@
|
|||
# - tests/avocado/virtio_check_params.py:VirtioMaxSegSettingsCheck.test_machine_types
|
||||
#
|
||||
make get-vm-images
|
||||
./tests/venv/bin/avocado run \
|
||||
./pyvenv/bin/avocado run \
|
||||
--job-results-dir=tests/results/ \
|
||||
tests/avocado/boot_linux.py:BootLinuxX8664.test_pc_i440fx_kvm \
|
||||
tests/avocado/boot_linux.py:BootLinuxX8664.test_pc_q35_kvm \
|
||||
|
|
|
@ -43,7 +43,7 @@ except ModuleNotFoundError as exc:
|
|||
print(f"Module '{exc.name}' not found.")
|
||||
print(" Try 'make check-venv' from your build directory,")
|
||||
print(" and then one way to run this script is like so:")
|
||||
print(f' > $builddir/tests/venv/bin/python3 "{path}"')
|
||||
print(f' > $builddir/pyvenv/bin/python3 "{path}"')
|
||||
sys.exit(1)
|
||||
|
||||
logger = logging.getLogger('device-crash-test')
|
||||
|
|
|
@ -1228,7 +1228,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
|
|||
"vmx-invpcid-exit", "vmx-vmfunc", "vmx-shadow-vmcs", "vmx-encls-exit",
|
||||
"vmx-rdseed-exit", "vmx-pml", NULL, NULL,
|
||||
"vmx-xsaves", NULL, NULL, NULL,
|
||||
NULL, "vmx-tsc-scaling", NULL, NULL,
|
||||
NULL, "vmx-tsc-scaling", "vmx-enable-user-wait-pause", NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
},
|
||||
.msr = {
|
||||
|
@ -1545,6 +1545,10 @@ static FeatureDep feature_dependencies[] = {
|
|||
.from = { FEAT_8000_0001_ECX, CPUID_EXT3_SVM },
|
||||
.to = { FEAT_SVM, ~0ull },
|
||||
},
|
||||
{
|
||||
.from = { FEAT_VMX_SECONDARY_CTLS, VMX_SECONDARY_EXEC_ENABLE_USER_WAIT_PAUSE },
|
||||
.to = { FEAT_7_0_ECX, CPUID_7_0_ECX_WAITPKG },
|
||||
},
|
||||
};
|
||||
|
||||
typedef struct X86RegisterInfo32 {
|
||||
|
|
|
@ -1111,6 +1111,7 @@ uint64_t x86_cpu_get_supported_feature_word(FeatureWord w,
|
|||
#define VMX_SECONDARY_EXEC_ENABLE_PML 0x00020000
|
||||
#define VMX_SECONDARY_EXEC_XSAVES 0x00100000
|
||||
#define VMX_SECONDARY_EXEC_TSC_SCALING 0x02000000
|
||||
#define VMX_SECONDARY_EXEC_ENABLE_USER_WAIT_PAUSE 0x04000000
|
||||
|
||||
#define VMX_PIN_BASED_EXT_INTR_MASK 0x00000001
|
||||
#define VMX_PIN_BASED_NMI_EXITING 0x00000008
|
||||
|
|
|
@ -89,10 +89,8 @@ distclean-tcg: $(DISTCLEAN_TCG_TARGET_RULES)
|
|||
# Build up our target list from the filtered list of ninja targets
|
||||
TARGETS=$(patsubst libqemu-%.fa, %, $(filter libqemu-%.fa, $(ninja-targets)))
|
||||
|
||||
TESTS_VENV_DIR=$(BUILD_DIR)/tests/venv
|
||||
TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt
|
||||
TESTS_VENV_TOKEN=$(BUILD_DIR)/pyvenv/tests.group
|
||||
TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results
|
||||
TESTS_PYTHON=$(TESTS_VENV_DIR)/bin/python3
|
||||
ifndef AVOCADO_TESTS
|
||||
AVOCADO_TESTS=tests/avocado
|
||||
endif
|
||||
|
@ -108,20 +106,19 @@ else
|
|||
endif
|
||||
|
||||
quiet-venv-pip = $(quiet-@)$(call quiet-command-run, \
|
||||
$(TESTS_PYTHON) -m pip -q --disable-pip-version-check $1, \
|
||||
$(PYTHON) -m pip -q --disable-pip-version-check $1, \
|
||||
"VENVPIP","$1")
|
||||
|
||||
$(TESTS_VENV_DIR): $(TESTS_VENV_REQ)
|
||||
$(call quiet-command, $(PYTHON) -m venv $@, VENV, $@)
|
||||
$(TESTS_VENV_TOKEN): $(SRC_PATH)/pythondeps.toml
|
||||
$(call quiet-venv-pip,install -e "$(SRC_PATH)/python/")
|
||||
$(call quiet-venv-pip,install -r $(TESTS_VENV_REQ))
|
||||
$(PYTHON) python/scripts/mkvenv.py ensuregroup --online $< avocado
|
||||
$(call quiet-command, touch $@)
|
||||
|
||||
$(TESTS_RESULTS_DIR):
|
||||
$(call quiet-command, mkdir -p $@, \
|
||||
MKDIR, $@)
|
||||
|
||||
check-venv: $(TESTS_VENV_DIR)
|
||||
check-venv: $(TESTS_VENV_TOKEN)
|
||||
|
||||
FEDORA_31_ARCHES_TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGETS)))
|
||||
FEDORA_31_ARCHES_CANDIDATES=$(patsubst ppc64,ppc64le,$(FEDORA_31_ARCHES_TARGETS))
|
||||
|
@ -131,7 +128,7 @@ FEDORA_31_DOWNLOAD=$(filter $(FEDORA_31_ARCHES),$(FEDORA_31_ARCHES_CANDIDATES))
|
|||
# download one specific Fedora 31 image
|
||||
get-vm-image-fedora-31-%: check-venv
|
||||
$(call quiet-command, \
|
||||
$(TESTS_PYTHON) -m avocado vmimage get \
|
||||
$(PYTHON) -m avocado vmimage get \
|
||||
--distro=fedora --distro-version=31 --arch=$*, \
|
||||
"AVOCADO", "Downloading avocado tests VM image for $*")
|
||||
|
||||
|
@ -140,7 +137,7 @@ get-vm-images: check-venv $(patsubst %,get-vm-image-fedora-31-%, $(FEDORA_31_DOW
|
|||
|
||||
check-avocado: check-venv $(TESTS_RESULTS_DIR) get-vm-images
|
||||
$(call quiet-command, \
|
||||
$(TESTS_PYTHON) -m avocado \
|
||||
$(PYTHON) -m avocado \
|
||||
--show=$(AVOCADO_SHOW) run --job-results-dir=$(TESTS_RESULTS_DIR) \
|
||||
$(if $(AVOCADO_TAGS),, --filter-by-tags-include-empty \
|
||||
--filter-by-tags-include-empty-key) \
|
||||
|
@ -163,7 +160,7 @@ check:
|
|||
check-build: run-ninja
|
||||
|
||||
check-clean:
|
||||
rm -rf $(TESTS_VENV_DIR) $(TESTS_RESULTS_DIR)
|
||||
rm -rf $(TESTS_RESULTS_DIR)
|
||||
|
||||
clean: check-clean clean-tcg
|
||||
distclean: distclean-tcg
|
||||
|
|
|
@ -133,7 +133,8 @@ RUN /usr/bin/pip3.8 install \
|
|||
meson==0.63.2 \
|
||||
pillow \
|
||||
sphinx \
|
||||
sphinx-rtd-theme
|
||||
sphinx-rtd-theme \
|
||||
tomli
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
|
|
@ -58,7 +58,12 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \
|
|||
libc6-dev-sh4-cross \
|
||||
gcc-sparc64-linux-gnu \
|
||||
libc6-dev-sparc64-cross \
|
||||
python3-venv
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-venv \
|
||||
python3-wheel
|
||||
|
||||
RUN /usr/bin/pip3 install tomli
|
||||
|
||||
ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools
|
||||
ENV DEF_TARGET_LIST aarch64-linux-user,alpha-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sh4-linux-user,sparc64-linux-user
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# $ lcitool dockerfile --layers all --cross x86_64 debian-11 qemu
|
||||
# $ lcitool dockerfile --layers all --cross-arch x86_64 debian-11 qemu
|
||||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
|
@ -47,9 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-wheel \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
|
@ -65,6 +67,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
RUN /usr/bin/pip3 install tomli
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
|
|
|
@ -115,9 +115,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-wheel \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
|
@ -143,6 +145,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
||||
|
||||
RUN /usr/bin/pip3 install tomli
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# $ lcitool dockerfile --layers all --cross aarch64 debian-11 qemu
|
||||
# $ lcitool dockerfile --layers all --cross-arch aarch64 debian-11 qemu
|
||||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
|
@ -47,9 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-wheel \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
|
@ -65,6 +67,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
RUN /usr/bin/pip3 install tomli
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# $ lcitool dockerfile --layers all --cross armv6l debian-11 qemu
|
||||
# $ lcitool dockerfile --layers all --cross-arch armv6l debian-11 qemu
|
||||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
|
@ -47,9 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-wheel \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
|
@ -65,6 +67,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
RUN /usr/bin/pip3 install tomli
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# $ lcitool dockerfile --layers all --cross armv7l debian-11 qemu
|
||||
# $ lcitool dockerfile --layers all --cross-arch armv7l debian-11 qemu
|
||||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
|
@ -47,9 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-wheel \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
|
@ -65,6 +67,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
RUN /usr/bin/pip3 install tomli
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
|
|
|
@ -21,11 +21,15 @@ RUN apt-get update && \
|
|||
flex \
|
||||
git \
|
||||
ninja-build \
|
||||
python3-venv && \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-venv \
|
||||
python3-wheel && \
|
||||
# Install QEMU build deps for use in CI
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt build-dep -yy --arch-only qemu
|
||||
|
||||
RUN /usr/bin/pip3 install tomli
|
||||
|
||||
ENV TOOLCHAIN_INSTALL /opt
|
||||
ENV TOOLCHAIN_RELEASE 16.0.0
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# $ lcitool dockerfile --layers all --cross mips64el debian-11 qemu
|
||||
# $ lcitool dockerfile --layers all --cross-arch mips64el debian-11 qemu
|
||||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
|
@ -47,9 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-wheel \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
|
@ -65,6 +67,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
RUN /usr/bin/pip3 install tomli
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# $ lcitool dockerfile --layers all --cross mipsel debian-11 qemu
|
||||
# $ lcitool dockerfile --layers all --cross-arch mipsel debian-11 qemu
|
||||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
|
@ -47,9 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-wheel \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
|
@ -65,6 +67,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
RUN /usr/bin/pip3 install tomli
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# $ lcitool dockerfile --layers all --cross ppc64le debian-11 qemu
|
||||
# $ lcitool dockerfile --layers all --cross-arch ppc64le debian-11 qemu
|
||||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
|
@ -47,9 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-wheel \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
|
@ -65,6 +67,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
RUN /usr/bin/pip3 install tomli
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# $ lcitool dockerfile --layers all --cross riscv64 debian-sid qemu-minimal
|
||||
# $ lcitool dockerfile --layers all --cross-arch riscv64 debian-sid qemu-minimal
|
||||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# $ lcitool dockerfile --layers all --cross s390x debian-11 qemu
|
||||
# $ lcitool dockerfile --layers all --cross-arch s390x debian-11 qemu
|
||||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
|
@ -47,9 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-wheel \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
|
@ -65,6 +67,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
RUN /usr/bin/pip3 install tomli
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#
|
||||
FROM docker.io/library/debian:buster-slim
|
||||
FROM docker.io/library/debian:11-slim
|
||||
|
||||
MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org>
|
||||
|
||||
|
@ -36,6 +36,8 @@ RUN apt update && \
|
|||
python3-wheel \
|
||||
python3-venv
|
||||
|
||||
RUN /usr/bin/pip3 install tomli
|
||||
|
||||
RUN curl -#SL https://github.com/bkoppelmann/package_940/releases/download/tricore-toolchain-9.40/tricore-toolchain-9.4.0.tar.gz \
|
||||
| tar -xzC /usr/local/
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ ENV PACKAGES \
|
|||
nettle-devel.i686 \
|
||||
pcre-devel.i686 \
|
||||
pixman-devel.i686 \
|
||||
python3-tomli \
|
||||
sysprof-capture-devel.i686 \
|
||||
zlib-devel.i686
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# $ lcitool dockerfile --layers all --cross mingw32 fedora-38 qemu
|
||||
# $ lcitool dockerfile --layers all --cross-arch mingw32 fedora-38 qemu
|
||||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# $ lcitool dockerfile --layers all --cross mingw64 fedora-38 qemu
|
||||
# $ lcitool dockerfile --layers all --cross-arch mingw64 fedora-38 qemu
|
||||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
FROM registry.opensuse.org/opensuse/leap:15.4
|
||||
FROM registry.opensuse.org/opensuse/leap:15.5
|
||||
|
||||
RUN zypper update -y && \
|
||||
zypper install -y \
|
||||
|
@ -90,9 +90,9 @@ RUN zypper update -y && \
|
|||
pcre-devel-static \
|
||||
pipewire-devel \
|
||||
pkgconfig \
|
||||
python39-base \
|
||||
python39-pip \
|
||||
python39-setuptools \
|
||||
python311-base \
|
||||
python311-pip \
|
||||
python311-setuptools \
|
||||
rdma-core-devel \
|
||||
sed \
|
||||
snappy-devel \
|
||||
|
@ -125,18 +125,18 @@ RUN zypper update -y && \
|
|||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
||||
|
||||
RUN /usr/bin/pip3.9 install \
|
||||
PyYAML \
|
||||
meson==0.63.2 \
|
||||
pillow \
|
||||
sphinx \
|
||||
sphinx-rtd-theme
|
||||
RUN /usr/bin/pip3.11 install \
|
||||
PyYAML \
|
||||
meson==0.63.2 \
|
||||
pillow \
|
||||
sphinx \
|
||||
sphinx-rtd-theme
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3.9"
|
||||
ENV PYTHON "/usr/bin/python3.11"
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
|
|
|
@ -141,7 +141,9 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
||||
|
||||
RUN /usr/bin/pip3 install meson==0.63.2
|
||||
RUN /usr/bin/pip3 install \
|
||||
meson==0.63.2 \
|
||||
tomli
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
|
|
@ -117,6 +117,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||
python3-pip \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-tomli \
|
||||
python3-venv \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 9bff3b763b5531a1490e238bfbf77306dc3a6dbb
|
||||
Subproject commit bbd55b4d18cce8f89b5167675e434a6941315634
|
|
@ -9,7 +9,7 @@ mappings:
|
|||
|
||||
python3:
|
||||
CentOSStream8: python38
|
||||
OpenSUSELeap15: python39-base
|
||||
OpenSUSELeap15: python311-base
|
||||
|
||||
python3-PyYAML:
|
||||
CentOSStream8: python38-PyYAML
|
||||
|
@ -17,7 +17,7 @@ mappings:
|
|||
|
||||
python3-devel:
|
||||
CentOSStream8: python38-devel
|
||||
OpenSUSELeap15: python39-devel
|
||||
OpenSUSELeap15: python311-devel
|
||||
|
||||
python3-docutils:
|
||||
CentOSStream8:
|
||||
|
@ -37,7 +37,7 @@ mappings:
|
|||
|
||||
python3-pip:
|
||||
CentOSStream8: python38-pip
|
||||
OpenSUSELeap15: python39-pip
|
||||
OpenSUSELeap15: python311-pip
|
||||
|
||||
python3-pillow:
|
||||
CentOSStream8:
|
||||
|
@ -49,7 +49,7 @@ mappings:
|
|||
|
||||
python3-setuptools:
|
||||
CentOSStream8: python38-setuptools
|
||||
OpenSUSELeap15: python39-setuptools
|
||||
OpenSUSELeap15: python311-setuptools
|
||||
|
||||
python3-sphinx:
|
||||
CentOSStream8:
|
||||
|
@ -59,13 +59,22 @@ mappings:
|
|||
CentOSStream8:
|
||||
OpenSUSELeap15:
|
||||
|
||||
python3-tomli:
|
||||
# test using tomllib
|
||||
apk:
|
||||
Fedora:
|
||||
Debian12:
|
||||
OpenSUSELeap15:
|
||||
# Not available for Python 3.8
|
||||
CentOSStream8:
|
||||
|
||||
python3-venv:
|
||||
CentOSStream8: python38
|
||||
OpenSUSELeap15: python39-base
|
||||
OpenSUSELeap15: python311-base
|
||||
|
||||
python3-wheel:
|
||||
CentOSStream8: python38-wheel
|
||||
OpenSUSELeap15: python39-pip
|
||||
OpenSUSELeap15: python311-pip
|
||||
|
||||
pypi_mappings:
|
||||
# Request more recent version
|
||||
|
@ -75,3 +84,10 @@ pypi_mappings:
|
|||
# Drop packages that need devel headers
|
||||
python3-numpy:
|
||||
OpenSUSELeap15:
|
||||
|
||||
# see above
|
||||
python3-tomli:
|
||||
apk:
|
||||
Fedora:
|
||||
Debian12:
|
||||
OpenSUSELeap15:
|
||||
|
|
|
@ -85,7 +85,7 @@ packages:
|
|||
- pam
|
||||
- pcre-static
|
||||
- pixman
|
||||
- pipewire
|
||||
- libpipewire-dev
|
||||
- pkg-config
|
||||
- pulseaudio
|
||||
- python3
|
||||
|
@ -96,6 +96,7 @@ packages:
|
|||
- python3-pip
|
||||
- python3-sphinx
|
||||
- python3-sphinx-rtd-theme
|
||||
- python3-tomli
|
||||
- python3-venv
|
||||
- rpm2cpio
|
||||
- sdl2
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
paths:
|
||||
pip3: /usr/bin/pip3.9
|
||||
python: /usr/bin/python3.9
|
||||
pip3: /usr/bin/pip3.11
|
||||
python: /usr/bin/python3.11
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
# Add Python module requirements, one per line, to be installed
|
||||
# in the tests/venv Python virtual environment. For more info,
|
||||
# refer to: https://pip.pypa.io/en/stable/user_guide/#id1
|
||||
# Note that qemu.git/python/ is always implicitly installed.
|
||||
avocado-framework==88.1
|
||||
pycdlib==1.11.0
|
|
@ -5,7 +5,7 @@ ifeq ($(realpath $(SRC_PATH)),$(realpath .))
|
|||
VM_PYTHON = PYTHONPATH=$(SRC_PATH)/python /usr/bin/env python3
|
||||
VM_VENV =
|
||||
else
|
||||
VM_PYTHON = $(TESTS_PYTHON)
|
||||
VM_PYTHON = $(PYTHON)
|
||||
VM_VENV = check-venv
|
||||
endif
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
"py39-pip",
|
||||
"py39-sphinx",
|
||||
"py39-sphinx_rtd_theme",
|
||||
"py39-tomli",
|
||||
"py39-yaml",
|
||||
"python3",
|
||||
"rpm2cpio",
|
||||
|
|
Loading…
Reference in New Issue