* Fix and test the VISTR instruction on s390x

* Some more small s390x fixes and maintainer updates
 * Make sure to remove all temporary files from qtests
 * OpenBSD VM test update to version 7.2
 * Add sndio to FreeBSD tests
 * More patches to enable the qtests on Windows
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmNb1x8RHHRodXRoQHJl
 ZGhhdC5jb20ACgkQLtnXdP5wLbXmcA//TCliiFkhprVxzIqy7zb9uz2Odu+sS4dT
 azUSlXvC14fECm/Rb/rd2VLqCu5x2er8CYauxKQ4VhRImzcDta4kvpt/HKIppN2t
 sqw5tipJL0DYcWBwYL1llvfutM26M+Oh0igwR8uV7b+W1FjojEZdcOr9IZ6E6V55
 wQCE5OHm0VCr61QeI5IBfZTsiPo+DFomUCpj7w66j6i0CVDvmpoe36tCmvGgrcpZ
 SP7ep7/Iq+dnGh2YnJyoUOPlXeeiBCxAygOVnIRXptDeniGoliCFn7ksLdKDQ9qY
 69pSPR/W7mTZB/HkCRalAbYuYrI9Rcqxdu6c9vcyB8Pr0snQLTf8qThY+BJ2oC4w
 JSGgWVniAk5MmrDazwNRkSbgngYLYf+CcT1h5AANuU5Kt50Bdy9Y3TuL5YVmofEp
 N4bypV0ICImQyDECz76+i5/iJOcWiRyjMfLT6y00dspeuy983xHakrsHGD8xj0U/
 3IVxnF9bDnUSVg6lFhYrgCB3dRG1TNPJoYQOM7raS5MAPRrDtIuSabwtyn84jo4+
 9kZRPJBriMBHNsCjGVlJ9CATmaK1SKVAbRcabjgOKoIwhZTpAe6JalykREUJlTys
 hB2V//lWWYPaSpzwY+OkvxoOmJIziixEskOmx6hPcoxID5v/bqlR69W15aUlKuLq
 VWFb+/yMvaE=
 =h0Ep
 -----END PGP SIGNATURE-----

Merge tag 'pull-request-2022-10-28' of https://gitlab.com/thuth/qemu into staging

* Fix and test the VISTR instruction on s390x
* Some more small s390x fixes and maintainer updates
* Make sure to remove all temporary files from qtests
* OpenBSD VM test update to version 7.2
* Add sndio to FreeBSD tests
* More patches to enable the qtests on Windows

# -----BEGIN PGP SIGNATURE-----
#
# iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmNb1x8RHHRodXRoQHJl
# ZGhhdC5jb20ACgkQLtnXdP5wLbXmcA//TCliiFkhprVxzIqy7zb9uz2Odu+sS4dT
# azUSlXvC14fECm/Rb/rd2VLqCu5x2er8CYauxKQ4VhRImzcDta4kvpt/HKIppN2t
# sqw5tipJL0DYcWBwYL1llvfutM26M+Oh0igwR8uV7b+W1FjojEZdcOr9IZ6E6V55
# wQCE5OHm0VCr61QeI5IBfZTsiPo+DFomUCpj7w66j6i0CVDvmpoe36tCmvGgrcpZ
# SP7ep7/Iq+dnGh2YnJyoUOPlXeeiBCxAygOVnIRXptDeniGoliCFn7ksLdKDQ9qY
# 69pSPR/W7mTZB/HkCRalAbYuYrI9Rcqxdu6c9vcyB8Pr0snQLTf8qThY+BJ2oC4w
# JSGgWVniAk5MmrDazwNRkSbgngYLYf+CcT1h5AANuU5Kt50Bdy9Y3TuL5YVmofEp
# N4bypV0ICImQyDECz76+i5/iJOcWiRyjMfLT6y00dspeuy983xHakrsHGD8xj0U/
# 3IVxnF9bDnUSVg6lFhYrgCB3dRG1TNPJoYQOM7raS5MAPRrDtIuSabwtyn84jo4+
# 9kZRPJBriMBHNsCjGVlJ9CATmaK1SKVAbRcabjgOKoIwhZTpAe6JalykREUJlTys
# hB2V//lWWYPaSpzwY+OkvxoOmJIziixEskOmx6hPcoxID5v/bqlR69W15aUlKuLq
# VWFb+/yMvaE=
# =h0Ep
# -----END PGP SIGNATURE-----
# gpg: Signature made Fri 28 Oct 2022 09:20:31 EDT
# gpg:                using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5
# gpg:                issuer "thuth@redhat.com"
# gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full]
# gpg:                 aka "Thomas Huth <thuth@redhat.com>" [full]
# gpg:                 aka "Thomas Huth <huth@tuxfamily.org>" [full]
# gpg:                 aka "Thomas Huth <th.huth@posteo.de>" [unknown]
# Primary key fingerprint: 27B8 8847 EEE0 2501 18F3  EAB9 2ED9 D774 FE70 2DB5

* tag 'pull-request-2022-10-28' of https://gitlab.com/thuth/qemu: (21 commits)
  tests/qtest: libqtest: Correct the timeout unit of blocking receive calls for win32
  tests/qtest: libqos: Do not build virtio-9p unconditionally
  tests/qtest: migration-test: Make sure QEMU process "to" exited after migration is canceled
  tests/qtest: libqtest: Introduce qtest_wait_qemu()
  tests/qtest: Use EXIT_FAILURE instead of magic number
  tests/qtest: device-plug-test: Reverse the usage of double/single quotes
  tests/qtest: Support libqtest to build and run on Windows
  tests/qtest: Use send/recv for socket communication
  accel/qtest: Support qtest accelerator for Windows
  tests: Add sndio to the FreeBSD CI containers / VM
  tests/vm: update openbsd to release 7.2
  tests/qtest/libqos/e1000e: Use e1000_regs.h
  tests/qtest/cxl-test: Remove temporary directories after testing
  tests/qtest/tpm: Clean up remainders of swtpm
  MAINTAINERS: target/s390x/: add Ilya as reviewer
  tests/tcg/s390x: Add a test for the vistr instruction
  target/s390x: Fix emulation of the VISTR instruction
  tests/tcg/s390x: Test compiler flags only once, not every time
  s390x/tod-kvm: don't save/restore the TOD in PV guests
  s390x: step down as general arch maintainer
  ...

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2022-10-31 06:19:53 -04:00
commit 395a90be6f
48 changed files with 1667 additions and 1417 deletions

View File

@ -11,6 +11,6 @@ MAKE='/usr/local/bin/gmake'
NINJA='/usr/local/bin/ninja' NINJA='/usr/local/bin/ninja'
PACKAGING_COMMAND='pkg' PACKAGING_COMMAND='pkg'
PIP3='/usr/local/bin/pip-3.8' PIP3='/usr/local/bin/pip-3.8'
PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage 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 ncurses nettle ninja opencv perl5 pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy spice-protocol tesseract texinfo usbredir virglrenderer vte3 zstd' PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage 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 ncurses nettle ninja opencv perl5 pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy sndio spice-protocol tesseract texinfo usbredir virglrenderer vte3 zstd'
PYPI_PKGS='' PYPI_PKGS=''
PYTHON='/usr/local/bin/python3' PYTHON='/usr/local/bin/python3'

View File

@ -11,6 +11,6 @@ MAKE='/usr/local/bin/gmake'
NINJA='/usr/local/bin/ninja' NINJA='/usr/local/bin/ninja'
PACKAGING_COMMAND='pkg' PACKAGING_COMMAND='pkg'
PIP3='/usr/local/bin/pip-3.8' PIP3='/usr/local/bin/pip-3.8'
PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage 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 ncurses nettle ninja opencv perl5 pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy spice-protocol tesseract texinfo usbredir virglrenderer vte3 zstd' PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage 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 ncurses nettle ninja opencv perl5 pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy sndio spice-protocol tesseract texinfo usbredir virglrenderer vte3 zstd'
PYPI_PKGS='' PYPI_PKGS=''
PYTHON='/usr/local/bin/python3' PYTHON='/usr/local/bin/python3'

View File

@ -84,7 +84,6 @@ T: git https://github.com/vivier/qemu.git trivial-patches
Architecture support Architecture support
-------------------- --------------------
S390 general architecture support S390 general architecture support
M: Cornelia Huck <cohuck@redhat.com>
M: Thomas Huth <thuth@redhat.com> M: Thomas Huth <thuth@redhat.com>
S: Supported S: Supported
F: configs/devices/s390x-softmmu/default.mak F: configs/devices/s390x-softmmu/default.mak
@ -106,7 +105,6 @@ F: docs/system/target-s390x.rst
F: docs/system/s390x/ F: docs/system/s390x/
F: tests/migration/s390x/ F: tests/migration/s390x/
K: ^Subject:.*(?i)s390x? K: ^Subject:.*(?i)s390x?
T: git https://gitlab.com/cohuck/qemu.git s390-next
L: qemu-s390x@nongnu.org L: qemu-s390x@nongnu.org
MIPS general architecture support MIPS general architecture support
@ -305,6 +303,7 @@ F: target/rx/
S390 TCG CPUs S390 TCG CPUs
M: Richard Henderson <richard.henderson@linaro.org> M: Richard Henderson <richard.henderson@linaro.org>
M: David Hildenbrand <david@redhat.com> M: David Hildenbrand <david@redhat.com>
R: Ilya Leoshkevich <iii@linux.ibm.com>
S: Maintained S: Maintained
F: target/s390x/ F: target/s390x/
F: target/s390x/tcg F: target/s390x/tcg

View File

@ -21,8 +21,6 @@
static void *dummy_cpu_thread_fn(void *arg) static void *dummy_cpu_thread_fn(void *arg)
{ {
CPUState *cpu = arg; CPUState *cpu = arg;
sigset_t waitset;
int r;
rcu_register_thread(); rcu_register_thread();
@ -32,8 +30,13 @@ static void *dummy_cpu_thread_fn(void *arg)
cpu->can_do_io = 1; cpu->can_do_io = 1;
current_cpu = cpu; current_cpu = cpu;
#ifndef _WIN32
sigset_t waitset;
int r;
sigemptyset(&waitset); sigemptyset(&waitset);
sigaddset(&waitset, SIG_IPI); sigaddset(&waitset, SIG_IPI);
#endif
/* signal CPU creation */ /* signal CPU creation */
cpu_thread_signal_created(cpu); cpu_thread_signal_created(cpu);
@ -41,6 +44,7 @@ static void *dummy_cpu_thread_fn(void *arg)
do { do {
qemu_mutex_unlock_iothread(); qemu_mutex_unlock_iothread();
#ifndef _WIN32
do { do {
int sig; int sig;
r = sigwait(&waitset, &sig); r = sigwait(&waitset, &sig);
@ -49,6 +53,9 @@ static void *dummy_cpu_thread_fn(void *arg)
perror("sigwait"); perror("sigwait");
exit(1); exit(1);
} }
#else
qemu_sem_wait(&cpu->sem);
#endif
qemu_mutex_lock_iothread(); qemu_mutex_lock_iothread();
qemu_wait_io_event(cpu); qemu_wait_io_event(cpu);
} while (!cpu->unplug); } while (!cpu->unplug);
@ -69,4 +76,7 @@ void dummy_start_vcpu_thread(CPUState *cpu)
cpu->cpu_index); cpu->cpu_index);
qemu_thread_create(cpu->thread, thread_name, dummy_cpu_thread_fn, cpu, qemu_thread_create(cpu->thread, thread_name, dummy_cpu_thread_fn, cpu,
QEMU_THREAD_JOINABLE); QEMU_THREAD_JOINABLE);
#ifdef _WIN32
qemu_sem_init(&cpu->sem, 0);
#endif
} }

View File

@ -16,5 +16,5 @@ dummy_ss.add(files(
'dummy-cpus.c', 'dummy-cpus.c',
)) ))
specific_ss.add_all(when: ['CONFIG_SOFTMMU', 'CONFIG_POSIX'], if_true: dummy_ss) specific_ss.add_all(when: ['CONFIG_SOFTMMU'], if_true: dummy_ss)
specific_ss.add_all(when: ['CONFIG_XEN'], if_true: dummy_ss) specific_ss.add_all(when: ['CONFIG_XEN'], if_true: dummy_ss)

View File

@ -1,2 +1 @@
qtest_module_ss.add(when: ['CONFIG_SOFTMMU', 'CONFIG_POSIX'], qtest_module_ss.add(when: ['CONFIG_SOFTMMU'], if_true: files('qtest.c'))
if_true: files('qtest.c'))

View File

@ -793,6 +793,7 @@
#define E1000_CTRL_EXT_ASDCHK 0x00001000 /* auto speed detection check */ #define E1000_CTRL_EXT_ASDCHK 0x00001000 /* auto speed detection check */
#define E1000_CTRL_EXT_EE_RST 0x00002000 /* EEPROM reset */ #define E1000_CTRL_EXT_EE_RST 0x00002000 /* EEPROM reset */
#define E1000_CTRL_EXT_LINK_EN 0x00010000 /* enable link status from external LINK_0 and LINK_1 pins */ #define E1000_CTRL_EXT_LINK_EN 0x00010000 /* enable link status from external LINK_0 and LINK_1 pins */
#define E1000_CTRL_EXT_DRV_LOAD 0x10000000 /* Driver loaded bit for FW */
#define E1000_CTRL_EXT_EIAME 0x01000000 #define E1000_CTRL_EXT_EIAME 0x01000000
#define E1000_CTRL_EXT_IAME 0x08000000 /* Int ACK Auto-mask */ #define E1000_CTRL_EXT_IAME 0x08000000 /* Int ACK Auto-mask */
#define E1000_CTRL_EXT_PBA_CLR 0x80000000 /* PBA Clear */ #define E1000_CTRL_EXT_PBA_CLR 0x80000000 /* PBA Clear */

View File

