Merge remote-tracking branch 'remotes/stsquad/tags/pull-testing-next-260919-1' into staging

Testing updates plus alpha FP fixes:

  - fix alpha handling of FtoI overflow
  - various docker cleanups
  - fix docker.py cleanup race
  - fix podman invocation
  - tests/tcg: add float and record/replay tests
  - remove unused docker images
  - expand documentation for check-tcg

# gpg: Signature made Thu 26 Sep 2019 19:33:38 BST
# gpg:                using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44
# gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [full]
# Primary key fingerprint: 6685 AE99 E751 67BC AFC8  DF35 FBD0 DB09 5A9E 2A44

* remotes/stsquad/tags/pull-testing-next-260919-1: (28 commits)
  tests/docker: remove debian-powerpc-user-cross
  docker: move tests from python2 to python3
  docker: remove unused debian-sid
  docker: remove unused debian-ports
  docker: remove 'deprecated' image definitions
  docker: remove unused debian8 partial image
  docker: remove debian8-mxe definitions
  target/i386: Fix broken build with WHPX enabled
  docs/devel: add "check-tcg" to testing.rst
  configure: preserve PKG_CONFIG for subdir builds
  tests/tcg: add simple record/replay smoke test for aarch64
  tests/tcg: add generic version of float_convs
  tests/tcg: add float_madds test to multiarch
  tests/tcg: re-enable linux-test for ppc64abi32
  tests/tcg: clean-up some comments after the de-tangling
  podman: fix command invocation
  tests/docker: reduce scary warnings by cleaning up clean up
  tests/docker: remove python2.7 from debian9-mxe
  tests/docker: fix DOCKER_PARTIAL_IMAGES
  tests/docker: add sanitizers back to clang build
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell
2019-09-27 15:43:41 +01:00
35 changed files with 3711 additions and 238 deletions
+5 -1
View File
@@ -510,7 +510,11 @@ capstone/all: .git-submodule-status
.PHONY: slirp/all
slirp/all: .git-submodule-status
$(call quiet-command,$(MAKE) -C $(SRC_PATH)/slirp BUILD_DIR="$(BUILD_DIR)/slirp" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(QEMU_CFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)")
$(call quiet-command,$(MAKE) -C $(SRC_PATH)/slirp \
BUILD_DIR="$(BUILD_DIR)/slirp" \
PKG_CONFIG="$(PKG_CONFIG)" \
CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" \
CFLAGS="$(QEMU_CFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)")
# Compatibility gunk to keep make working across the rename of targets
# for recursion, to be removed some time after 4.1.
Vendored
+1
View File
@@ -7302,6 +7302,7 @@ echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
echo "RANLIB=$ranlib" >> $config_host_mak
echo "NM=$nm" >> $config_host_mak
echo "PKG_CONFIG=$pkg_config_exe" >> $config_host_mak
echo "WINDRES=$windres" >> $config_host_mak
echo "CFLAGS=$CFLAGS" >> $config_host_mak
echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
+76
View File
@@ -266,6 +266,8 @@ another application on the host may have locked the file, possibly leading to a
test failure. If using such devices are explicitly desired, consider adding
``locking=off`` option to disable image locking.
.. _docker-ref:
Docker based tests
==================
@@ -799,3 +801,77 @@ And remove any package you want with::
If you've used ``make check-acceptance``, the Python virtual environment where
Avocado is installed will be cleaned up as part of ``make check-clean``.
Testing with "make check-tcg"
=============================
The check-tcg tests are intended for simple smoke tests of both
linux-user and softmmu TCG functionality. However to build test
programs for guest targets you need to have cross compilers available.
If your distribution supports cross compilers you can do something as
simple as::
apt install gcc-aarch64-linux-gnu
The configure script will automatically pick up their presence.
Sometimes compilers have slightly odd names so the availability of
them can be prompted by passing in the appropriate configure option
for the architecture in question, for example::
$(configure) --cross-cc-aarch64=aarch64-cc
There is also a ``--cross-cc-flags-ARCH`` flag in case additional
compiler flags are needed to build for a given target.
If you have the ability to run containers as the user you can also
take advantage of the build systems "Docker" support. It will then use
containers to build any test case for an enabled guest where there is
no system compiler available. See :ref: `_docker-ref` for details.
Running subset of tests
-----------------------
You can build the tests for one architecture::
make build-tcg-tests-$TARGET
And run with::
make run-tcg-tests-$TARGET
Adding ``V=1`` to the invocation will show the details of how to
invoke QEMU for the test which is useful for debugging tests.
TCG test dependencies
---------------------
The TCG tests are deliberately very light on dependencies and are
either totally bare with minimal gcc lib support (for softmmu tests)
or just glibc (for linux-user tests). This is because getting a cross
compiler to work with additional libraries can be challenging.
Other TCG Tests
---------------
There are a number of out-of-tree test suites that are used for more
extensive testing of processor features.
KVM Unit Tests
~~~~~~~~~~~~~~
The KVM unit tests are designed to run as a Guest OS under KVM but
there is no reason why they can't exercise the TCG as well. It
provides a minimal OS kernel with hooks for enabling the MMU as well
as reporting test results via a special device::
https://git.kernel.org/pub/scm/virt/kvm/kvm-unit-tests.git
Linux Test Project
~~~~~~~~~~~~~~~~~~
The LTP is focused on exercising the syscall interface of a Linux
kernel. It checks that syscalls behave as documented and strives to
exercise as many corner cases as possible. It is a useful test suite
to run to exercise QEMU's linux-user code::
https://linux-test-project.github.io/
+3 -1
View File
@@ -501,7 +501,9 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
int i, err = 0;
#if defined(TARGET_PPC64)
struct target_sigcontext *sc = 0;
#if !defined(TARGET_ABI32)
struct image_info *image = ((TaskState *)thread_cpu->opaque)->info;
#endif
#endif
rt_sf_addr = get_sigframe(ka, env, sizeof(*rt_sf));
@@ -557,7 +559,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
env->gpr[5] = (target_ulong) h2g(&rt_sf->uc);
env->gpr[6] = (target_ulong) h2g(rt_sf);
#if defined(TARGET_PPC64)
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
if (get_ppc64_abi(image) < 2) {
/* ELFv1 PPC64 function pointers are pointers to OPD entries. */
struct target_func_ptr *handler =
+4 -11
View File
@@ -90,25 +90,18 @@ void helper_fp_exc_raise_s(CPUAlphaState *env, uint32_t ignore, uint32_t regno)
uint32_t exc = env->error_code & ~ignore;
if (exc) {
env->fpcr |= exc;
exc &= ~ignore;
#ifdef CONFIG_USER_ONLY
/*
* In user mode, the kernel's software handler only
* delivers a signal if the exception is enabled.
*/
if (!(exc & env->fpcr_exc_enable)) {
return;
}
#else
exc &= env->fpcr_exc_enable;
/*
* In system mode, the software handler gets invoked
* for any non-ignored exception.
* In user mode, the kernel's software handler only
* delivers a signal if the exception is enabled.
*/
#ifdef CONFIG_USER_ONLY
if (!exc) {
return;
}
#endif
exc &= env->fpcr_exc_enable;
fp_exc_raise1(env, GETPC(), exc, regno, EXC_M_SWC);
}
}
+34 -34
View File
@@ -36,37 +36,18 @@ uint64_t cpu_alpha_load_fpcr(CPUAlphaState *env)
void cpu_alpha_store_fpcr(CPUAlphaState *env, uint64_t val)
{
static const uint8_t rm_map[] = {
[FPCR_DYN_NORMAL >> FPCR_DYN_SHIFT] = float_round_nearest_even,
[FPCR_DYN_CHOPPED >> FPCR_DYN_SHIFT] = float_round_to_zero,
[FPCR_DYN_MINUS >> FPCR_DYN_SHIFT] = float_round_down,
[FPCR_DYN_PLUS >> FPCR_DYN_SHIFT] = float_round_up,
};
uint32_t fpcr = val >> 32;
uint32_t t = 0;
t |= CONVERT_BIT(fpcr, FPCR_INED, FPCR_INE);
t |= CONVERT_BIT(fpcr, FPCR_UNFD, FPCR_UNF);
t |= CONVERT_BIT(fpcr, FPCR_OVFD, FPCR_OVF);
t |= CONVERT_BIT(fpcr, FPCR_DZED, FPCR_DZE);
t |= CONVERT_BIT(fpcr, FPCR_INVD, FPCR_INV);
/* Record the raw value before adjusting for linux-user. */
env->fpcr = fpcr;
env->fpcr_exc_enable = ~t & FPCR_STATUS_MASK;
switch (fpcr & FPCR_DYN_MASK) {
case FPCR_DYN_NORMAL:
default:
t = float_round_nearest_even;
break;
case FPCR_DYN_CHOPPED:
t = float_round_to_zero;
break;
case FPCR_DYN_MINUS:
t = float_round_down;
break;
case FPCR_DYN_PLUS:
t = float_round_up;
break;
}
env->fpcr_dyn_round = t;
env->fpcr_flush_to_zero = (fpcr & FPCR_UNFD) && (fpcr & FPCR_UNDZ);
env->fp_status.flush_inputs_to_zero = (fpcr & FPCR_DNZ) != 0;
#ifdef CONFIG_USER_ONLY
/*
@@ -75,14 +56,33 @@ void cpu_alpha_store_fpcr(CPUAlphaState *env, uint64_t val)
* which point the kernel's handler would emulate and apply
* the software exception mask.
*/
if (env->swcr & SWCR_MAP_DMZ) {
env->fp_status.flush_inputs_to_zero = 1;
}
if (env->swcr & SWCR_MAP_UMZ) {
env->fp_status.flush_to_zero = 1;
}
env->fpcr_exc_enable &= ~(alpha_ieee_swcr_to_fpcr(env->swcr) >> 32);
uint32_t soft_fpcr = alpha_ieee_swcr_to_fpcr(env->swcr) >> 32;
fpcr |= soft_fpcr & (FPCR_STATUS_MASK | FPCR_DNZ);
/*
* The IOV exception is disabled by the kernel with SWCR_TRAP_ENABLE_INV,
* which got mapped by alpha_ieee_swcr_to_fpcr to FPCR_INVD.
* Add FPCR_IOV to fpcr_exc_enable so that it is handled identically.
*/
t |= CONVERT_BIT(soft_fpcr, FPCR_INVD, FPCR_IOV);
#endif
t |= CONVERT_BIT(fpcr, FPCR_INED, FPCR_INE);
t |= CONVERT_BIT(fpcr, FPCR_UNFD, FPCR_UNF);
t |= CONVERT_BIT(fpcr, FPCR_OVFD, FPCR_OVF);
t |= CONVERT_BIT(fpcr, FPCR_DZED, FPCR_DZE);
t |= CONVERT_BIT(fpcr, FPCR_INVD, FPCR_INV);
env->fpcr_exc_enable = ~t & FPCR_STATUS_MASK;
env->fpcr_dyn_round = rm_map[(fpcr & FPCR_DYN_MASK) >> FPCR_DYN_SHIFT];
env->fp_status.flush_inputs_to_zero = (fpcr & FPCR_DNZ) != 0;
t = (fpcr & FPCR_UNFD) && (fpcr & FPCR_UNDZ);
#ifdef CONFIG_USER_ONLY
t |= (env->swcr & SWCR_MAP_UMZ) != 0;
#endif
env->fpcr_flush_to_zero = t;
}
uint64_t helper_load_fpcr(CPUAlphaState *env)
+1
View File
@@ -18,6 +18,7 @@
#include "sysemu/cpus.h"
#include "sysemu/runstate.h"
#include "qemu/main-loop.h"
#include "hw/boards.h"
#include "qemu/error-report.h"
#include "qapi/error.h"
#include "migration/blocker.h"
+4 -14
View File
@@ -4,11 +4,10 @@
DOCKER_SUFFIX := .docker
DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles
DOCKER_DEPRECATED_IMAGES := debian
# we don't run tests on intermediate images (used as base by another image)
DOCKER_PARTIAL_IMAGES := debian debian8 debian9 debian10 debian-sid
DEBIAN_PARTIAL_IMAGES += debian8-mxe debian-9-mxe debian-ports debian-bootstrap
DOCKER_IMAGES := $(filter-out $(DOCKER_DEPRECATED_IMAGES),$(sort $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker)))))
DOCKER_PARTIAL_IMAGES := debian9 debian10
DOCKER_PARTIAL_IMAGES += debian9-mxe debian-bootstrap
DOCKER_IMAGES := $(sort $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker))))
DOCKER_TARGETS := $(patsubst %,docker-image-%,$(DOCKER_IMAGES))
# Use a global constant ccache directory to speed up repetitive builds
DOCKER_CCACHE_DIR := $$HOME/.cache/qemu-docker-ccache
@@ -148,17 +147,8 @@ DOCKER_PARTIAL_IMAGES += fedora-i386-cross fedora-cris-cross
# work around issues with poorly working multi-arch systems and broken
# packages.
# Jessie is the last supported release for powerpc, but multi-arch is
# broken so we need a qemu-linux-user for this target
docker-binfmt-image-debian-powerpc-user: DEB_ARCH = powerpc
docker-binfmt-image-debian-powerpc-user: DEB_TYPE = jessie
docker-binfmt-image-debian-powerpc-user: DEB_URL = http://snapshot.debian.org/archive/debian/20180615T211437Z
docker-binfmt-image-debian-powerpc-user: EXECUTABLE = ${BUILD_DIR}/ppc-linux-user/qemu-ppc
docker-image-debian-powerpc-user-cross: docker-binfmt-image-debian-powerpc-user
DOCKER_USER_IMAGES += debian-powerpc-user
# Expand all the pre-requistes for each docker image and test combination
$(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES),$(DOCKER_IMAGES) $(DOCKER_DEPRECATED_IMAGES)), \
$(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES),$(DOCKER_IMAGES)), \
$(foreach t,$(DOCKER_TESTS) $(DOCKER_TOOLS), \
$(eval .PHONY: docker-$t@$i) \
$(eval docker-$t@$i: docker-image-$i docker-run-$t@$i) \
+17 -19
View File
@@ -215,7 +215,7 @@ class Docker(object):
""" Running Docker commands """
def __init__(self):
self._command = _guess_engine_command()
self._instances = []
self._instance = None
atexit.register(self._kill_instances)
signal.signal(signal.SIGTERM, self._kill_instances)
signal.signal(signal.SIGHUP, self._kill_instances)
@@ -234,21 +234,19 @@ class Docker(object):
cmd = ["ps", "-q"]
if not only_active:
cmd.append("-a")
filter = "--filter=label=com.qemu.instance.uuid"
if only_known:
if self._instance:
filter += "=%s" % (self._instance)
else:
# no point trying to kill, we finished
return
print("filter=%s" % (filter))
cmd.append(filter)
for i in self._output(cmd).split():
resp = self._output(["inspect", i])
labels = json.loads(resp)[0]["Config"]["Labels"]
active = json.loads(resp)[0]["State"]["Running"]
if not labels:
continue
instance_uuid = labels.get("com.qemu.instance.uuid", None)
if not instance_uuid:
continue
if only_known and instance_uuid not in self._instances:
continue
print("Terminating", i)
if active:
self._do(["kill", i])
self._do(["rm", i])
self._do(["rm", "-f", i])
def clean(self):
self._do_kill_instances(False, False)
@@ -325,22 +323,22 @@ class Docker(object):
return checksum == _text_checksum(_dockerfile_preprocess(dockerfile))
def run(self, cmd, keep, quiet, as_user=False):
label = uuid.uuid1().hex
label = uuid.uuid4().hex
if not keep:
self._instances.append(label)
self._instance = label
if as_user:
uid = os.getuid()
cmd = [ "-u", str(uid) ] + cmd
# podman requires a bit more fiddling
if self._command[0] == "podman":
argv.insert(0, '--userns=keep-id')
cmd.insert(0, '--userns=keep-id')
ret = self._do_check(["run", "--label",
"com.qemu.instance.uuid=" + label] + cmd,
quiet=quiet)
if not keep:
self._instances.remove(label)
self._instance = None
return ret
def command(self, cmd, argv, quiet):
+1 -1
View File
@@ -25,6 +25,7 @@ ENV PACKAGES \
nettle-devel \
perl-Test-Harness \
pixman-devel \
python3 \
SDL-devel \
spice-glib-devel \
spice-server-devel \
@@ -34,4 +35,3 @@ ENV PACKAGES \
zlib-devel
RUN yum install -y $PACKAGES
RUN rpm -q $PACKAGES | sort > /packages.txt
@@ -1,36 +0,0 @@
#
# Docker multiarch cross-compiler target
#
# This docker target is builds on Debian Ports cross compiler targets
# to build distro with a selection of cross compilers for building test binaries.
#
# On its own you can't build much but the docker-foo-cross targets
# build on top of the base debian image.
#
FROM debian:unstable
MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org>
RUN echo "deb [arch=amd64] http://deb.debian.org/debian unstable main" > /etc/apt/sources.list
# Duplicate deb line as deb-src
RUN cat /etc/apt/sources.list | sed -ne "s/^deb\ \(\[.*\]\ \)\?\(.*\)/deb-src \2/p" >> /etc/apt/sources.list
# Setup some basic tools we need
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \
DEBIAN_FRONTEND=noninteractive eatmydata \
apt-get install -y --no-install-recommends \
bison \
build-essential \
ca-certificates \
clang \
debian-ports-archive-keyring \
flex \
gettext \
git \
pkg-config \
psmisc \
python \
texinfo \
$(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2)
@@ -1,21 +0,0 @@
#
# Docker powerpc cross-compiler target for QEMU
#
# We can't use current Debian stable cross-compilers to build powerpc
# as it has been dropped as a release architecture. Using Debian Sid
# is just far too sketchy a build environment. This leaves us the
# final option of using linux-user. This image is based of the
# debootstrapped qemu:debian-powerpc-user but doesn't need any extra
# magic once it is setup.
#
# It can be used to build old versions of QEMU, current versions need
# newer dependencies than Jessie provides.
#
FROM qemu:debian-powerpc-user
RUN echo man-db man-db/auto-update boolean false | debconf-set-selections
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get build-dep -yy qemu
ENV QEMU_CONFIGURE_OPTS --disable-werror
ENV DEF_TARGET_LIST powerpc-softmmu,arm-linux-user,aarch64-linux-user
@@ -1,35 +0,0 @@
#
# Debian Sid Base
#
# Currently we can build all our guests with cross-compilers in the
# latest Debian release (Buster). However new compilers will first
# arrive in Sid. However Sid is a rolling distro which may be broken
# at any particular time. To try and mitigate this we use Debian's
# snapshot archive which provides a "stable" view of what state Sid
# was in.
#
# This must be earlier than the snapshot date we are aiming for
FROM debian:sid-20190812-slim
# Use a snapshot known to work (see http://snapshot.debian.org/#Usage)
ENV DEBIAN_SNAPSHOT_DATE "20190820"
RUN sed -i "s%^deb \(https\?://\)deb.debian.org/debian/\? \(.*\)%deb [check-valid-until=no] \1snapshot.debian.org/archive/debian/${DEBIAN_SNAPSHOT_DATE} \2%" /etc/apt/sources.list
# Duplicate deb line as deb-src
RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list
# Install common build utilities
RUN apt update && \
DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \
DEBIAN_FRONTEND=noninteractive eatmydata \
apt install -y --no-install-recommends \
bison \
build-essential \
ca-certificates \
flex \
git \
pkg-config \
psmisc \
python \
texinfo || { echo "Failed to build - see debian-sid.docker notes"; exit 1; }
@@ -18,7 +18,7 @@ RUN apt-get update && \
flex \
gettext \
git \
python-minimal
python3-minimal
ENV CPU_LIST csp dc232b dc233c
ENV TOOLCHAIN_RELEASE 2018.02
+1 -1
View File
@@ -26,7 +26,7 @@ RUN apt update && \
git \
pkg-config \
psmisc \
python \
python3 \
python3-sphinx \
texinfo \
$(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2)
-34
View File
@@ -1,34 +0,0 @@
#
# Docker multiarch cross-compiler target
#
# This docker target is builds on Debian and Emdebian's cross compiler targets
# to build distro with a selection of cross compilers for building test binaries.
#
# On its own you can't build much but the docker-foo-cross targets
# build on top of the base debian image.
#
FROM debian:jessie-slim
MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org>
# Duplicate deb line as deb-src
RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list
# Setup some basic tools we need
RUN apt update && \
DEBIAN_FRONTEND=noninteractive apt-get install -yy eatmydata && \
DEBIAN_FRONTEND=noninteractive eatmydata \
apt-get install -y --no-install-recommends \
bison \
binutils-multiarch \
build-essential \
ca-certificates \
clang \
curl \
flex \
gettext \
git \
gnupg \
pkg-config \
python-minimal
+1 -2
View File
@@ -16,7 +16,6 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C6BF758A33A3A276 &&
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive eatmydata \
apt-get install -y --no-install-recommends \
libpython2.7-stdlib \
$(apt-get -s install -y --no-install-recommends gw32.shared-mingw-w64 | egrep "^Inst mxe-x86-64-unknown-" | cut -d\ -f2)
ENV PATH $PATH:/usr/lib/mxe/usr/bin/
ENV PATH $PATH:/usr/lib/mxe/usr/bin/
+1 -1
View File
@@ -26,7 +26,7 @@ RUN apt update && \
git \
pkg-config \
psmisc \
python \
python3 \
python3-sphinx \
texinfo \
$(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2)
+1 -1
View File
@@ -5,7 +5,7 @@ ENV LC_ALL en_US.UTF-8
RUN sed -i "s/# deb-src/deb-src/" /etc/apt/sources.list
RUN apt-get update
RUN apt-get -y build-dep qemu
RUN apt-get -y install device-tree-compiler python2.7 python-yaml dh-autoreconf gdb strace lsof net-tools gcovr
RUN apt-get -y install device-tree-compiler python3 python3-yaml dh-autoreconf gdb strace lsof net-tools gcovr
# Travis tools require PhantomJS / Neo4j / Maven accessible
# in their PATH (QEMU build won't access them).
ENV PATH /usr/local/phantomjs/bin:/usr/local/phantomjs:/usr/local/neo4j-3.2.7/bin:/usr/local/maven-3.5.2/bin:/usr/local/cmake-3.9.2/bin:/usr/local/clang-5.0.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+1 -1
View File
@@ -60,7 +60,7 @@ ENV PACKAGES flex bison \
libvte-2.91-dev \
libxen-dev \
make \
python-yaml \
python3-yaml \
python3-sphinx \
sparse \
texinfo \

Some files were not shown because too many files have changed in this diff Show More