mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
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:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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/
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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,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
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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/
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user