@ -50,7 +50,7 @@ static int __s390_pv_cmd(uint32_t cmd, const char *cmdname, void *data)
* This macro lets us pass the command as a string to the function so * This macro lets us pass the command as a string to the function so
* we can print it on an error. * we can print it on an error.
*/ */
#define s390_pv_cmd(cmd, data) __s390_pv_cmd(cmd, #cmd, data); #define s390_pv_cmd(cmd, data) __s390_pv_cmd(cmd, #cmd, data)
#define s390_pv_cmd_exit(cmd, data) \ #define s390_pv_cmd_exit(cmd, data) \
{ \ { \
int rc; \ int rc; \

View File

@ -13,6 +13,7 @@
#include "qemu/module.h" #include "qemu/module.h"
#include "sysemu/runstate.h" #include "sysemu/runstate.h"
#include "hw/s390x/tod.h" #include "hw/s390x/tod.h"
#include "hw/s390x/pv.h"
#include "kvm/kvm_s390x.h" #include "kvm/kvm_s390x.h"
static void kvm_s390_get_tod_raw(S390TOD *tod, Error **errp) static void kvm_s390_get_tod_raw(S390TOD *tod, Error **errp)
@ -84,6 +85,14 @@ static void kvm_s390_tod_vm_state_change(void *opaque, bool running,
S390TODState *td = opaque; S390TODState *td = opaque;
Error *local_err = NULL; Error *local_err = NULL;
/*
* Under PV, the clock is under ultravisor control, hence we cannot restore
* it on resume.
*/
if (s390_is_pv()) {
return;
}
if (running && td->stopped) { if (running && td->stopped) {
/* Set the old TOD when running the VM - start the TOD clock. */ /* Set the old TOD when running the VM - start the TOD clock. */
kvm_s390_set_tod_raw(&td->base, &local_err); kvm_s390_set_tod_raw(&td->base, &local_err);

View File

@ -333,6 +333,7 @@ struct CPUState {
struct QemuThread *thread; struct QemuThread *thread;
#ifdef _WIN32 #ifdef _WIN32
HANDLE hThread; HANDLE hThread;
QemuSemaphore sem;
#endif #endif
int thread_id; int thread_id;
bool running, has_waiter; bool running, has_waiter;

View File

@ -33,6 +33,19 @@ int qemu_socketpair(int domain, int type, int protocol, int sv[2]);
#endif #endif
int qemu_accept(int s, struct sockaddr *addr, socklen_t *addrlen); int qemu_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
/*
* A variant of send(2) which handles partial send.
*
* Return the number of bytes transferred over the socket.
* Set errno if fewer than `count' bytes are sent.
*
* This function don't work with non-blocking socket's.
* Any of the possibilities with non-blocking socket's is bad:
* - return a short write (then name is wrong)
* - busy wait adding (errno == EAGAIN) to the loop
*/
ssize_t qemu_send_full(int s, const void *buf, size_t count)
G_GNUC_WARN_UNUSED_RESULT;
int socket_set_cork(int fd, int v); int socket_set_cork(int fd, int v);
int socket_set_nodelay(int fd); int socket_set_nodelay(int fd);
void qemu_socket_set_block(int fd); void qemu_socket_set_block(int fd);

View File

@ -437,18 +437,19 @@ void qemu_wait_io_event(CPUState *cpu)
void cpus_kick_thread(CPUState *cpu) void cpus_kick_thread(CPUState *cpu)
{ {
#ifndef _WIN32
int err;
if (cpu->thread_kicked) { if (cpu->thread_kicked) {
return; return;
} }
cpu->thread_kicked = true; cpu->thread_kicked = true;
err = pthread_kill(cpu->thread->thread, SIG_IPI);
#ifndef _WIN32
int err = pthread_kill(cpu->thread->thread, SIG_IPI);
if (err && err != ESRCH) { if (err && err != ESRCH) {
fprintf(stderr, "qemu:%s: %s", __func__, strerror(err)); fprintf(stderr, "qemu:%s: %s", __func__, strerror(err));
exit(1); exit(1);
} }
#else
qemu_sem_post(&cpu->sem);
#endif #endif
} }

View File

@ -2723,7 +2723,7 @@ static DisasJumpType op_vfene(DisasContext *s, DisasOps *o)
static DisasJumpType op_vistr(DisasContext *s, DisasOps *o) static DisasJumpType op_vistr(DisasContext *s, DisasOps *o)
{ {
const uint8_t es = get_field(s, m4); const uint8_t es = get_field(s, m3);
const uint8_t m5 = get_field(s, m5); const uint8_t m5 = get_field(s, m5);
static gen_helper_gvec_2 * const g[3] = { static gen_helper_gvec_2 * const g[3] = {
gen_helper_gvec_vistr8, gen_helper_gvec_vistr8,

View File

@ -94,6 +94,7 @@ RUN apk update && \
sdl2_image-dev \ sdl2_image-dev \
sed \ sed \
snappy-dev \ snappy-dev \
sndio-dev \
sparse \ sparse \
spice-dev \ spice-dev \
spice-protocol \ spice-protocol \
@ -119,8 +120,8 @@ RUN apk update && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"

View File

@ -130,8 +130,8 @@ RUN dnf distro-sync -y && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"

View File

@ -11,62 +11,63 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get install -y eatmydata && \ apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
bash \ bash \
bc \ bc \
bison \ bison \
bsdextrautils \ bsdextrautils \
bzip2 \ bzip2 \
ca-certificates \ ca-certificates \
ccache \ ccache \
dbus \ dbus \
debianutils \ debianutils \
diffutils \ diffutils \
exuberant-ctags \ exuberant-ctags \
findutils \ findutils \
flex \ flex \
gcovr \ gcovr \
genisoimage \ genisoimage \
gettext \ gettext \
git \ git \
hostname \ hostname \
libglib2.0-dev \ libglib2.0-dev \
libpcre2-dev \ libpcre2-dev \
libspice-protocol-dev \ libsndio-dev \
llvm \ libspice-protocol-dev \
locales \ llvm \
make \ locales \
meson \ make \
ncat \ meson \
ninja-build \ ncat \
openssh-client \ ninja-build \
perl-base \ openssh-client \
pkgconf \ perl-base \
python3 \ pkgconf \
python3-numpy \ python3 \
python3-opencv \ python3-numpy \
python3-pillow \ python3-opencv \
python3-pip \ python3-pillow \
python3-sphinx \ python3-pip \
python3-sphinx-rtd-theme \ python3-sphinx \
python3-venv \ python3-sphinx-rtd-theme \
python3-yaml \ python3-venv \
rpm2cpio \ python3-yaml \
sed \ rpm2cpio \
sparse \ sed \
tar \ sparse \
tesseract-ocr \ tar \
tesseract-ocr-eng \ tesseract-ocr \
texinfo && \ tesseract-ocr-eng \
texinfo && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales dpkg-reconfigure locales
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
RUN export DEBIAN_FRONTEND=noninteractive && \ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture amd64 && \ dpkg --add-architecture amd64 && \
@ -74,76 +75,76 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \ eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
g++-x86-64-linux-gnu \ g++-x86-64-linux-gnu \
gcc-x86-64-linux-gnu \ gcc-x86-64-linux-gnu \
libaio-dev:amd64 \ libaio-dev:amd64 \
libasan5:amd64 \ libasan5:amd64 \
libasound2-dev:amd64 \ libasound2-dev:amd64 \
libattr1-dev:amd64 \ libattr1-dev:amd64 \
libbpf-dev:amd64 \ libbpf-dev:amd64 \
libbrlapi-dev:amd64 \ libbrlapi-dev:amd64 \
libbz2-dev:amd64 \ libbz2-dev:amd64 \
libc6-dev:amd64 \ libc6-dev:amd64 \
libcacard-dev:amd64 \ libcacard-dev:amd64 \
libcap-ng-dev:amd64 \ libcap-ng-dev:amd64 \
libcapstone-dev:amd64 \ libcapstone-dev:amd64 \
libcmocka-dev:amd64 \ libcmocka-dev:amd64 \
libcurl4-gnutls-dev:amd64 \ libcurl4-gnutls-dev:amd64 \
libdaxctl-dev:amd64 \ libdaxctl-dev:amd64 \
libdrm-dev:amd64 \ libdrm-dev:amd64 \
libepoxy-dev:amd64 \ libepoxy-dev:amd64 \
libfdt-dev:amd64 \ libfdt-dev:amd64 \
libffi-dev:amd64 \ libffi-dev:amd64 \
libfuse3-dev:amd64 \ libfuse3-dev:amd64 \
libgbm-dev:amd64 \ libgbm-dev:amd64 \
libgcrypt20-dev:amd64 \ libgcrypt20-dev:amd64 \
libglib2.0-dev:amd64 \ libglib2.0-dev:amd64 \
libglusterfs-dev:amd64 \ libglusterfs-dev:amd64 \
libgnutls28-dev:amd64 \ libgnutls28-dev:amd64 \
libgtk-3-dev:amd64 \ libgtk-3-dev:amd64 \
libibumad-dev:amd64 \ libibumad-dev:amd64 \
libibverbs-dev:amd64 \ libibverbs-dev:amd64 \
libiscsi-dev:amd64 \ libiscsi-dev:amd64 \
libjemalloc-dev:amd64 \ libjemalloc-dev:amd64 \
libjpeg62-turbo-dev:amd64 \ libjpeg62-turbo-dev:amd64 \
libjson-c-dev:amd64 \ libjson-c-dev:amd64 \
liblttng-ust-dev:amd64 \ liblttng-ust-dev:amd64 \
liblzo2-dev:amd64 \ liblzo2-dev:amd64 \
libncursesw5-dev:amd64 \ libncursesw5-dev:amd64 \
libnfs-dev:amd64 \ libnfs-dev:amd64 \
libnuma-dev:amd64 \ libnuma-dev:amd64 \
libpam0g-dev:amd64 \ libpam0g-dev:amd64 \
libpixman-1-dev:amd64 \ libpixman-1-dev:amd64 \
libpmem-dev:amd64 \ libpmem-dev:amd64 \
libpng-dev:amd64 \ libpng-dev:amd64 \
libpulse-dev:amd64 \ libpulse-dev:amd64 \
librbd-dev:amd64 \ librbd-dev:amd64 \
librdmacm-dev:amd64 \ librdmacm-dev:amd64 \
libsasl2-dev:amd64 \ libsasl2-dev:amd64 \
libsdl2-dev:amd64 \ libsdl2-dev:amd64 \
libsdl2-image-dev:amd64 \ libsdl2-image-dev:amd64 \
libseccomp-dev:amd64 \ libseccomp-dev:amd64 \
libselinux1-dev:amd64 \ libselinux1-dev:amd64 \
libslirp-dev:amd64 \ libslirp-dev:amd64 \
libsnappy-dev:amd64 \ libsnappy-dev:amd64 \
libspice-server-dev:amd64 \ libspice-server-dev:amd64 \
libssh-gcrypt-dev:amd64 \ libssh-gcrypt-dev:amd64 \
libsystemd-dev:amd64 \ libsystemd-dev:amd64 \
libtasn1-6-dev:amd64 \ libtasn1-6-dev:amd64 \
libubsan1:amd64 \ libubsan1:amd64 \
libudev-dev:amd64 \ libudev-dev:amd64 \
liburing-dev:amd64 \ liburing-dev:amd64 \
libusb-1.0-0-dev:amd64 \ libusb-1.0-0-dev:amd64 \
libusbredirhost-dev:amd64 \ libusbredirhost-dev:amd64 \
libvdeplug-dev:amd64 \ libvdeplug-dev:amd64 \
libvirglrenderer-dev:amd64 \ libvirglrenderer-dev:amd64 \
libvte-2.91-dev:amd64 \ libvte-2.91-dev:amd64 \
libxen-dev:amd64 \ libxen-dev:amd64 \
libzstd-dev:amd64 \ libzstd-dev:amd64 \
nettle-dev:amd64 \ nettle-dev:amd64 \
systemtap-sdt-dev:amd64 \ systemtap-sdt-dev:amd64 \
xfslibs-dev:amd64 \ xfslibs-dev:amd64 \
zlib1g-dev:amd64 && \ zlib1g-dev:amd64 && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \ mkdir -p /usr/local/share/meson/cross && \

View File

@ -11,123 +11,124 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get install -y eatmydata && \ apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
bash \ bash \
bc \ bc \
bison \ bison \
bsdextrautils \ bsdextrautils \
bzip2 \ bzip2 \
ca-certificates \ ca-certificates \
ccache \ ccache \
clang \ clang \
dbus \ dbus \
debianutils \ debianutils \
diffutils \ diffutils \
exuberant-ctags \ exuberant-ctags \
findutils \ findutils \
flex \ flex \
g++ \ g++ \
gcc \ gcc \
gcovr \ gcovr \
genisoimage \ genisoimage \
gettext \ gettext \
git \ git \
hostname \ hostname \
libaio-dev \ libaio-dev \
libasan5 \ libasan5 \
libasound2-dev \ libasound2-dev \
libattr1-dev \ libattr1-dev \
libbpf-dev \ libbpf-dev \
libbrlapi-dev \ libbrlapi-dev \
libbz2-dev \ libbz2-dev \
libc6-dev \ libc6-dev \
libcacard-dev \ libcacard-dev \
libcap-ng-dev \ libcap-ng-dev \
libcapstone-dev \ libcapstone-dev \
libcmocka-dev \ libcmocka-dev \
libcurl4-gnutls-dev \ libcurl4-gnutls-dev \
libdaxctl-dev \ libdaxctl-dev \
libdrm-dev \ libdrm-dev \
libepoxy-dev \ libepoxy-dev \
libfdt-dev \ libfdt-dev \
libffi-dev \ libffi-dev \
libfuse3-dev \ libfuse3-dev \
libgbm-dev \ libgbm-dev \
libgcrypt20-dev \ libgcrypt20-dev \
libglib2.0-dev \ libglib2.0-dev \
libglusterfs-dev \ libglusterfs-dev \
libgnutls28-dev \ libgnutls28-dev \
libgtk-3-dev \ libgtk-3-dev \
libibumad-dev \ libibumad-dev \
libibverbs-dev \ libibverbs-dev \
libiscsi-dev \ libiscsi-dev \
libjemalloc-dev \ libjemalloc-dev \
libjpeg62-turbo-dev \ libjpeg62-turbo-dev \
libjson-c-dev \ libjson-c-dev \
liblttng-ust-dev \ liblttng-ust-dev \
liblzo2-dev \ liblzo2-dev \
libncursesw5-dev \ libncursesw5-dev \
libnfs-dev \ libnfs-dev \
libnuma-dev \ libnuma-dev \
libpam0g-dev \ libpam0g-dev \
libpcre2-dev \ libpcre2-dev \
libpixman-1-dev \ libpixman-1-dev \
libpmem-dev \ libpmem-dev \
libpng-dev \ libpng-dev \
libpulse-dev \ libpulse-dev \
librbd-dev \ librbd-dev \
librdmacm-dev \ librdmacm-dev \
libsasl2-dev \ libsasl2-dev \
libsdl2-dev \ libsdl2-dev \
libsdl2-image-dev \ libsdl2-image-dev \
libseccomp-dev \ libseccomp-dev \
libselinux1-dev \ libselinux1-dev \
libslirp-dev \ libslirp-dev \
libsnappy-dev \ libsnappy-dev \
libspice-protocol-dev \ libsndio-dev \
libspice-server-dev \ libspice-protocol-dev \
libssh-gcrypt-dev \ libspice-server-dev \
libsystemd-dev \ libssh-gcrypt-dev \
libtasn1-6-dev \ libsystemd-dev \
libubsan1 \ libtasn1-6-dev \
libudev-dev \ libubsan1 \
liburing-dev \ libudev-dev \
libusb-1.0-0-dev \ liburing-dev \
libusbredirhost-dev \ libusb-1.0-0-dev \
libvdeplug-dev \ libusbredirhost-dev \
libvirglrenderer-dev \ libvdeplug-dev \
libvte-2.91-dev \ libvirglrenderer-dev \
libxen-dev \ libvte-2.91-dev \
libzstd-dev \ libxen-dev \
llvm \ libzstd-dev \
locales \ llvm \
make \ locales \
meson \ make \
multipath-tools \ meson \
ncat \ multipath-tools \
nettle-dev \ ncat \
ninja-build \ nettle-dev \
openssh-client \ ninja-build \
perl-base \ openssh-client \
pkgconf \ perl-base \
python3 \ pkgconf \
python3-numpy \ python3 \
python3-opencv \ python3-numpy \
python3-pillow \ python3-opencv \
python3-pip \ python3-pillow \
python3-sphinx \ python3-pip \
python3-sphinx-rtd-theme \ python3-sphinx \
python3-venv \ python3-sphinx-rtd-theme \
python3-yaml \ python3-venv \
rpm2cpio \ python3-yaml \
sed \ rpm2cpio \
sparse \ sed \
systemtap-sdt-dev \ sparse \
tar \ systemtap-sdt-dev \
tesseract-ocr \ tar \
tesseract-ocr-eng \ tesseract-ocr \
texinfo \ tesseract-ocr-eng \
xfslibs-dev \ texinfo \
zlib1g-dev && \ xfslibs-dev \
zlib1g-dev && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
@ -140,11 +141,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
# netmap/cscope/global # netmap/cscope/global
RUN DEBIAN_FRONTEND=noninteractive eatmydata \ RUN DEBIAN_FRONTEND=noninteractive eatmydata \
apt install -y --no-install-recommends \ apt install -y --no-install-recommends \

View File

@ -11,62 +11,63 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get install -y eatmydata && \ apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
bash \ bash \
bc \ bc \
bison \ bison \
bsdextrautils \ bsdextrautils \
bzip2 \ bzip2 \
ca-certificates \ ca-certificates \
ccache \ ccache \
dbus \ dbus \
debianutils \ debianutils \
diffutils \ diffutils \
exuberant-ctags \ exuberant-ctags \
findutils \ findutils \
flex \ flex \
gcovr \ gcovr \
genisoimage \ genisoimage \
gettext \ gettext \
git \ git \
hostname \ hostname \
libglib2.0-dev \ libglib2.0-dev \
libpcre2-dev \ libpcre2-dev \
libspice-protocol-dev \ libsndio-dev \
llvm \ libspice-protocol-dev \
locales \ llvm \
make \ locales \
meson \ make \
ncat \ meson \
ninja-build \ ncat \
openssh-client \ ninja-build \
perl-base \ openssh-client \
pkgconf \ perl-base \
python3 \ pkgconf \
python3-numpy \ python3 \
python3-opencv \ python3-numpy \
python3-pillow \ python3-opencv \
python3-pip \ python3-pillow \
python3-sphinx \ python3-pip \
python3-sphinx-rtd-theme \ python3-sphinx \
python3-venv \ python3-sphinx-rtd-theme \
python3-yaml \ python3-venv \
rpm2cpio \ python3-yaml \
sed \ rpm2cpio \
sparse \ sed \
tar \ sparse \
tesseract-ocr \ tar \
tesseract-ocr-eng \ tesseract-ocr \
texinfo && \ tesseract-ocr-eng \
texinfo && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales dpkg-reconfigure locales
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
RUN export DEBIAN_FRONTEND=noninteractive && \ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture arm64 && \ dpkg --add-architecture arm64 && \
@ -74,75 +75,75 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \ eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
g++-aarch64-linux-gnu \ g++-aarch64-linux-gnu \
gcc-aarch64-linux-gnu \ gcc-aarch64-linux-gnu \
libaio-dev:arm64 \ libaio-dev:arm64 \
libasan5:arm64 \ libasan5:arm64 \
libasound2-dev:arm64 \ libasound2-dev:arm64 \
libattr1-dev:arm64 \ libattr1-dev:arm64 \
libbpf-dev:arm64 \ libbpf-dev:arm64 \
libbrlapi-dev:arm64 \ libbrlapi-dev:arm64 \
libbz2-dev:arm64 \ libbz2-dev:arm64 \
libc6-dev:arm64 \ libc6-dev:arm64 \
libcacard-dev:arm64 \ libcacard-dev:arm64 \
libcap-ng-dev:arm64 \ libcap-ng-dev:arm64 \
libcapstone-dev:arm64 \ libcapstone-dev:arm64 \
libcmocka-dev:arm64 \ libcmocka-dev:arm64 \
libcurl4-gnutls-dev:arm64 \ libcurl4-gnutls-dev:arm64 \
libdaxctl-dev:arm64 \ libdaxctl-dev:arm64 \
libdrm-dev:arm64 \ libdrm-dev:arm64 \
libepoxy-dev:arm64 \ libepoxy-dev:arm64 \
libfdt-dev:arm64 \ libfdt-dev:arm64 \
libffi-dev:arm64 \ libffi-dev:arm64 \
libfuse3-dev:arm64 \ libfuse3-dev:arm64 \
libgbm-dev:arm64 \ libgbm-dev:arm64 \
libgcrypt20-dev:arm64 \ libgcrypt20-dev:arm64 \
libglib2.0-dev:arm64 \ libglib2.0-dev:arm64 \
libglusterfs-dev:arm64 \ libglusterfs-dev:arm64 \
libgnutls28-dev:arm64 \ libgnutls28-dev:arm64 \
libgtk-3-dev:arm64 \ libgtk-3-dev:arm64 \
libibumad-dev:arm64 \ libibumad-dev:arm64 \
libibverbs-dev:arm64 \ libibverbs-dev:arm64 \
libiscsi-dev:arm64 \ libiscsi-dev:arm64 \
libjemalloc-dev:arm64 \ libjemalloc-dev:arm64 \
libjpeg62-turbo-dev:arm64 \ libjpeg62-turbo-dev:arm64 \
libjson-c-dev:arm64 \ libjson-c-dev:arm64 \
liblttng-ust-dev:arm64 \ liblttng-ust-dev:arm64 \
liblzo2-dev:arm64 \ liblzo2-dev:arm64 \
libncursesw5-dev:arm64 \ libncursesw5-dev:arm64 \
libnfs-dev:arm64 \ libnfs-dev:arm64 \
libnuma-dev:arm64 \ libnuma-dev:arm64 \
libpam0g-dev:arm64 \ libpam0g-dev:arm64 \
libpixman-1-dev:arm64 \ libpixman-1-dev:arm64 \
libpng-dev:arm64 \ libpng-dev:arm64 \
libpulse-dev:arm64 \ libpulse-dev:arm64 \
librbd-dev:arm64 \ librbd-dev:arm64 \
librdmacm-dev:arm64 \ librdmacm-dev:arm64 \
libsasl2-dev:arm64 \ libsasl2-dev:arm64 \
libsdl2-dev:arm64 \ libsdl2-dev:arm64 \
libsdl2-image-dev:arm64 \ libsdl2-image-dev:arm64 \
libseccomp-dev:arm64 \ libseccomp-dev:arm64 \
libselinux1-dev:arm64 \ libselinux1-dev:arm64 \
libslirp-dev:arm64 \ libslirp-dev:arm64 \
libsnappy-dev:arm64 \ libsnappy-dev:arm64 \
libspice-server-dev:arm64 \ libspice-server-dev:arm64 \
libssh-gcrypt-dev:arm64 \ libssh-gcrypt-dev:arm64 \
libsystemd-dev:arm64 \ libsystemd-dev:arm64 \
libtasn1-6-dev:arm64 \ libtasn1-6-dev:arm64 \
libubsan1:arm64 \ libubsan1:arm64 \
libudev-dev:arm64 \ libudev-dev:arm64 \
liburing-dev:arm64 \ liburing-dev:arm64 \
libusb-1.0-0-dev:arm64 \ libusb-1.0-0-dev:arm64 \
libusbredirhost-dev:arm64 \ libusbredirhost-dev:arm64 \
libvdeplug-dev:arm64 \ libvdeplug-dev:arm64 \
libvirglrenderer-dev:arm64 \ libvirglrenderer-dev:arm64 \
libvte-2.91-dev:arm64 \ libvte-2.91-dev:arm64 \
libxen-dev:arm64 \ libxen-dev:arm64 \
libzstd-dev:arm64 \ libzstd-dev:arm64 \
nettle-dev:arm64 \ nettle-dev:arm64 \
systemtap-sdt-dev:arm64 \ systemtap-sdt-dev:arm64 \
xfslibs-dev:arm64 \ xfslibs-dev:arm64 \
zlib1g-dev:arm64 && \ zlib1g-dev:arm64 && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \ mkdir -p /usr/local/share/meson/cross && \

View File

@ -11,62 +11,63 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get install -y eatmydata && \ apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
bash \ bash \
bc \ bc \
bison \ bison \
bsdextrautils \ bsdextrautils \
bzip2 \ bzip2 \
ca-certificates \ ca-certificates \
ccache \ ccache \
dbus \ dbus \
debianutils \ debianutils \
diffutils \ diffutils \
exuberant-ctags \ exuberant-ctags \
findutils \ findutils \
flex \ flex \
gcovr \ gcovr \
genisoimage \ genisoimage \
gettext \ gettext \
git \ git \
hostname \ hostname \
libglib2.0-dev \ libglib2.0-dev \
libpcre2-dev \ libpcre2-dev \
libspice-protocol-dev \ libsndio-dev \
llvm \ libspice-protocol-dev \
locales \ llvm \
make \ locales \
meson \ make \
ncat \ meson \
ninja-build \ ncat \
openssh-client \ ninja-build \
perl-base \ openssh-client \
pkgconf \ perl-base \
python3 \ pkgconf \
python3-numpy \ python3 \
python3-opencv \ python3-numpy \
python3-pillow \ python3-opencv \
python3-pip \ python3-pillow \
python3-sphinx \ python3-pip \
python3-sphinx-rtd-theme \ python3-sphinx \
python3-venv \ python3-sphinx-rtd-theme \
python3-yaml \ python3-venv \
rpm2cpio \ python3-yaml \
sed \ rpm2cpio \
sparse \ sed \
tar \ sparse \
tesseract-ocr \ tar \
tesseract-ocr-eng \ tesseract-ocr \
texinfo && \ tesseract-ocr-eng \
texinfo && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales dpkg-reconfigure locales
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
RUN export DEBIAN_FRONTEND=noninteractive && \ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture armel && \ dpkg --add-architecture armel && \
@ -74,74 +75,74 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \ eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
g++-arm-linux-gnueabi \ g++-arm-linux-gnueabi \
gcc-arm-linux-gnueabi \ gcc-arm-linux-gnueabi \
libaio-dev:armel \ libaio-dev:armel \
libasan5:armel \ libasan5:armel \
libasound2-dev:armel \ libasound2-dev:armel \
libattr1-dev:armel \ libattr1-dev:armel \
libbpf-dev:armel \ libbpf-dev:armel \
libbrlapi-dev:armel \ libbrlapi-dev:armel \
libbz2-dev:armel \ libbz2-dev:armel \
libc6-dev:armel \ libc6-dev:armel \
libcacard-dev:armel \ libcacard-dev:armel \
libcap-ng-dev:armel \ libcap-ng-dev:armel \
libcapstone-dev:armel \ libcapstone-dev:armel \
libcmocka-dev:armel \ libcmocka-dev:armel \
libcurl4-gnutls-dev:armel \ libcurl4-gnutls-dev:armel \
libdaxctl-dev:armel \ libdaxctl-dev:armel \
libdrm-dev:armel \ libdrm-dev:armel \
libepoxy-dev:armel \ libepoxy-dev:armel \
libfdt-dev:armel \ libfdt-dev:armel \
libffi-dev:armel \ libffi-dev:armel \
libfuse3-dev:armel \ libfuse3-dev:armel \
libgbm-dev:armel \ libgbm-dev:armel \
libgcrypt20-dev:armel \ libgcrypt20-dev:armel \
libglib2.0-dev:armel \ libglib2.0-dev:armel \
libglusterfs-dev:armel \ libglusterfs-dev:armel \
libgnutls28-dev:armel \ libgnutls28-dev:armel \
libgtk-3-dev:armel \ libgtk-3-dev:armel \
libibumad-dev:armel \ libibumad-dev:armel \
libibverbs-dev:armel \ libibverbs-dev:armel \
libiscsi-dev:armel \ libiscsi-dev:armel \
libjemalloc-dev:armel \ libjemalloc-dev:armel \
libjpeg62-turbo-dev:armel \ libjpeg62-turbo-dev:armel \
libjson-c-dev:armel \ libjson-c-dev:armel \
liblttng-ust-dev:armel \ liblttng-ust-dev:armel \
liblzo2-dev:armel \ liblzo2-dev:armel \
libncursesw5-dev:armel \ libncursesw5-dev:armel \
libnfs-dev:armel \ libnfs-dev:armel \
libnuma-dev:armel \ libnuma-dev:armel \
libpam0g-dev:armel \ libpam0g-dev:armel \
libpixman-1-dev:armel \ libpixman-1-dev:armel \
libpng-dev:armel \ libpng-dev:armel \
libpulse-dev:armel \ libpulse-dev:armel \
librbd-dev:armel \ librbd-dev:armel \
librdmacm-dev:armel \ librdmacm-dev:armel \
libsasl2-dev:armel \ libsasl2-dev:armel \
libsdl2-dev:armel \ libsdl2-dev:armel \
libsdl2-image-dev:armel \ libsdl2-image-dev:armel \
libseccomp-dev:armel \ libseccomp-dev:armel \
libselinux1-dev:armel \ libselinux1-dev:armel \
libslirp-dev:armel \ libslirp-dev:armel \
libsnappy-dev:armel \ libsnappy-dev:armel \
libspice-server-dev:armel \ libspice-server-dev:armel \
libssh-gcrypt-dev:armel \ libssh-gcrypt-dev:armel \
libsystemd-dev:armel \ libsystemd-dev:armel \
libtasn1-6-dev:armel \ libtasn1-6-dev:armel \
libubsan1:armel \ libubsan1:armel \
libudev-dev:armel \ libudev-dev:armel \
liburing-dev:armel \ liburing-dev:armel \
libusb-1.0-0-dev:armel \ libusb-1.0-0-dev:armel \
libusbredirhost-dev:armel \ libusbredirhost-dev:armel \
libvdeplug-dev:armel \ libvdeplug-dev:armel \
libvirglrenderer-dev:armel \ libvirglrenderer-dev:armel \
libvte-2.91-dev:armel \ libvte-2.91-dev:armel \
libzstd-dev:armel \ libzstd-dev:armel \
nettle-dev:armel \ nettle-dev:armel \
systemtap-sdt-dev:armel \ systemtap-sdt-dev:armel \
xfslibs-dev:armel \ xfslibs-dev:armel \
zlib1g-dev:armel && \ zlib1g-dev:armel && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \ mkdir -p /usr/local/share/meson/cross && \

View File

@ -11,62 +11,63 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get install -y eatmydata && \ apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
bash \ bash \
bc \ bc \
bison \ bison \
bsdextrautils \ bsdextrautils \
bzip2 \ bzip2 \
ca-certificates \ ca-certificates \
ccache \ ccache \
dbus \ dbus \
debianutils \ debianutils \
diffutils \ diffutils \
exuberant-ctags \ exuberant-ctags \
findutils \ findutils \
flex \ flex \
gcovr \ gcovr \
genisoimage \ genisoimage \
gettext \ gettext \
git \ git \
hostname \ hostname \
libglib2.0-dev \ libglib2.0-dev \
libpcre2-dev \ libpcre2-dev \
libspice-protocol-dev \ libsndio-dev \
llvm \ libspice-protocol-dev \
locales \ llvm \
make \ locales \
meson \ make \
ncat \ meson \
ninja-build \ ncat \
openssh-client \ ninja-build \
perl-base \ openssh-client \
pkgconf \ perl-base \
python3 \ pkgconf \
python3-numpy \ python3 \
python3-opencv \ python3-numpy \
python3-pillow \ python3-opencv \
python3-pip \ python3-pillow \
python3-sphinx \ python3-pip \
python3-sphinx-rtd-theme \ python3-sphinx \
python3-venv \ python3-sphinx-rtd-theme \
python3-yaml \ python3-venv \
rpm2cpio \ python3-yaml \
sed \ rpm2cpio \
sparse \ sed \
tar \ sparse \
tesseract-ocr \ tar \
tesseract-ocr-eng \ tesseract-ocr \
texinfo && \ tesseract-ocr-eng \
texinfo && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales dpkg-reconfigure locales
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
RUN export DEBIAN_FRONTEND=noninteractive && \ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture armhf && \ dpkg --add-architecture armhf && \
@ -74,75 +75,75 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \ eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
g++-arm-linux-gnueabihf \ g++-arm-linux-gnueabihf \
gcc-arm-linux-gnueabihf \ gcc-arm-linux-gnueabihf \
libaio-dev:armhf \ libaio-dev:armhf \
libasan5:armhf \ libasan5:armhf \
libasound2-dev:armhf \ libasound2-dev:armhf \
libattr1-dev:armhf \ libattr1-dev:armhf \
libbpf-dev:armhf \ libbpf-dev:armhf \
libbrlapi-dev:armhf \ libbrlapi-dev:armhf \
libbz2-dev:armhf \ libbz2-dev:armhf \
libc6-dev:armhf \ libc6-dev:armhf \
libcacard-dev:armhf \ libcacard-dev:armhf \
libcap-ng-dev:armhf \ libcap-ng-dev:armhf \
libcapstone-dev:armhf \ libcapstone-dev:armhf \
libcmocka-dev:armhf \ libcmocka-dev:armhf \
libcurl4-gnutls-dev:armhf \ libcurl4-gnutls-dev:armhf \
libdaxctl-dev:armhf \ libdaxctl-dev:armhf \
libdrm-dev:armhf \ libdrm-dev:armhf \
libepoxy-dev:armhf \ libepoxy-dev:armhf \
libfdt-dev:armhf \ libfdt-dev:armhf \
libffi-dev:armhf \ libffi-dev:armhf \
libfuse3-dev:armhf \ libfuse3-dev:armhf \
libgbm-dev:armhf \ libgbm-dev:armhf \
libgcrypt20-dev:armhf \ libgcrypt20-dev:armhf \
libglib2.0-dev:armhf \ libglib2.0-dev:armhf \
libglusterfs-dev:armhf \ libglusterfs-dev:armhf \
libgnutls28-dev:armhf \ libgnutls28-dev:armhf \
libgtk-3-dev:armhf \ libgtk-3-dev:armhf \
libibumad-dev:armhf \ libibumad-dev:armhf \
libibverbs-dev:armhf \ libibverbs-dev:armhf \
libiscsi-dev:armhf \ libiscsi-dev:armhf \
libjemalloc-dev:armhf \ libjemalloc-dev:armhf \
libjpeg62-turbo-dev:armhf \ libjpeg62-turbo-dev:armhf \
libjson-c-dev:armhf \ libjson-c-dev:armhf \
liblttng-ust-dev:armhf \ liblttng-ust-dev:armhf \
liblzo2-dev:armhf \ liblzo2-dev:armhf \
libncursesw5-dev:armhf \ libncursesw5-dev:armhf \
libnfs-dev:armhf \ libnfs-dev:armhf \
libnuma-dev:armhf \ libnuma-dev:armhf \
libpam0g-dev:armhf \ libpam0g-dev:armhf \
libpixman-1-dev:armhf \ libpixman-1-dev:armhf \
libpng-dev:armhf \ libpng-dev:armhf \
libpulse-dev:armhf \ libpulse-dev:armhf \
librbd-dev:armhf \ librbd-dev:armhf \
librdmacm-dev:armhf \ librdmacm-dev:armhf \
libsasl2-dev:armhf \ libsasl2-dev:armhf \
libsdl2-dev:armhf \ libsdl2-dev:armhf \
libsdl2-image-dev:armhf \ libsdl2-image-dev:armhf \
libseccomp-dev:armhf \ libseccomp-dev:armhf \
libselinux1-dev:armhf \ libselinux1-dev:armhf \
libslirp-dev:armhf \ libslirp-dev:armhf \
libsnappy-dev:armhf \ libsnappy-dev:armhf \
libspice-server-dev:armhf \ libspice-server-dev:armhf \
libssh-gcrypt-dev:armhf \ libssh-gcrypt-dev:armhf \
libsystemd-dev:armhf \ libsystemd-dev:armhf \
libtasn1-6-dev:armhf \ libtasn1-6-dev:armhf \
libubsan1:armhf \ libubsan1:armhf \
libudev-dev:armhf \ libudev-dev:armhf \
liburing-dev:armhf \ liburing-dev:armhf \
libusb-1.0-0-dev:armhf \ libusb-1.0-0-dev:armhf \
libusbredirhost-dev:armhf \ libusbredirhost-dev:armhf \
libvdeplug-dev:armhf \ libvdeplug-dev:armhf \
libvirglrenderer-dev:armhf \ libvirglrenderer-dev:armhf \
libvte-2.91-dev:armhf \ libvte-2.91-dev:armhf \
libxen-dev:armhf \ libxen-dev:armhf \
libzstd-dev:armhf \ libzstd-dev:armhf \
nettle-dev:armhf \ nettle-dev:armhf \
systemtap-sdt-dev:armhf \ systemtap-sdt-dev:armhf \
xfslibs-dev:armhf \ xfslibs-dev:armhf \
zlib1g-dev:armhf && \ zlib1g-dev:armhf && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \ mkdir -p /usr/local/share/meson/cross && \

View File

@ -11,62 +11,63 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get install -y eatmydata && \ apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
bash \ bash \
bc \ bc \
bison \ bison \
bsdextrautils \ bsdextrautils \
bzip2 \ bzip2 \
ca-certificates \ ca-certificates \
ccache \ ccache \
dbus \ dbus \
debianutils \ debianutils \
diffutils \ diffutils \
exuberant-ctags \ exuberant-ctags \
findutils \ findutils \
flex \ flex \
gcovr \ gcovr \
genisoimage \ genisoimage \
gettext \ gettext \
git \ git \
hostname \ hostname \
libglib2.0-dev \ libglib2.0-dev \
libpcre2-dev \ libpcre2-dev \
libspice-protocol-dev \ libsndio-dev \
llvm \ libspice-protocol-dev \
locales \ llvm \
make \ locales \
meson \ make \
ncat \ meson \
ninja-build \ ncat \
openssh-client \ ninja-build \
perl-base \ openssh-client \
pkgconf \ perl-base \
python3 \ pkgconf \
python3-numpy \ python3 \
python3-opencv \ python3-numpy \
python3-pillow \ python3-opencv \
python3-pip \ python3-pillow \
python3-sphinx \ python3-pip \
python3-sphinx-rtd-theme \ python3-sphinx \
python3-venv \ python3-sphinx-rtd-theme \
python3-yaml \ python3-venv \
rpm2cpio \ python3-yaml \
sed \ rpm2cpio \
sparse \ sed \
tar \ sparse \
tesseract-ocr \ tar \
tesseract-ocr-eng \ tesseract-ocr \
texinfo && \ tesseract-ocr-eng \
texinfo && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales dpkg-reconfigure locales
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
RUN export DEBIAN_FRONTEND=noninteractive && \ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture mips64el && \ dpkg --add-architecture mips64el && \
@ -74,72 +75,72 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \ eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
g++-mips64el-linux-gnuabi64 \ g++-mips64el-linux-gnuabi64 \
gcc-mips64el-linux-gnuabi64 \ gcc-mips64el-linux-gnuabi64 \
libaio-dev:mips64el \ libaio-dev:mips64el \
libasound2-dev:mips64el \ libasound2-dev:mips64el \
libattr1-dev:mips64el \ libattr1-dev:mips64el \
libbpf-dev:mips64el \ libbpf-dev:mips64el \
libbrlapi-dev:mips64el \ libbrlapi-dev:mips64el \
libbz2-dev:mips64el \ libbz2-dev:mips64el \
libc6-dev:mips64el \ libc6-dev:mips64el \
libcacard-dev:mips64el \ libcacard-dev:mips64el \
libcap-ng-dev:mips64el \ libcap-ng-dev:mips64el \
libcapstone-dev:mips64el \ libcapstone-dev:mips64el \
libcmocka-dev:mips64el \ libcmocka-dev:mips64el \
libcurl4-gnutls-dev:mips64el \ libcurl4-gnutls-dev:mips64el \
libdaxctl-dev:mips64el \ libdaxctl-dev:mips64el \
libdrm-dev:mips64el \ libdrm-dev:mips64el \
libepoxy-dev:mips64el \ libepoxy-dev:mips64el \
libfdt-dev:mips64el \ libfdt-dev:mips64el \
libffi-dev:mips64el \ libffi-dev:mips64el \
libfuse3-dev:mips64el \ libfuse3-dev:mips64el \
libgbm-dev:mips64el \ libgbm-dev:mips64el \
libgcrypt20-dev:mips64el \ libgcrypt20-dev:mips64el \
libglib2.0-dev:mips64el \ libglib2.0-dev:mips64el \
libglusterfs-dev:mips64el \ libglusterfs-dev:mips64el \
libgnutls28-dev:mips64el \ libgnutls28-dev:mips64el \
libgtk-3-dev:mips64el \ libgtk-3-dev:mips64el \
libibumad-dev:mips64el \ libibumad-dev:mips64el \
libibverbs-dev:mips64el \ libibverbs-dev:mips64el \
libiscsi-dev:mips64el \ libiscsi-dev:mips64el \
libjemalloc-dev:mips64el \ libjemalloc-dev:mips64el \
libjpeg62-turbo-dev:mips64el \ libjpeg62-turbo-dev:mips64el \
libjson-c-dev:mips64el \ libjson-c-dev:mips64el \
liblttng-ust-dev:mips64el \ liblttng-ust-dev:mips64el \
liblzo2-dev:mips64el \ liblzo2-dev:mips64el \
libncursesw5-dev:mips64el \ libncursesw5-dev:mips64el \
libnfs-dev:mips64el \ libnfs-dev:mips64el \
libnuma-dev:mips64el \ libnuma-dev:mips64el \
libpam0g-dev:mips64el \ libpam0g-dev:mips64el \
libpixman-1-dev:mips64el \ libpixman-1-dev:mips64el \
libpng-dev:mips64el \ libpng-dev:mips64el \
libpulse-dev:mips64el \ libpulse-dev:mips64el \
librbd-dev:mips64el \ librbd-dev:mips64el \
librdmacm-dev:mips64el \ librdmacm-dev:mips64el \
libsasl2-dev:mips64el \ libsasl2-dev:mips64el \
libsdl2-dev:mips64el \ libsdl2-dev:mips64el \
libsdl2-image-dev:mips64el \ libsdl2-image-dev:mips64el \
libseccomp-dev:mips64el \ libseccomp-dev:mips64el \
libselinux1-dev:mips64el \ libselinux1-dev:mips64el \
libslirp-dev:mips64el \ libslirp-dev:mips64el \
libsnappy-dev:mips64el \ libsnappy-dev:mips64el \
libspice-server-dev:mips64el \ libspice-server-dev:mips64el \
libssh-gcrypt-dev:mips64el \ libssh-gcrypt-dev:mips64el \
libsystemd-dev:mips64el \ libsystemd-dev:mips64el \
libtasn1-6-dev:mips64el \ libtasn1-6-dev:mips64el \
libudev-dev:mips64el \ libudev-dev:mips64el \
liburing-dev:mips64el \ liburing-dev:mips64el \
libusb-1.0-0-dev:mips64el \ libusb-1.0-0-dev:mips64el \
libusbredirhost-dev:mips64el \ libusbredirhost-dev:mips64el \
libvdeplug-dev:mips64el \ libvdeplug-dev:mips64el \
libvirglrenderer-dev:mips64el \ libvirglrenderer-dev:mips64el \
libvte-2.91-dev:mips64el \ libvte-2.91-dev:mips64el \
libzstd-dev:mips64el \ libzstd-dev:mips64el \
nettle-dev:mips64el \ nettle-dev:mips64el \
systemtap-sdt-dev:mips64el \ systemtap-sdt-dev:mips64el \
xfslibs-dev:mips64el \ xfslibs-dev:mips64el \
zlib1g-dev:mips64el && \ zlib1g-dev:mips64el && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \ mkdir -p /usr/local/share/meson/cross && \

View File

@ -11,62 +11,63 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get install -y eatmydata && \ apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
bash \ bash \
bc \ bc \
bison \ bison \
bsdextrautils \ bsdextrautils \
bzip2 \ bzip2 \
ca-certificates \ ca-certificates \
ccache \ ccache \
dbus \ dbus \
debianutils \ debianutils \
diffutils \ diffutils \
exuberant-ctags \ exuberant-ctags \
findutils \ findutils \
flex \ flex \
gcovr \ gcovr \
genisoimage \ genisoimage \
gettext \ gettext \
git \ git \
hostname \ hostname \
libglib2.0-dev \ libglib2.0-dev \
libpcre2-dev \ libpcre2-dev \
libspice-protocol-dev \ libsndio-dev \
llvm \ libspice-protocol-dev \
locales \ llvm \
make \ locales \
meson \ make \
ncat \ meson \
ninja-build \ ncat \
openssh-client \ ninja-build \
perl-base \ openssh-client \
pkgconf \ perl-base \
python3 \ pkgconf \
python3-numpy \ python3 \
python3-opencv \ python3-numpy \
python3-pillow \ python3-opencv \
python3-pip \ python3-pillow \
python3-sphinx \ python3-pip \
python3-sphinx-rtd-theme \ python3-sphinx \
python3-venv \ python3-sphinx-rtd-theme \
python3-yaml \ python3-venv \
rpm2cpio \ python3-yaml \
sed \ rpm2cpio \
sparse \ sed \
tar \ sparse \
tesseract-ocr \ tar \
tesseract-ocr-eng \ tesseract-ocr \
texinfo && \ tesseract-ocr-eng \
texinfo && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales dpkg-reconfigure locales
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
RUN export DEBIAN_FRONTEND=noninteractive && \ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture mipsel && \ dpkg --add-architecture mipsel && \
@ -74,72 +75,72 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \ eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
g++-mipsel-linux-gnu \ g++-mipsel-linux-gnu \
gcc-mipsel-linux-gnu \ gcc-mipsel-linux-gnu \
libaio-dev:mipsel \ libaio-dev:mipsel \
libasound2-dev:mipsel \ libasound2-dev:mipsel \
libattr1-dev:mipsel \ libattr1-dev:mipsel \
libbpf-dev:mipsel \ libbpf-dev:mipsel \
libbrlapi-dev:mipsel \ libbrlapi-dev:mipsel \
libbz2-dev:mipsel \ libbz2-dev:mipsel \
libc6-dev:mipsel \ libc6-dev:mipsel \
libcacard-dev:mipsel \ libcacard-dev:mipsel \
libcap-ng-dev:mipsel \ libcap-ng-dev:mipsel \
libcapstone-dev:mipsel \ libcapstone-dev:mipsel \
libcmocka-dev:mipsel \ libcmocka-dev:mipsel \
libcurl4-gnutls-dev:mipsel \ libcurl4-gnutls-dev:mipsel \
libdaxctl-dev:mipsel \ libdaxctl-dev:mipsel \
libdrm-dev:mipsel \ libdrm-dev:mipsel \
libepoxy-dev:mipsel \ libepoxy-dev:mipsel \
libfdt-dev:mipsel \ libfdt-dev:mipsel \
libffi-dev:mipsel \ libffi-dev:mipsel \
libfuse3-dev:mipsel \ libfuse3-dev:mipsel \
libgbm-dev:mipsel \ libgbm-dev:mipsel \
libgcrypt20-dev:mipsel \ libgcrypt20-dev:mipsel \
libglib2.0-dev:mipsel \ libglib2.0-dev:mipsel \
libglusterfs-dev:mipsel \ libglusterfs-dev:mipsel \
libgnutls28-dev:mipsel \ libgnutls28-dev:mipsel \
libgtk-3-dev:mipsel \ libgtk-3-dev:mipsel \
libibumad-dev:mipsel \ libibumad-dev:mipsel \
libibverbs-dev:mipsel \ libibverbs-dev:mipsel \
libiscsi-dev:mipsel \ libiscsi-dev:mipsel \
libjemalloc-dev:mipsel \ libjemalloc-dev:mipsel \
libjpeg62-turbo-dev:mipsel \ libjpeg62-turbo-dev:mipsel \
libjson-c-dev:mipsel \ libjson-c-dev:mipsel \
liblttng-ust-dev:mipsel \ liblttng-ust-dev:mipsel \
liblzo2-dev:mipsel \ liblzo2-dev:mipsel \
libncursesw5-dev:mipsel \ libncursesw5-dev:mipsel \
libnfs-dev:mipsel \ libnfs-dev:mipsel \
libnuma-dev:mipsel \ libnuma-dev:mipsel \
libpam0g-dev:mipsel \ libpam0g-dev:mipsel \
libpixman-1-dev:mipsel \ libpixman-1-dev:mipsel \
libpng-dev:mipsel \ libpng-dev:mipsel \
libpulse-dev:mipsel \ libpulse-dev:mipsel \
librbd-dev:mipsel \ librbd-dev:mipsel \
librdmacm-dev:mipsel \ librdmacm-dev:mipsel \
libsasl2-dev:mipsel \ libsasl2-dev:mipsel \
libsdl2-dev:mipsel \ libsdl2-dev:mipsel \
libsdl2-image-dev:mipsel \ libsdl2-image-dev:mipsel \
libseccomp-dev:mipsel \ libseccomp-dev:mipsel \
libselinux1-dev:mipsel \ libselinux1-dev:mipsel \
libslirp-dev:mipsel \ libslirp-dev:mipsel \
libsnappy-dev:mipsel \ libsnappy-dev:mipsel \
libspice-server-dev:mipsel \ libspice-server-dev:mipsel \
libssh-gcrypt-dev:mipsel \ libssh-gcrypt-dev:mipsel \
libsystemd-dev:mipsel \ libsystemd-dev:mipsel \
libtasn1-6-dev:mipsel \ libtasn1-6-dev:mipsel \
libudev-dev:mipsel \ libudev-dev:mipsel \
liburing-dev:mipsel \ liburing-dev:mipsel \
libusb-1.0-0-dev:mipsel \ libusb-1.0-0-dev:mipsel \
libusbredirhost-dev:mipsel \ libusbredirhost-dev:mipsel \
libvdeplug-dev:mipsel \ libvdeplug-dev:mipsel \
libvirglrenderer-dev:mipsel \ libvirglrenderer-dev:mipsel \
libvte-2.91-dev:mipsel \ libvte-2.91-dev:mipsel \
libzstd-dev:mipsel \ libzstd-dev:mipsel \
nettle-dev:mipsel \ nettle-dev:mipsel \
systemtap-sdt-dev:mipsel \ systemtap-sdt-dev:mipsel \
xfslibs-dev:mipsel \ xfslibs-dev:mipsel \
zlib1g-dev:mipsel && \ zlib1g-dev:mipsel && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \ mkdir -p /usr/local/share/meson/cross && \

View File

@ -11,62 +11,63 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get install -y eatmydata && \ apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
bash \ bash \
bc \ bc \
bison \ bison \
bsdextrautils \ bsdextrautils \
bzip2 \ bzip2 \
ca-certificates \ ca-certificates \
ccache \ ccache \
dbus \ dbus \
debianutils \ debianutils \
diffutils \ diffutils \
exuberant-ctags \ exuberant-ctags \
findutils \ findutils \
flex \ flex \
gcovr \ gcovr \
genisoimage \ genisoimage \
gettext \ gettext \
git \ git \
hostname \ hostname \
libglib2.0-dev \ libglib2.0-dev \
libpcre2-dev \ libpcre2-dev \
libspice-protocol-dev \ libsndio-dev \
llvm \ libspice-protocol-dev \
locales \ llvm \
make \ locales \
meson \ make \
ncat \ meson \
ninja-build \ ncat \
openssh-client \ ninja-build \
perl-base \ openssh-client \
pkgconf \ perl-base \
python3 \ pkgconf \
python3-numpy \ python3 \
python3-opencv \ python3-numpy \
python3-pillow \ python3-opencv \
python3-pip \ python3-pillow \
python3-sphinx \ python3-pip \
python3-sphinx-rtd-theme \ python3-sphinx \
python3-venv \ python3-sphinx-rtd-theme \
python3-yaml \ python3-venv \
rpm2cpio \ python3-yaml \
sed \ rpm2cpio \
sparse \ sed \
tar \ sparse \
tesseract-ocr \ tar \
tesseract-ocr-eng \ tesseract-ocr \
texinfo && \ tesseract-ocr-eng \
texinfo && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales dpkg-reconfigure locales
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
RUN export DEBIAN_FRONTEND=noninteractive && \ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture ppc64el && \ dpkg --add-architecture ppc64el && \
@ -74,74 +75,74 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \ eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
g++-powerpc64le-linux-gnu \ g++-powerpc64le-linux-gnu \
gcc-powerpc64le-linux-gnu \ gcc-powerpc64le-linux-gnu \
libaio-dev:ppc64el \ libaio-dev:ppc64el \
libasan5:ppc64el \ libasan5:ppc64el \
libasound2-dev:ppc64el \ libasound2-dev:ppc64el \
libattr1-dev:ppc64el \ libattr1-dev:ppc64el \
libbpf-dev:ppc64el \ libbpf-dev:ppc64el \
libbrlapi-dev:ppc64el \ libbrlapi-dev:ppc64el \
libbz2-dev:ppc64el \ libbz2-dev:ppc64el \
libc6-dev:ppc64el \ libc6-dev:ppc64el \
libcacard-dev:ppc64el \ libcacard-dev:ppc64el \
libcap-ng-dev:ppc64el \ libcap-ng-dev:ppc64el \
libcapstone-dev:ppc64el \ libcapstone-dev:ppc64el \
libcmocka-dev:ppc64el \ libcmocka-dev:ppc64el \
libcurl4-gnutls-dev:ppc64el \ libcurl4-gnutls-dev:ppc64el \
libdaxctl-dev:ppc64el \ libdaxctl-dev:ppc64el \
libdrm-dev:ppc64el \ libdrm-dev:ppc64el \
libepoxy-dev:ppc64el \ libepoxy-dev:ppc64el \
libfdt-dev:ppc64el \ libfdt-dev:ppc64el \
libffi-dev:ppc64el \ libffi-dev:ppc64el \
libfuse3-dev:ppc64el \ libfuse3-dev:ppc64el \
libgbm-dev:ppc64el \ libgbm-dev:ppc64el \
libgcrypt20-dev:ppc64el \ libgcrypt20-dev:ppc64el \
libglib2.0-dev:ppc64el \ libglib2.0-dev:ppc64el \
libglusterfs-dev:ppc64el \ libglusterfs-dev:ppc64el \
libgnutls28-dev:ppc64el \ libgnutls28-dev:ppc64el \
libgtk-3-dev:ppc64el \ libgtk-3-dev:ppc64el \
libibumad-dev:ppc64el \ libibumad-dev:ppc64el \
libibverbs-dev:ppc64el \ libibverbs-dev:ppc64el \
libiscsi-dev:ppc64el \ libiscsi-dev:ppc64el \
libjemalloc-dev:ppc64el \ libjemalloc-dev:ppc64el \
libjpeg62-turbo-dev:ppc64el \ libjpeg62-turbo-dev:ppc64el \
libjson-c-dev:ppc64el \ libjson-c-dev:ppc64el \
liblttng-ust-dev:ppc64el \ liblttng-ust-dev:ppc64el \
liblzo2-dev:ppc64el \ liblzo2-dev:ppc64el \
libncursesw5-dev:ppc64el \ libncursesw5-dev:ppc64el \
libnfs-dev:ppc64el \ libnfs-dev:ppc64el \
libnuma-dev:ppc64el \ libnuma-dev:ppc64el \
libpam0g-dev:ppc64el \ libpam0g-dev:ppc64el \
libpixman-1-dev:ppc64el \ libpixman-1-dev:ppc64el \
libpng-dev:ppc64el \ libpng-dev:ppc64el \
libpulse-dev:ppc64el \ libpulse-dev:ppc64el \
librbd-dev:ppc64el \ librbd-dev:ppc64el \
librdmacm-dev:ppc64el \ librdmacm-dev:ppc64el \
libsasl2-dev:ppc64el \ libsasl2-dev:ppc64el \
libsdl2-dev:ppc64el \ libsdl2-dev:ppc64el \
libsdl2-image-dev:ppc64el \ libsdl2-image-dev:ppc64el \
libseccomp-dev:ppc64el \ libseccomp-dev:ppc64el \
libselinux1-dev:ppc64el \ libselinux1-dev:ppc64el \
libslirp-dev:ppc64el \ libslirp-dev:ppc64el \
libsnappy-dev:ppc64el \ libsnappy-dev:ppc64el \
libspice-server-dev:ppc64el \ libspice-server-dev:ppc64el \
libssh-gcrypt-dev:ppc64el \ libssh-gcrypt-dev:ppc64el \
libsystemd-dev:ppc64el \ libsystemd-dev:ppc64el \
libtasn1-6-dev:ppc64el \ libtasn1-6-dev:ppc64el \
libubsan1:ppc64el \ libubsan1:ppc64el \
libudev-dev:ppc64el \ libudev-dev:ppc64el \
liburing-dev:ppc64el \ liburing-dev:ppc64el \
libusb-1.0-0-dev:ppc64el \ libusb-1.0-0-dev:ppc64el \
libusbredirhost-dev:ppc64el \ libusbredirhost-dev:ppc64el \
libvdeplug-dev:ppc64el \ libvdeplug-dev:ppc64el \
libvirglrenderer-dev:ppc64el \ libvirglrenderer-dev:ppc64el \
libvte-2.91-dev:ppc64el \ libvte-2.91-dev:ppc64el \
libzstd-dev:ppc64el \ libzstd-dev:ppc64el \
nettle-dev:ppc64el \ nettle-dev:ppc64el \
systemtap-sdt-dev:ppc64el \ systemtap-sdt-dev:ppc64el \
xfslibs-dev:ppc64el \ xfslibs-dev:ppc64el \
zlib1g-dev:ppc64el && \ zlib1g-dev:ppc64el && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \ mkdir -p /usr/local/share/meson/cross && \

View File

@ -11,62 +11,63 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get install -y eatmydata && \ apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
bash \ bash \
bc \ bc \
bison \ bison \
bsdextrautils \ bsdextrautils \
bzip2 \ bzip2 \
ca-certificates \ ca-certificates \
ccache \ ccache \
dbus \ dbus \
debianutils \ debianutils \
diffutils \ diffutils \
exuberant-ctags \ exuberant-ctags \
findutils \ findutils \
flex \ flex \
gcovr \ gcovr \
genisoimage \ genisoimage \
gettext \ gettext \
git \ git \
hostname \ hostname \
libglib2.0-dev \ libglib2.0-dev \
libpcre2-dev \ libpcre2-dev \
libspice-protocol-dev \ libsndio-dev \
llvm \ libspice-protocol-dev \
locales \ llvm \
make \ locales \
meson \ make \
ncat \ meson \
ninja-build \ ncat \
openssh-client \ ninja-build \
perl-base \ openssh-client \
pkgconf \ perl-base \
python3 \ pkgconf \
python3-numpy \ python3 \
python3-opencv \ python3-numpy \
python3-pillow \ python3-opencv \
python3-pip \ python3-pillow \
python3-sphinx \ python3-pip \
python3-sphinx-rtd-theme \ python3-sphinx \
python3-venv \ python3-sphinx-rtd-theme \
python3-yaml \ python3-venv \
rpm2cpio \ python3-yaml \
sed \ rpm2cpio \
sparse \ sed \
tar \ sparse \
tesseract-ocr \ tar \
tesseract-ocr-eng \ tesseract-ocr \
texinfo && \ tesseract-ocr-eng \
texinfo && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales dpkg-reconfigure locales
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
RUN export DEBIAN_FRONTEND=noninteractive && \ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture s390x && \ dpkg --add-architecture s390x && \
@ -74,73 +75,73 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \ eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
g++-s390x-linux-gnu \ g++-s390x-linux-gnu \
gcc-s390x-linux-gnu \ gcc-s390x-linux-gnu \
libaio-dev:s390x \ libaio-dev:s390x \
libasan5:s390x \ libasan5:s390x \
libasound2-dev:s390x \ libasound2-dev:s390x \
libattr1-dev:s390x \ libattr1-dev:s390x \
libbpf-dev:s390x \ libbpf-dev:s390x \
libbrlapi-dev:s390x \ libbrlapi-dev:s390x \
libbz2-dev:s390x \ libbz2-dev:s390x \
libc6-dev:s390x \ libc6-dev:s390x \
libcacard-dev:s390x \ libcacard-dev:s390x \
libcap-ng-dev:s390x \ libcap-ng-dev:s390x \
libcapstone-dev:s390x \ libcapstone-dev:s390x \
libcmocka-dev:s390x \ libcmocka-dev:s390x \
libcurl4-gnutls-dev:s390x \ libcurl4-gnutls-dev:s390x \
libdaxctl-dev:s390x \ libdaxctl-dev:s390x \
libdrm-dev:s390x \ libdrm-dev:s390x \
libepoxy-dev:s390x \ libepoxy-dev:s390x \
libfdt-dev:s390x \ libfdt-dev:s390x \
libffi-dev:s390x \ libffi-dev:s390x \
libfuse3-dev:s390x \ libfuse3-dev:s390x \
libgbm-dev:s390x \ libgbm-dev:s390x \
libgcrypt20-dev:s390x \ libgcrypt20-dev:s390x \
libglib2.0-dev:s390x \ libglib2.0-dev:s390x \
libglusterfs-dev:s390x \ libglusterfs-dev:s390x \
libgnutls28-dev:s390x \ libgnutls28-dev:s390x \
libgtk-3-dev:s390x \ libgtk-3-dev:s390x \
libibumad-dev:s390x \ libibumad-dev:s390x \
libibverbs-dev:s390x \ libibverbs-dev:s390x \
libiscsi-dev:s390x \ libiscsi-dev:s390x \
libjemalloc-dev:s390x \ libjemalloc-dev:s390x \
libjpeg62-turbo-dev:s390x \ libjpeg62-turbo-dev:s390x \
libjson-c-dev:s390x \ libjson-c-dev:s390x \
liblttng-ust-dev:s390x \ liblttng-ust-dev:s390x \
liblzo2-dev:s390x \ liblzo2-dev:s390x \
libncursesw5-dev:s390x \ libncursesw5-dev:s390x \
libnfs-dev:s390x \ libnfs-dev:s390x \
libnuma-dev:s390x \ libnuma-dev:s390x \
libpam0g-dev:s390x \ libpam0g-dev:s390x \
libpixman-1-dev:s390x \ libpixman-1-dev:s390x \
libpng-dev:s390x \ libpng-dev:s390x \
libpulse-dev:s390x \ libpulse-dev:s390x \
librbd-dev:s390x \ librbd-dev:s390x \
librdmacm-dev:s390x \ librdmacm-dev:s390x \
libsasl2-dev:s390x \ libsasl2-dev:s390x \
libsdl2-dev:s390x \ libsdl2-dev:s390x \
libsdl2-image-dev:s390x \ libsdl2-image-dev:s390x \
libseccomp-dev:s390x \ libseccomp-dev:s390x \
libselinux1-dev:s390x \ libselinux1-dev:s390x \
libslirp-dev:s390x \ libslirp-dev:s390x \
libsnappy-dev:s390x \ libsnappy-dev:s390x \
libssh-gcrypt-dev:s390x \ libssh-gcrypt-dev:s390x \
libsystemd-dev:s390x \ libsystemd-dev:s390x \
libtasn1-6-dev:s390x \ libtasn1-6-dev:s390x \
libubsan1:s390x \ libubsan1:s390x \
libudev-dev:s390x \ libudev-dev:s390x \
liburing-dev:s390x \ liburing-dev:s390x \
libusb-1.0-0-dev:s390x \ libusb-1.0-0-dev:s390x \
libusbredirhost-dev:s390x \ libusbredirhost-dev:s390x \
libvdeplug-dev:s390x \ libvdeplug-dev:s390x \
libvirglrenderer-dev:s390x \ libvirglrenderer-dev:s390x \
libvte-2.91-dev:s390x \ libvte-2.91-dev:s390x \
libzstd-dev:s390x \ libzstd-dev:s390x \
nettle-dev:s390x \ nettle-dev:s390x \
systemtap-sdt-dev:s390x \ systemtap-sdt-dev:s390x \
xfslibs-dev:s390x \ xfslibs-dev:s390x \
zlib1g-dev:s390x && \ zlib1g-dev:s390x && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \ mkdir -p /usr/local/share/meson/cross && \

View File

@ -18,120 +18,120 @@ exec "$@"' > /usr/bin/nosync && \
chmod +x /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \
nosync dnf update -y && \ nosync dnf update -y && \
nosync dnf install -y \ nosync dnf install -y \
SDL2-devel \ SDL2-devel \
SDL2_image-devel \ SDL2_image-devel \
alsa-lib-devel \ alsa-lib-devel \
bash \ bash \
bc \ bc \
bison \ bison \
brlapi-devel \ brlapi-devel \
bzip2 \ bzip2 \
bzip2-devel \ bzip2-devel \
ca-certificates \ ca-certificates \
capstone-devel \ capstone-devel \
ccache \ ccache \
clang \ clang \
ctags \ ctags \
cyrus-sasl-devel \ cyrus-sasl-devel \
daxctl-devel \ daxctl-devel \
dbus-daemon \ dbus-daemon \
device-mapper-multipath-devel \ device-mapper-multipath-devel \
diffutils \ diffutils \
findutils \ findutils \
flex \ flex \
fuse3-devel \ fuse3-devel \
gcc \ gcc \
gcc-c++ \ gcc-c++ \
gcovr \ gcovr \
genisoimage \ genisoimage \
gettext \ gettext \
git \ git \
glib2-devel \ glib2-devel \
glib2-static \ glib2-static \
glibc-langpack-en \ glibc-langpack-en \
glibc-static \ glibc-static \
glusterfs-api-devel \ glusterfs-api-devel \
gnutls-devel \ gnutls-devel \
gtk3-devel \ gtk3-devel \
hostname \ hostname \
jemalloc-devel \ jemalloc-devel \
json-c-devel \ json-c-devel \
libaio-devel \ libaio-devel \
libasan \ libasan \
libattr-devel \ libattr-devel \
libbpf-devel \ libbpf-devel \
libcacard-devel \ libcacard-devel \
libcap-ng-devel \ libcap-ng-devel \
libcmocka-devel \ libcmocka-devel \
libcurl-devel \ libcurl-devel \
libdrm-devel \ libdrm-devel \
libepoxy-devel \ libepoxy-devel \
libfdt-devel \ libfdt-devel \
libffi-devel \ libffi-devel \
libgcrypt-devel \ libgcrypt-devel \
libiscsi-devel \ libiscsi-devel \
libjpeg-devel \ libjpeg-devel \
libnfs-devel \ libnfs-devel \
libpmem-devel \ libpmem-devel \
libpng-devel \ libpng-devel \
librbd-devel \ librbd-devel \
libseccomp-devel \ libseccomp-devel \
libselinux-devel \ libselinux-devel \
libslirp-devel \ libslirp-devel \
libssh-devel \ libssh-devel \
libtasn1-devel \ libtasn1-devel \
libubsan \ libubsan \
liburing-devel \ liburing-devel \
libusbx-devel \ libusbx-devel \
libzstd-devel \ libzstd-devel \
llvm \ llvm \
lttng-ust-devel \ lttng-ust-devel \
lzo-devel \ lzo-devel \
make \ make \
mesa-libgbm-devel \ mesa-libgbm-devel \
meson \ meson \
ncurses-devel \ ncurses-devel \
nettle-devel \ nettle-devel \
ninja-build \ ninja-build \
nmap-ncat \ nmap-ncat \
numactl-devel \ numactl-devel \
openssh-clients \ openssh-clients \
pam-devel \ pam-devel \
pcre-static \ pcre-static \
perl-base \ perl-base \
pixman-devel \ pixman-devel \
pkgconfig \ pkgconfig \
pulseaudio-libs-devel \ pulseaudio-libs-devel \
python3 \ python3 \
python3-PyYAML \ python3-PyYAML \
python3-numpy \ python3-numpy \
python3-opencv \ python3-opencv \
python3-pillow \ python3-pillow \
python3-pip \ python3-pip \
python3-sphinx \ python3-sphinx \
python3-sphinx_rtd_theme \ python3-sphinx_rtd_theme \
rdma-core-devel \ rdma-core-devel \
rpm \ rpm \
sed \ sed \
snappy-devel \ snappy-devel \
sparse \ sparse \
spice-protocol \ spice-protocol \
spice-server-devel \ spice-server-devel \
systemd-devel \ systemd-devel \
systemtap-sdt-devel \ systemtap-sdt-devel \
tar \ tar \
tesseract \ tesseract \
tesseract-langpack-eng \ tesseract-langpack-eng \
texinfo \ texinfo \
usbredir-devel \ usbredir-devel \
util-linux \ util-linux \
virglrenderer-devel \ virglrenderer-devel \
vte291-devel \ vte291-devel \
which \ which \
xen-devel \ xen-devel \
xfsprogs-devel \ xfsprogs-devel \
zlib-devel \ zlib-devel \
zlib-static && \ zlib-static && \
nosync dnf autoremove -y && \ nosync dnf autoremove -y && \
nosync dnf clean all -y && \ nosync dnf clean all -y && \
rpm -qa | sort > /packages.txt && \ rpm -qa | sort > /packages.txt && \
@ -142,8 +142,8 @@ exec "$@"' > /usr/bin/nosync && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"

View File

@ -104,6 +104,7 @@ RUN zypper update -y && \
rpm \ rpm \
sed \ sed \
snappy-devel \ snappy-devel \
sndio-devel \
sparse \ sparse \
spice-protocol-devel \ spice-protocol-devel \
systemd-devel \ systemd-devel \
@ -132,8 +133,8 @@ RUN zypper update -y && \
RUN /usr/bin/pip3 install meson==0.56.0 RUN /usr/bin/pip3 install meson==0.56.0
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"

View File

@ -11,122 +11,123 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get install -y eatmydata && \ apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \ eatmydata apt-get install --no-install-recommends -y \
bash \ bash \
bc \ bc \
bison \ bison \
bsdmainutils \ bsdmainutils \
bzip2 \ bzip2 \
ca-certificates \ ca-certificates \
ccache \ ccache \
clang \ clang \
dbus \ dbus \
debianutils \ debianutils \
diffutils \ diffutils \
exuberant-ctags \ exuberant-ctags \
findutils \ findutils \
flex \ flex \
g++ \ g++ \
gcc \ gcc \
gcovr \ gcovr \
genisoimage \ genisoimage \
gettext \ gettext \
git \ git \
hostname \ hostname \
libaio-dev \ libaio-dev \
libasan5 \ libasan5 \
libasound2-dev \ libasound2-dev \
libattr1-dev \ libattr1-dev \
libbrlapi-dev \ libbrlapi-dev \
libbz2-dev \ libbz2-dev \
libc6-dev \ libc6-dev \
libcacard-dev \ libcacard-dev \
libcap-ng-dev \ libcap-ng-dev \
libcapstone-dev \ libcapstone-dev \
libcmocka-dev \ libcmocka-dev \
libcurl4-gnutls-dev \ libcurl4-gnutls-dev \
libdaxctl-dev \ libdaxctl-dev \
libdrm-dev \ libdrm-dev \
libepoxy-dev \ libepoxy-dev \
libfdt-dev \ libfdt-dev \
libffi-dev \ libffi-dev \
libfuse3-dev \ libfuse3-dev \
libgbm-dev \ libgbm-dev \
libgcrypt20-dev \ libgcrypt20-dev \
libglib2.0-dev \ libglib2.0-dev \
libglusterfs-dev \ libglusterfs-dev \
libgnutls28-dev \ libgnutls28-dev \
libgtk-3-dev \ libgtk-3-dev \
libibumad-dev \ libibumad-dev \
libibverbs-dev \ libibverbs-dev \
libiscsi-dev \ libiscsi-dev \
libjemalloc-dev \ libjemalloc-dev \
libjpeg-turbo8-dev \ libjpeg-turbo8-dev \
libjson-c-dev \ libjson-c-dev \
liblttng-ust-dev \ liblttng-ust-dev \
liblzo2-dev \ liblzo2-dev \
libncursesw5-dev \ libncursesw5-dev \
libnfs-dev \ libnfs-dev \
libnuma-dev \ libnuma-dev \
libpam0g-dev \ libpam0g-dev \
libpcre2-dev \ libpcre2-dev \
libpixman-1-dev \ libpixman-1-dev \
libpmem-dev \ libpmem-dev \
libpng-dev \ libpng-dev \
libpulse-dev \ libpulse-dev \
librbd-dev \ librbd-dev \
librdmacm-dev \ librdmacm-dev \
libsasl2-dev \ libsasl2-dev \
libsdl2-dev \ libsdl2-dev \
libsdl2-image-dev \ libsdl2-image-dev \
libseccomp-dev \ libseccomp-dev \
libselinux1-dev \ libselinux1-dev \
libslirp-dev \ libslirp-dev \
libsnappy-dev \ libsnappy-dev \
libspice-protocol-dev \ libsndio-dev \
libspice-server-dev \ libspice-protocol-dev \
libssh-dev \ libspice-server-dev \
libsystemd-dev \ libssh-dev \
libtasn1-6-dev \ libsystemd-dev \
libubsan1 \ libtasn1-6-dev \
libudev-dev \ libubsan1 \
libusb-1.0-0-dev \ libudev-dev \
libusbredirhost-dev \ libusb-1.0-0-dev \
libvdeplug-dev \ libusbredirhost-dev \
libvirglrenderer-dev \ libvdeplug-dev \
libvte-2.91-dev \ libvirglrenderer-dev \
libxen-dev \ libvte-2.91-dev \
libzstd-dev \ libxen-dev \
llvm \ libzstd-dev \
locales \ llvm \
make \ locales \
multipath-tools \ make \
ncat \ multipath-tools \
nettle-dev \ ncat \
ninja-build \ nettle-dev \
openssh-client \ ninja-build \
perl-base \ openssh-client \
pkgconf \ perl-base \
python3 \ pkgconf \
python3-numpy \ python3 \
python3-opencv \ python3-numpy \
python3-pillow \ python3-opencv \
python3-pip \ python3-pillow \
python3-setuptools \ python3-pip \
python3-sphinx \ python3-setuptools \
python3-sphinx-rtd-theme \ python3-sphinx \
python3-venv \ python3-sphinx-rtd-theme \
python3-wheel \ python3-venv \
python3-yaml \ python3-wheel \
rpm2cpio \ python3-yaml \
sed \ rpm2cpio \
sparse \ sed \
systemtap-sdt-dev \ sparse \
tar \ systemtap-sdt-dev \
tesseract-ocr \ tar \
tesseract-ocr-eng \ tesseract-ocr \
texinfo \ tesseract-ocr-eng \
xfslibs-dev \ texinfo \
zlib1g-dev && \ xfslibs-dev \
zlib1g-dev && \
eatmydata apt-get autoremove -y && \ eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \ eatmydata apt-get autoclean -y && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
@ -141,11 +142,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
RUN /usr/bin/pip3 install meson==0.56.0 RUN /usr/bin/pip3 install meson==0.56.0
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8" ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make" ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja" ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3" ENV PYTHON "/usr/bin/python3"
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
# Apply patch https://reviews.llvm.org/D75820 # Apply patch https://reviews.llvm.org/D75820
# This is required for TSan in clang-10 to compile with QEMU. # This is required for TSan in clang-10 to compile with QEMU.
RUN sed -i 's/^const/static const/g' /usr/lib/llvm-10/lib/clang/10.0.0/include/sanitizer/tsan_interface.h RUN sed -i 's/^const/static const/g' /usr/lib/llvm-10/lib/clang/10.0.0/include/sanitizer/tsan_interface.h

@ -1 +1 @@
Subproject commit e3712b79122180fdb3b7a7ea8cbee47ece253f97 Subproject commit 79691a50a5f99bd7adda236f66c3c09371b01afa

View File

@ -101,6 +101,7 @@ packages:
- sdl2-image - sdl2-image
- sed - sed
- snappy - snappy
- sndio
- sparse - sparse
- spice-protocol - spice-protocol
- spice-server - spice-server

View File

@ -101,6 +101,7 @@ static void cxl_t3d(void)
qtest_start(cmdline->str); qtest_start(cmdline->str);
qtest_end(); qtest_end();
rmdir(tmpfs);
} }
static void cxl_1pxb_2rp_2t3d(void) static void cxl_1pxb_2rp_2t3d(void)
@ -115,6 +116,7 @@ static void cxl_1pxb_2rp_2t3d(void)
qtest_start(cmdline->str); qtest_start(cmdline->str);
qtest_end(); qtest_end();
rmdir(tmpfs);
} }
static void cxl_2pxb_4rp_4t3d(void) static void cxl_2pxb_4rp_4t3d(void)
@ -130,6 +132,7 @@ static void cxl_2pxb_4rp_4t3d(void)
qtest_start(cmdline->str); qtest_start(cmdline->str);
qtest_end(); qtest_end();
rmdir(tmpfs);
} }
#endif /* CONFIG_POSIX */ #endif /* CONFIG_POSIX */

View File

@ -233,7 +233,7 @@ test_dbus_vmstate(Test *test)
test->src_qemu = src_qemu; test->src_qemu = src_qemu;
if (test->migrate_fail) { if (test->migrate_fail) {
wait_for_migration_fail(src_qemu, true); wait_for_migration_fail(src_qemu, true);
qtest_set_expected_status(dst_qemu, 1); qtest_set_expected_status(dst_qemu, EXIT_FAILURE);
} else { } else {
wait_for_migration_complete(src_qemu); wait_for_migration_complete(src_qemu);
} }

View File

@ -112,16 +112,16 @@ static void test_pci_unplug_json_request(void)
static void test_q35_pci_unplug_json_request(void) static void test_q35_pci_unplug_json_request(void)
{ {
const char *port = "-device '{\"driver\": \"pcie-root-port\", " const char *port = "-device \"{'driver': 'pcie-root-port', "
"\"id\": \"p1\"}'"; "'id': 'p1'}\"";
const char *bridge = "-device '{\"driver\": \"pcie-pci-bridge\", " const char *bridge = "-device \"{'driver': 'pcie-pci-bridge', "
"\"id\": \"b1\", " "'id': 'b1', "
"\"bus\": \"p1\"}'"; "'bus': 'p1'}\"";
const char *device = "-device '{\"driver\": \"virtio-mouse-pci\", " const char *device = "-device \"{'driver': 'virtio-mouse-pci', "
"\"bus\": \"b1\", " "'bus': 'b1', "
"\"id\": \"dev0\"}'"; "'id': 'dev0'}\"";
QTestState *qtest = qtest_initf("-machine q35 %s %s %s", QTestState *qtest = qtest_initf("-machine q35 %s %s %s",
port, bridge, device); port, bridge, device);

View File

@ -23,6 +23,7 @@
#endif #endif
#include "qemu/cutils.h" #include "qemu/cutils.h"
#include "qemu/sockets.h"
#include "qapi/error.h" #include "qapi/error.h"
#include "qapi/qmp/json-parser.h" #include "qapi/qmp/json-parser.h"
#include "qapi/qmp/qjson.h" #include "qapi/qmp/qjson.h"
@ -36,7 +37,7 @@ typedef struct {
static void socket_send(int fd, const char *buf, size_t size) static void socket_send(int fd, const char *buf, size_t size)
{ {
size_t res = qemu_write_full(fd, buf, size); ssize_t res = qemu_send_full(fd, buf, size);
assert(res == size); assert(res == size);
} }
@ -69,7 +70,7 @@ QDict *qmp_fd_receive(int fd)
ssize_t len; ssize_t len;
char c; char c;
len = read(fd, &c, 1); len = recv(fd, &c, 1, 0);
if (len == -1 && errno == EINTR) { if (len == -1 && errno == EINTR) {
continue; continue;
} }

View File

@ -17,6 +17,7 @@
*/ */
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include "hw/net/e1000_regs.h"
#include "../libqtest.h" #include "../libqtest.h"
#include "pci-pc.h" #include "pci-pc.h"
#include "qemu/sockets.h" #include "qemu/sockets.h"
@ -27,49 +28,13 @@
#include "qgraph.h" #include "qgraph.h"
#include "e1000e.h" #include "e1000e.h"
#define E1000E_IMS (0x00d0) #define E1000E_IVAR_TEST_CFG \
(E1000E_RX0_MSG_ID | E1000_IVAR_INT_ALLOC_VALID | \
((E1000E_TX0_MSG_ID | E1000_IVAR_INT_ALLOC_VALID) << 8) | \
((E1000E_OTHER_MSG_ID | E1000_IVAR_INT_ALLOC_VALID) << 16) | \
E1000_IVAR_TX_INT_EVERY_WB)
#define E1000E_STATUS (0x0008) #define E1000E_RING_LEN (0x1000)
#define E1000E_STATUS_LU BIT(1)
#define E1000E_STATUS_ASDV1000 BIT(9)
#define E1000E_CTRL (0x0000)
#define E1000E_CTRL_RESET BIT(26)
#define E1000E_RCTL (0x0100)
#define E1000E_RCTL_EN BIT(1)
#define E1000E_RCTL_UPE BIT(3)
#define E1000E_RCTL_MPE BIT(4)
#define E1000E_RFCTL (0x5008)
#define E1000E_RFCTL_EXTEN BIT(15)
#define E1000E_TCTL (0x0400)
#define E1000E_TCTL_EN BIT(1)
#define E1000E_CTRL_EXT (0x0018)
#define E1000E_CTRL_EXT_DRV_LOAD BIT(28)
#define E1000E_CTRL_EXT_TXLSFLOW BIT(22)
#define E1000E_IVAR (0x00E4)
#define E1000E_IVAR_TEST_CFG ((E1000E_RX0_MSG_ID << 0) | BIT(3) | \
(E1000E_TX0_MSG_ID << 8) | BIT(11) | \
(E1000E_OTHER_MSG_ID << 16) | BIT(19) | \
BIT(31))
#define E1000E_RING_LEN (0x1000)
#define E1000E_TDBAL (0x3800)
#define E1000E_TDBAH (0x3804)
#define E1000E_TDH (0x3810)
#define E1000E_RDBAL (0x2800)
#define E1000E_RDBAH (0x2804)
#define E1000E_RDH (0x2810)
#define E1000E_TXD_LEN (16)
#define E1000E_RXD_LEN (16)
static void e1000e_macreg_write(QE1000E *d, uint32_t reg, uint32_t val) static void e1000e_macreg_write(QE1000E *d, uint32_t reg, uint32_t val)
{ {
@ -87,30 +52,34 @@ void e1000e_tx_ring_push(QE1000E *d, void *descr)
{ {
QE1000E_PCI *d_pci = container_of(d, QE1000E_PCI, e1000e); QE1000E_PCI *d_pci = container_of(d, QE1000E_PCI, e1000e);
uint32_t tail = e1000e_macreg_read(d, E1000E_TDT); uint32_t tail = e1000e_macreg_read(d, E1000E_TDT);
uint32_t len = e1000e_macreg_read(d, E1000E_TDLEN) / E1000E_TXD_LEN; uint32_t len = e1000e_macreg_read(d, E1000E_TDLEN) / E1000_RING_DESC_LEN;
qtest_memwrite(d_pci->pci_dev.bus->qts, d->tx_ring + tail * E1000E_TXD_LEN, qtest_memwrite(d_pci->pci_dev.bus->qts,
descr, E1000E_TXD_LEN); d->tx_ring + tail * E1000_RING_DESC_LEN,
descr, E1000_RING_DESC_LEN);
e1000e_macreg_write(d, E1000E_TDT, (tail + 1) % len); e1000e_macreg_write(d, E1000E_TDT, (tail + 1) % len);
/* Read WB data for the packet transmitted */ /* Read WB data for the packet transmitted */
qtest_memread(d_pci->pci_dev.bus->qts, d->tx_ring + tail * E1000E_TXD_LEN, qtest_memread(d_pci->pci_dev.bus->qts,
descr, E1000E_TXD_LEN); d->tx_ring + tail * E1000_RING_DESC_LEN,
descr, E1000_RING_DESC_LEN);
} }
void e1000e_rx_ring_push(QE1000E *d, void *descr) void e1000e_rx_ring_push(QE1000E *d, void *descr)
{ {
QE1000E_PCI *d_pci = container_of(d, QE1000E_PCI, e1000e); QE1000E_PCI *d_pci = container_of(d, QE1000E_PCI, e1000e);
uint32_t tail = e1000e_macreg_read(d, E1000E_RDT); uint32_t tail = e1000e_macreg_read(d, E1000E_RDT);
uint32_t len = e1000e_macreg_read(d, E1000E_RDLEN) / E1000E_RXD_LEN; uint32_t len = e1000e_macreg_read(d, E1000E_RDLEN) / E1000_RING_DESC_LEN;
qtest_memwrite(d_pci->pci_dev.bus->qts, d->rx_ring + tail * E1000E_RXD_LEN, qtest_memwrite(d_pci->pci_dev.bus->qts,
descr, E1000E_RXD_LEN); d->rx_ring + tail * E1000_RING_DESC_LEN,
descr, E1000_RING_DESC_LEN);
e1000e_macreg_write(d, E1000E_RDT, (tail + 1) % len); e1000e_macreg_write(d, E1000E_RDT, (tail + 1) % len);
/* Read WB data for the packet received */ /* Read WB data for the packet received */
qtest_memread(d_pci->pci_dev.bus->qts, d->rx_ring + tail * E1000E_RXD_LEN, qtest_memread(d_pci->pci_dev.bus->qts,
descr, E1000E_RXD_LEN); d->rx_ring + tail * E1000_RING_DESC_LEN,
descr, E1000_RING_DESC_LEN);
} }
static void e1000e_foreach_callback(QPCIDevice *dev, int devfn, void *data) static void e1000e_foreach_callback(QPCIDevice *dev, int devfn, void *data)
@ -151,53 +120,53 @@ static void e1000e_pci_start_hw(QOSGraphObject *obj)
qpci_device_enable(&d->pci_dev); qpci_device_enable(&d->pci_dev);
/* Reset the device */ /* Reset the device */
val = e1000e_macreg_read(&d->e1000e, E1000E_CTRL); val = e1000e_macreg_read(&d->e1000e, E1000_CTRL);
e1000e_macreg_write(&d->e1000e, E1000E_CTRL, val | E1000E_CTRL_RESET); e1000e_macreg_write(&d->e1000e, E1000_CTRL, val | E1000_CTRL_RST);
/* Enable and configure MSI-X */ /* Enable and configure MSI-X */
qpci_msix_enable(&d->pci_dev); qpci_msix_enable(&d->pci_dev);
e1000e_macreg_write(&d->e1000e, E1000E_IVAR, E1000E_IVAR_TEST_CFG); e1000e_macreg_write(&d->e1000e, E1000_IVAR, E1000E_IVAR_TEST_CFG);
/* Check the device status - link and speed */ /* Check the device status - link and speed */
val = e1000e_macreg_read(&d->e1000e, E1000E_STATUS); val = e1000e_macreg_read(&d->e1000e, E1000_STATUS);
g_assert_cmphex(val & (E1000E_STATUS_LU | E1000E_STATUS_ASDV1000), g_assert_cmphex(val & (E1000_STATUS_LU | E1000_STATUS_LAN_INIT_DONE),
==, E1000E_STATUS_LU | E1000E_STATUS_ASDV1000); ==, E1000_STATUS_LU | E1000_STATUS_LAN_INIT_DONE);
/* Initialize TX/RX logic */ /* Initialize TX/RX logic */
e1000e_macreg_write(&d->e1000e, E1000E_RCTL, 0); e1000e_macreg_write(&d->e1000e, E1000_RCTL, 0);
e1000e_macreg_write(&d->e1000e, E1000E_TCTL, 0); e1000e_macreg_write(&d->e1000e, E1000_TCTL, 0);
/* Notify the device that the driver is ready */ /* Notify the device that the driver is ready */
val = e1000e_macreg_read(&d->e1000e, E1000E_CTRL_EXT); val = e1000e_macreg_read(&d->e1000e, E1000_CTRL_EXT);
e1000e_macreg_write(&d->e1000e, E1000E_CTRL_EXT, e1000e_macreg_write(&d->e1000e, E1000_CTRL_EXT,
val | E1000E_CTRL_EXT_DRV_LOAD | E1000E_CTRL_EXT_TXLSFLOW); val | E1000_CTRL_EXT_DRV_LOAD);
e1000e_macreg_write(&d->e1000e, E1000E_TDBAL, e1000e_macreg_write(&d->e1000e, E1000_TDBAL,
(uint32_t) d->e1000e.tx_ring); (uint32_t) d->e1000e.tx_ring);
e1000e_macreg_write(&d->e1000e, E1000E_TDBAH, e1000e_macreg_write(&d->e1000e, E1000_TDBAH,
(uint32_t) (d->e1000e.tx_ring >> 32)); (uint32_t) (d->e1000e.tx_ring >> 32));
e1000e_macreg_write(&d->e1000e, E1000E_TDLEN, E1000E_RING_LEN); e1000e_macreg_write(&d->e1000e, E1000E_TDLEN, E1000E_RING_LEN);
e1000e_macreg_write(&d->e1000e, E1000E_TDT, 0); e1000e_macreg_write(&d->e1000e, E1000E_TDT, 0);
e1000e_macreg_write(&d->e1000e, E1000E_TDH, 0); e1000e_macreg_write(&d->e1000e, E1000_TDH, 0);
/* Enable transmit */ /* Enable transmit */
e1000e_macreg_write(&d->e1000e, E1000E_TCTL, E1000E_TCTL_EN); e1000e_macreg_write(&d->e1000e, E1000_TCTL, E1000_TCTL_EN);
e1000e_macreg_write(&d->e1000e, E1000E_RDBAL, e1000e_macreg_write(&d->e1000e, E1000_RDBAL,
(uint32_t)d->e1000e.rx_ring); (uint32_t)d->e1000e.rx_ring);
e1000e_macreg_write(&d->e1000e, E1000E_RDBAH, e1000e_macreg_write(&d->e1000e, E1000_RDBAH,
(uint32_t)(d->e1000e.rx_ring >> 32)); (uint32_t)(d->e1000e.rx_ring >> 32));
e1000e_macreg_write(&d->e1000e, E1000E_RDLEN, E1000E_RING_LEN); e1000e_macreg_write(&d->e1000e, E1000E_RDLEN, E1000E_RING_LEN);
e1000e_macreg_write(&d->e1000e, E1000E_RDT, 0); e1000e_macreg_write(&d->e1000e, E1000E_RDT, 0);
e1000e_macreg_write(&d->e1000e, E1000E_RDH, 0); e1000e_macreg_write(&d->e1000e, E1000_RDH, 0);
/* Enable receive */ /* Enable receive */
e1000e_macreg_write(&d->e1000e, E1000E_RFCTL, E1000E_RFCTL_EXTEN); e1000e_macreg_write(&d->e1000e, E1000_RFCTL, E1000_RFCTL_EXTEN);
e1000e_macreg_write(&d->e1000e, E1000E_RCTL, E1000E_RCTL_EN | e1000e_macreg_write(&d->e1000e, E1000_RCTL, E1000_RCTL_EN |
E1000E_RCTL_UPE | E1000_RCTL_UPE |
E1000E_RCTL_MPE); E1000_RCTL_MPE);
/* Enable all interrupts */ /* Enable all interrupts */
e1000e_macreg_write(&d->e1000e, E1000E_IMS, 0xFFFFFFFF); e1000e_macreg_write(&d->e1000e, E1000_IMS, 0xFFFFFFFF);
} }

View File

@ -33,8 +33,6 @@ libqos_srcs = files(
'sdhci.c', 'sdhci.c',
'tpci200.c', 'tpci200.c',
'virtio.c', 'virtio.c',
'virtio-9p.c',
'virtio-9p-client.c',
'virtio-balloon.c', 'virtio-balloon.c',
'virtio-blk.c', 'virtio-blk.c',
'vhost-user-blk.c', 'vhost-user-blk.c',
@ -62,6 +60,10 @@ libqos_srcs = files(
'x86_64_pc-machine.c', 'x86_64_pc-machine.c',
) )
if have_virtfs
libqos_srcs += files('virtio-9p.c', 'virtio-9p-client.c')
endif
libqos = static_library('qos', libqos_srcs + genh, libqos = static_library('qos', libqos_srcs + genh,
name_suffix: 'fa', name_suffix: 'fa',
build_by_default: false) build_by_default: false)

View File

@ -16,9 +16,11 @@
#include "qemu/osdep.h" #include "qemu/osdep.h"
#ifndef _WIN32
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <sys/un.h> #include <sys/un.h>
#endif /* _WIN32 */
#ifdef __linux__ #ifdef __linux__
#include <sys/prctl.h> #include <sys/prctl.h>
#endif /* __linux__ */ #endif /* __linux__ */
@ -27,13 +29,25 @@
#include "libqmp.h" #include "libqmp.h"
#include "qemu/ctype.h" #include "qemu/ctype.h"
#include "qemu/cutils.h" #include "qemu/cutils.h"
#include "qemu/sockets.h"
#include "qapi/qmp/qdict.h" #include "qapi/qmp/qdict.h"
#include "qapi/qmp/qjson.h" #include "qapi/qmp/qjson.h"
#include "qapi/qmp/qlist.h" #include "qapi/qmp/qlist.h"
#include "qapi/qmp/qstring.h" #include "qapi/qmp/qstring.h"
#define MAX_IRQ 256 #define MAX_IRQ 256
#define SOCKET_TIMEOUT 50
#ifndef _WIN32
# define SOCKET_TIMEOUT 50
# define CMD_EXEC "exec "
# define DEV_STDERR "/dev/fd/2"
# define DEV_NULL "/dev/null"
#else
# define SOCKET_TIMEOUT 50000
# define CMD_EXEC ""
# define DEV_STDERR "2"
# define DEV_NULL "nul"
#endif
typedef void (*QTestSendFn)(QTestState *s, const char *buf); typedef void (*QTestSendFn)(QTestState *s, const char *buf);
typedef void (*ExternalSendFn)(void *s, const char *buf); typedef void (*ExternalSendFn)(void *s, const char *buf);
@ -57,6 +71,9 @@ struct QTestState
int qmp_fd; int qmp_fd;
pid_t qemu_pid; /* our child QEMU process */ pid_t qemu_pid; /* our child QEMU process */
int wstatus; int wstatus;
#ifdef _WIN32
DWORD exit_code;
#endif
int expected_status; int expected_status;
bool big_endian; bool big_endian;
bool irq_level[MAX_IRQ]; bool irq_level[MAX_IRQ];
@ -90,8 +107,16 @@ static int socket_accept(int sock)
struct sockaddr_un addr; struct sockaddr_un addr;
socklen_t addrlen; socklen_t addrlen;
int ret; int ret;
/*
* timeout unit of blocking receive calls is different among platfoms.
* It's in seconds on non-Windows platforms but milliseconds on Windows.
*/
#ifndef _WIN32
struct timeval timeout = { .tv_sec = SOCKET_TIMEOUT, struct timeval timeout = { .tv_sec = SOCKET_TIMEOUT,
.tv_usec = 0 }; .tv_usec = 0 };
#else
DWORD timeout = SOCKET_TIMEOUT;
#endif
if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO,
(void *)&timeout, sizeof(timeout))) { (void *)&timeout, sizeof(timeout))) {
@ -118,10 +143,18 @@ bool qtest_probe_child(QTestState *s)
pid_t pid = s->qemu_pid; pid_t pid = s->qemu_pid;
if (pid != -1) { if (pid != -1) {
#ifndef _WIN32
pid = waitpid(pid, &s->wstatus, WNOHANG); pid = waitpid(pid, &s->wstatus, WNOHANG);
if (pid == 0) { if (pid == 0) {
return true; return true;
} }
#else
GetExitCodeProcess((HANDLE)pid, &s->exit_code);
if (s->exit_code == STILL_ACTIVE) {
return true;
}
CloseHandle((HANDLE)pid);
#endif
s->qemu_pid = -1; s->qemu_pid = -1;
} }
return false; return false;
@ -132,24 +165,14 @@ void qtest_set_expected_status(QTestState *s, int status)
s->expected_status = status; s->expected_status = status;
} }
void qtest_kill_qemu(QTestState *s) static void qtest_check_status(QTestState *s)
{ {
pid_t pid = s->qemu_pid;
int wstatus;
/* Skip wait if qtest_probe_child already reaped. */
if (pid != -1) {
kill(pid, SIGTERM);
TFR(pid = waitpid(s->qemu_pid, &s->wstatus, 0));
assert(pid == s->qemu_pid);
s->qemu_pid = -1;
}
/* /*
* Check whether qemu exited with expected exit status; anything else is * Check whether qemu exited with expected exit status; anything else is
* fishy and should be logged with as much detail as possible. * fishy and should be logged with as much detail as possible.
*/ */
wstatus = s->wstatus; #ifndef _WIN32
int wstatus = s->wstatus;
if (WIFEXITED(wstatus) && WEXITSTATUS(wstatus) != s->expected_status) { if (WIFEXITED(wstatus) && WEXITSTATUS(wstatus) != s->expected_status) {
fprintf(stderr, "%s:%d: kill_qemu() tried to terminate QEMU " fprintf(stderr, "%s:%d: kill_qemu() tried to terminate QEMU "
"process but encountered exit status %d (expected %d)\n", "process but encountered exit status %d (expected %d)\n",
@ -165,6 +188,50 @@ void qtest_kill_qemu(QTestState *s)
__FILE__, __LINE__, sig, signame, dump); __FILE__, __LINE__, sig, signame, dump);
abort(); abort();
} }
#else
if (s->exit_code != s->expected_status) {
fprintf(stderr, "%s:%d: kill_qemu() tried to terminate QEMU "
"process but encountered exit status %ld (expected %d)\n",
__FILE__, __LINE__, s->exit_code, s->expected_status);
abort();
}
#endif
}
void qtest_wait_qemu(QTestState *s)
{
#ifndef _WIN32
pid_t pid;
TFR(pid = waitpid(s->qemu_pid, &s->wstatus, 0));
assert(pid == s->qemu_pid);
#else
DWORD ret;
ret = WaitForSingleObject((HANDLE)s->qemu_pid, INFINITE);
assert(ret == WAIT_OBJECT_0);
GetExitCodeProcess((HANDLE)s->qemu_pid, &s->exit_code);
CloseHandle((HANDLE)s->qemu_pid);
#endif
qtest_check_status(s);
}
void qtest_kill_qemu(QTestState *s)
{
/* Skip wait if qtest_probe_child() already reaped */
if (s->qemu_pid != -1) {
#ifndef _WIN32
kill(s->qemu_pid, SIGTERM);
#else
TerminateProcess((HANDLE)s->qemu_pid, s->expected_status);
#endif
qtest_wait_qemu(s);
s->qemu_pid = -1;
return;
}
qtest_check_status(s);
} }
static void kill_qemu_hook_func(void *s) static void kill_qemu_hook_func(void *s)
@ -243,6 +310,38 @@ static const char *qtest_qemu_binary(void)
return qemu_bin; return qemu_bin;
} }
#ifdef _WIN32
static pid_t qtest_create_process(char *cmd)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
BOOL ret;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
ret = CreateProcess(NULL, /* module name */
cmd, /* command line */
NULL, /* process handle not inheritable */
NULL, /* thread handle not inheritable */
FALSE, /* set handle inheritance to FALSE */
0, /* No creation flags */
NULL, /* use parent's environment block */
NULL, /* use parent's starting directory */
&si, /* pointer to STARTUPINFO structure */
&pi /* pointer to PROCESS_INFORMATION structure */
);
if (ret == 0) {
fprintf(stderr, "%s:%d: unable to create a new process (%s)\n",
__FILE__, __LINE__, strerror(GetLastError()));
abort();
}
return (pid_t)pi.hProcess;
}
#endif /* _WIN32 */
QTestState *qtest_init_without_qmp_handshake(const char *extra_args) QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
{ {
QTestState *s; QTestState *s;
@ -270,6 +369,7 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
unlink(socket_path); unlink(socket_path);
unlink(qmp_socket_path); unlink(qmp_socket_path);
socket_init();
sock = init_socket(socket_path); sock = init_socket(socket_path);
qmpsock = init_socket(qmp_socket_path); qmpsock = init_socket(qmp_socket_path);
@ -278,7 +378,7 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
qtest_add_abrt_handler(kill_qemu_hook_func, s); qtest_add_abrt_handler(kill_qemu_hook_func, s);
command = g_strdup_printf("exec %s %s" command = g_strdup_printf(CMD_EXEC "%s %s"
"-qtest unix:%s " "-qtest unix:%s "
"-qtest-log %s " "-qtest-log %s "
"-chardev socket,path=%s,id=char0 " "-chardev socket,path=%s,id=char0 "
@ -287,7 +387,7 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
"%s" "%s"
" -accel qtest", " -accel qtest",
qemu_binary, tracearg, socket_path, qemu_binary, tracearg, socket_path,
getenv("QTEST_LOG") ? "/dev/fd/2" : "/dev/null", getenv("QTEST_LOG") ? DEV_STDERR : DEV_NULL,
qmp_socket_path, qmp_socket_path,
extra_args ?: ""); extra_args ?: "");
@ -296,6 +396,7 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
s->pending_events = NULL; s->pending_events = NULL;
s->wstatus = 0; s->wstatus = 0;
s->expected_status = 0; s->expected_status = 0;
#ifndef _WIN32
s->qemu_pid = fork(); s->qemu_pid = fork();
if (s->qemu_pid == 0) { if (s->qemu_pid == 0) {
#ifdef __linux__ #ifdef __linux__
@ -318,6 +419,9 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
execlp("/bin/sh", "sh", "-c", command, NULL); execlp("/bin/sh", "sh", "-c", command, NULL);
exit(1); exit(1);
} }
#else
s->qemu_pid = qtest_create_process(command);
#endif /* _WIN32 */
g_free(command); g_free(command);
s->fd = socket_accept(sock); s->fd = socket_accept(sock);
@ -336,9 +440,19 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
s->irq_level[i] = false; s->irq_level[i] = false;
} }
/*
* Stopping QEMU for debugging is not supported on Windows.
*
* Using DebugActiveProcess() API can suspend the QEMU process,
* but gdb cannot attach to the process. Using the undocumented
* NtSuspendProcess() can suspend the QEMU process and gdb can
* attach to the process, but gdb cannot resume it.
*/
#ifndef _WIN32
if (getenv("QTEST_STOP")) { if (getenv("QTEST_STOP")) {
kill(s->qemu_pid, SIGSTOP); kill(s->qemu_pid, SIGSTOP);
} }
#endif
/* ask endianness of the target */ /* ask endianness of the target */
@ -392,6 +506,7 @@ QTestState *qtest_init_with_serial(const char *extra_args, int *sock_fd)
g_assert_true(sock_dir != NULL); g_assert_true(sock_dir != NULL);
sock_path = g_strdup_printf("%s/sock", sock_dir); sock_path = g_strdup_printf("%s/sock", sock_dir);
socket_init();
sock_fd_init = init_socket(sock_path); sock_fd_init = init_socket(sock_path);
qts = qtest_initf("-chardev socket,id=s0,path=%s -serial chardev:s0 %s", qts = qtest_initf("-chardev socket,id=s0,path=%s -serial chardev:s0 %s",
@ -428,7 +543,7 @@ void qtest_quit(QTestState *s)
static void socket_send(int fd, const char *buf, size_t size) static void socket_send(int fd, const char *buf, size_t size)
{ {
size_t res = qemu_write_full(fd, buf, size); ssize_t res = qemu_send_full(fd, buf, size);
assert(res == size); assert(res == size);
} }
@ -460,7 +575,7 @@ static GString *qtest_client_socket_recv_line(QTestState *s)
ssize_t len; ssize_t len;
char buffer[1024]; char buffer[1024];
len = read(s->fd, buffer, sizeof(buffer)); len = recv(s->fd, buffer, sizeof(buffer), 0);
if (len == -1 && errno == EINTR) { if (len == -1 && errno == EINTR) {
continue; continue;
} }

View File

@ -75,6 +75,15 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args);
*/ */
QTestState *qtest_init_with_serial(const char *extra_args, int *sock_fd); QTestState *qtest_init_with_serial(const char *extra_args, int *sock_fd);
/**
* qtest_wait_qemu:
* @s: #QTestState instance to operate on.
*
* Wait for the QEMU process to terminate. It is safe to call this function
* multiple times.
*/
void qtest_wait_qemu(QTestState *s);
/** /**
* qtest_kill_qemu: * qtest_kill_qemu:
* @s: #QTestState instance to operate on. * @s: #QTestState instance to operate on.

View File

@ -1342,7 +1342,7 @@ static void test_precopy_common(MigrateCommon *args)
wait_for_migration_fail(from, allow_active); wait_for_migration_fail(from, allow_active);
if (args->result == MIG_TEST_FAIL_DEST_QUIT_ERR) { if (args->result == MIG_TEST_FAIL_DEST_QUIT_ERR) {
qtest_set_expected_status(to, 1); qtest_set_expected_status(to, EXIT_FAILURE);
} }
} else { } else {
if (args->iterations) { if (args->iterations) {
@ -1738,7 +1738,7 @@ static void do_test_validate_uuid(MigrateStart *args, bool should_fail)
migrate_qmp(from, uri, "{}"); migrate_qmp(from, uri, "{}");
if (should_fail) { if (should_fail) {
qtest_set_expected_status(to, 1); qtest_set_expected_status(to, EXIT_FAILURE);
wait_for_migration_fail(from, true); wait_for_migration_fail(from, true);
} else { } else {
wait_for_migration_complete(from); wait_for_migration_complete(from);
@ -2141,6 +2141,10 @@ static void test_multifd_tcp_cancel(void)
migrate_cancel(from); migrate_cancel(from);
/* Make sure QEMU process "to" exited */
qtest_set_expected_status(to, EXIT_FAILURE);
qtest_wait_qemu(to);
args = (MigrateStart){ args = (MigrateStart){
.only_target = true, .only_target = true,
}; };

View File

@ -13,7 +13,6 @@
*/ */
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include <glib/gstdio.h>
#include "libqtest.h" #include "libqtest.h"
#include "qemu/module.h" #include "qemu/module.h"
@ -62,9 +61,9 @@ int main(int argc, char **argv)
tpm_crb_swtpm_migration_test); tpm_crb_swtpm_migration_test);
ret = g_test_run(); ret = g_test_run();
g_rmdir(ts.dst_tpm_path); tpm_util_rmdir(ts.dst_tpm_path);
g_free(ts.dst_tpm_path); g_free(ts.dst_tpm_path);
g_rmdir(ts.src_tpm_path); tpm_util_rmdir(ts.src_tpm_path);
g_free(ts.src_tpm_path); g_free(ts.src_tpm_path);
g_free(ts.uri); g_free(ts.uri);

View File

@ -14,7 +14,6 @@
*/ */
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include <glib/gstdio.h>
#include "libqtest.h" #include "libqtest.h"
#include "qemu/module.h" #include "qemu/module.h"
@ -66,9 +65,9 @@ int main(int argc, char **argv)
tpm_tis_swtpm_migration_test); tpm_tis_swtpm_migration_test);
ret = g_test_run(); ret = g_test_run();
g_rmdir(ts.dst_tpm_path); tpm_util_rmdir(ts.dst_tpm_path);
g_free(ts.dst_tpm_path); g_free(ts.dst_tpm_path);
g_rmdir(ts.src_tpm_path); tpm_util_rmdir(ts.src_tpm_path);
g_free(ts.src_tpm_path); g_free(ts.src_tpm_path);
g_free(ts.uri); g_free(ts.uri);

View File

@ -13,7 +13,6 @@
*/ */
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include <glib/gstdio.h>
#include "libqtest.h" #include "libqtest.h"
#include "qemu/module.h" #include "qemu/module.h"
@ -61,9 +60,9 @@ int main(int argc, char **argv)
tpm_tis_swtpm_migration_test); tpm_tis_swtpm_migration_test);
ret = g_test_run(); ret = g_test_run();
g_rmdir(ts.dst_tpm_path); tpm_util_rmdir(ts.dst_tpm_path);
g_free(ts.dst_tpm_path); g_free(ts.dst_tpm_path);
g_rmdir(ts.src_tpm_path); tpm_util_rmdir(ts.src_tpm_path);
g_free(ts.src_tpm_path); g_free(ts.src_tpm_path);
g_free(ts.uri); g_free(ts.uri);

View File

@ -13,6 +13,7 @@
*/ */
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include <glib/gstdio.h>
#include "hw/acpi/tpm.h" #include "hw/acpi/tpm.h"
#include "libqtest.h" #include "libqtest.h"
@ -292,3 +293,21 @@ void tpm_util_migration_start_qemu(QTestState **src_qemu,
g_free(src_qemu_args); g_free(src_qemu_args);
g_free(dst_qemu_args); g_free(dst_qemu_args);
} }
/* Remove directory with remainders of swtpm */
void tpm_util_rmdir(const char *path)
{
char *filename;
int ret;
filename = g_strdup_printf("%s/tpm2-00.permall", path);
g_unlink(filename);
g_free(filename);
filename = g_strdup_printf("%s/.lock", path);
g_unlink(filename);
g_free(filename);
ret = g_rmdir(path);
g_assert(!ret);
}

View File

@ -53,5 +53,6 @@ void tpm_util_migration_start_qemu(QTestState **src_qemu,
const char *machine_options); const char *machine_options);
void tpm_util_wait_for_migration_complete(QTestState *who); void tpm_util_wait_for_migration_complete(QTestState *who);
void tpm_util_rmdir(const char *path);
#endif /* TESTS_TPM_UTIL_H */ #endif /* TESTS_TPM_UTIL_H */

View File

@ -1,6 +1,13 @@
S390X_SRC=$(SRC_PATH)/tests/tcg/s390x S390X_SRC=$(SRC_PATH)/tests/tcg/s390x
VPATH+=$(S390X_SRC) VPATH+=$(S390X_SRC)
CFLAGS+=-march=zEC12 -m64 CFLAGS+=-march=zEC12 -m64
config-cc.mak: Makefile
$(quiet-@)( \
$(call cc-option,-march=z14, CROSS_CC_HAS_Z14); \
$(call cc-option,-march=z15, CROSS_CC_HAS_Z15)) 3> config-cc.mak
-include config-cc.mak
TESTS+=hello-s390x TESTS+=hello-s390x
TESTS+=csst TESTS+=csst
TESTS+=ipm TESTS+=ipm
@ -18,20 +25,24 @@ TESTS+=signals-s390x
TESTS+=branch-relative-long TESTS+=branch-relative-long
TESTS+=noexec TESTS+=noexec
Z13_TESTS=vistr
$(Z13_TESTS): CFLAGS+=-march=z13 -O2
TESTS+=$(Z13_TESTS)
ifneq ($(CROSS_CC_HAS_Z14),)
Z14_TESTS=vfminmax Z14_TESTS=vfminmax
vfminmax: LDFLAGS+=-lm vfminmax: LDFLAGS+=-lm
$(Z14_TESTS): CFLAGS+=-march=z14 -O2 $(Z14_TESTS): CFLAGS+=-march=z14 -O2
TESTS+=$(Z14_TESTS)
endif
TESTS+=$(if $(shell $(CC) -march=z14 -S -o /dev/null -xc /dev/null \ ifneq ($(CROSS_CC_HAS_Z15),)
>/dev/null 2>&1 && echo OK),$(Z14_TESTS)) Z15_TESTS=vxeh2_vs
Z15_TESTS+=vxeh2_vcvt
VECTOR_TESTS=vxeh2_vs Z15_TESTS+=vxeh2_vlstr
VECTOR_TESTS+=vxeh2_vcvt $(Z15_TESTS): CFLAGS+=-march=z15 -O2
VECTOR_TESTS+=vxeh2_vlstr TESTS+=$(Z15_TESTS)
$(VECTOR_TESTS): CFLAGS+=-march=z15 -O2 endif
TESTS+=$(if $(shell $(CC) -march=z15 -S -o /dev/null -xc /dev/null \
>/dev/null 2>&1 && echo OK),$(VECTOR_TESTS))
ifneq ($(HAVE_GDB_BIN),) ifneq ($(HAVE_GDB_BIN),)
GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py

45
tests/tcg/s390x/vistr.c Normal file
View File

@ -0,0 +1,45 @@
/*
* Test the VECTOR ISOLATE STRING (vistr) instruction
*/
#include <stdint.h>
#include <stdio.h>
#include "vx.h"
static inline void vistr(S390Vector *v1, S390Vector *v2,
const uint8_t m3, const uint8_t m5)
{
asm volatile("vistr %[v1], %[v2], %[m3], %[m5]\n"
: [v1] "=v" (v1->v)
: [v2] "v" (v2->v)
, [m3] "i" (m3)
, [m5] "i" (m5)
: "cc");
}
int main(int argc, char *argv[])
{
S390Vector vd = {};
S390Vector vs16 = {
.h[0] = 0x1234, .h[1] = 0x0056, .h[2] = 0x7800, .h[3] = 0x0000,
.h[4] = 0x0078, .h[5] = 0x0000, .h[6] = 0x6543, .h[7] = 0x2100
};
S390Vector vs32 = {
.w[0] = 0x12340000, .w[1] = 0x78654300,
.w[2] = 0x0, .w[3] = 0x12,
};
vistr(&vd, &vs16, 1, 0);
if (vd.h[0] != 0x1234 || vd.h[1] != 0x0056 || vd.h[2] != 0x7800 ||
vd.h[3] || vd.h[4] || vd.h[5] || vd.h[6] || vd.h[7]) {
puts("ERROR: vitrh failed!");
return 1;
}
vistr(&vd, &vs32, 2, 0);
if (vd.w[0] != 0x12340000 || vd.w[1] != 0x78654300 || vd.w[2] || vd.w[3]) {
puts("ERROR: vitrf failed!");
return 1;
}
return 0;
}

View File

@ -66,6 +66,9 @@ class FreeBSDVM(basevm.BaseVM):
# libs: networking # libs: networking
"libslirp", "libslirp",
# libs: sndio
"sndio",
] ]
BUILD_SCRIPT = """ BUILD_SCRIPT = """

View File

@ -22,8 +22,8 @@ class OpenBSDVM(basevm.BaseVM):
name = "openbsd" name = "openbsd"
arch = "x86_64" arch = "x86_64"
link = "https://cdn.openbsd.org/pub/OpenBSD/7.1/amd64/install71.iso" link = "https://cdn.openbsd.org/pub/OpenBSD/7.2/amd64/install72.iso"
csum = "d3a7c5b9bf890bc404304a1c96f9ee72e1d9bbcf9cc849c1133bdb0d67843396" csum = "0369ef40a3329efcb978c578c7fdc7bda71e502aecec930a74b44160928c91d3"
size = "20G" size = "20G"
pkgs = [ pkgs = [
# tools # tools
@ -56,6 +56,9 @@ class OpenBSDVM(basevm.BaseVM):
# libs: migration # libs: migration
"zstd", "zstd",
# libs: networking
"libslirp",
] ]
BUILD_SCRIPT = """ BUILD_SCRIPT = """

View File

@ -502,6 +502,28 @@ int qemu_accept(int s, struct sockaddr *addr, socklen_t *addrlen)
return ret; return ret;
} }
ssize_t qemu_send_full(int s, const void *buf, size_t count)
{
ssize_t ret = 0;
ssize_t total = 0;
while (count) {
ret = send(s, buf, count, 0);
if (ret < 0) {
if (errno == EINTR) {
continue;
}
break;
}
count -= ret;
buf += ret;
total += ret;
}
return total;
}
void qemu_set_hw_version(const char *version) void qemu_set_hw_version(const char *version)
{ {
hw_version = version; hw_version = version;