mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge remote-tracking branch 'remotes/stsquad/tags/pull-testing-and-semihosting-280222-1' into staging
Testing and semihosting updates: - restore TESTS/IMAGES filtering to docker tests - add NOUSER to alpine image - bump lcitool version - move arm64/s390x cross build images to lcitool - add aarch32 runner CI scripts - expand testing to more vectors - update s390x jobs to focal for gitlab/travis - disable threadcount for all sh4 - fix semihosting SYS_HEAPINFO and test # gpg: Signature made Mon 28 Feb 2022 18:46:41 GMT # gpg: using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44 # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [full] # Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44 * remotes/stsquad/tags/pull-testing-and-semihosting-280222-1: tests/tcg: port SYS_HEAPINFO to a system test semihosting/arm-compat: replace heuristic for softmmu SYS_HEAPINFO tests/tcg: completely disable threadcount for sh4 gitlab: upgrade the job definition for s390x to 20.04 travis.yml: Update the s390x jobs to Ubuntu Focal tests/tcg: add vectorised sha512 versions tests/tcg: add sha512 test tests/tcg: build sha1-vector with O3 and compare tests/tcg/ppc64: clean-up handling of byte-reverse gitlab: add a new aarch32 custom runner definition scripts/ci: allow for a secondary runner scripts/ci: add build env rules for aarch32 on aarch64 tests/docker: introduce debian-riscv64-test-cross tests/docker: update debian-s390x-cross with lcitool tests/docker: update debian-arm64-cross with lcitool tests/lcitool: update to latest version tests/docker: add NOUSER for alpine image tests/docker: restore TESTS/IMAGES filtering Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
@@ -21,18 +21,10 @@ amd64-debian-user-cross-container:
|
||||
|
||||
arm64-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-arm64-cross
|
||||
|
||||
arm64-test-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian11-container']
|
||||
variables:
|
||||
NAME: debian-arm64-test-cross
|
||||
|
||||
armel-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
@@ -139,10 +131,16 @@ riscv64-debian-cross-container:
|
||||
variables:
|
||||
NAME: debian-riscv64-cross
|
||||
|
||||
s390x-debian-cross-container:
|
||||
# we can however build TCG tests using a non-sid base
|
||||
riscv64-debian-test-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
variables:
|
||||
NAME: debian-riscv64-test-cross
|
||||
|
||||
s390x-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-s390x-cross
|
||||
|
||||
|
||||
@@ -14,6 +14,6 @@ variables:
|
||||
GIT_STRATEGY: clone
|
||||
|
||||
include:
|
||||
- local: '/.gitlab-ci.d/custom-runners/ubuntu-18.04-s390x.yml'
|
||||
- local: '/.gitlab-ci.d/custom-runners/ubuntu-20.04-s390x.yml'
|
||||
- local: '/.gitlab-ci.d/custom-runners/ubuntu-20.04-aarch64.yml'
|
||||
- local: '/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml'
|
||||
|
||||
+14
-14
@@ -1,12 +1,12 @@
|
||||
# All ubuntu-18.04 jobs should run successfully in an environment
|
||||
# All ubuntu-20.04 jobs should run successfully in an environment
|
||||
# setup by the scripts/ci/setup/build-environment.yml task
|
||||
# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
|
||||
# "Install basic packages to build QEMU on Ubuntu 20.04/20.04"
|
||||
|
||||
ubuntu-18.04-s390x-all-linux-static:
|
||||
ubuntu-20.04-s390x-all-linux-static:
|
||||
needs: []
|
||||
stage: build
|
||||
tags:
|
||||
- ubuntu_18.04
|
||||
- ubuntu_20.04
|
||||
- s390x
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
|
||||
@@ -21,11 +21,11 @@ ubuntu-18.04-s390x-all-linux-static:
|
||||
- make --output-sync -j`nproc` check V=1
|
||||
- make --output-sync -j`nproc` check-tcg V=1
|
||||
|
||||
ubuntu-18.04-s390x-all:
|
||||
ubuntu-20.04-s390x-all:
|
||||
needs: []
|
||||
stage: build
|
||||
tags:
|
||||
- ubuntu_18.04
|
||||
- ubuntu_20.04
|
||||
- s390x
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
|
||||
@@ -37,11 +37,11 @@ ubuntu-18.04-s390x-all:
|
||||
- make --output-sync -j`nproc`
|
||||
- make --output-sync -j`nproc` check V=1
|
||||
|
||||
ubuntu-18.04-s390x-alldbg:
|
||||
ubuntu-20.04-s390x-alldbg:
|
||||
needs: []
|
||||
stage: build
|
||||
tags:
|
||||
- ubuntu_18.04
|
||||
- ubuntu_20.04
|
||||
- s390x
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
|
||||
@@ -58,11 +58,11 @@ ubuntu-18.04-s390x-alldbg:
|
||||
- make --output-sync -j`nproc`
|
||||
- make --output-sync -j`nproc` check V=1
|
||||
|
||||
ubuntu-18.04-s390x-clang:
|
||||
ubuntu-20.04-s390x-clang:
|
||||
needs: []
|
||||
stage: build
|
||||
tags:
|
||||
- ubuntu_18.04
|
||||
- ubuntu_20.04
|
||||
- s390x
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
|
||||
@@ -78,11 +78,11 @@ ubuntu-18.04-s390x-clang:
|
||||
- make --output-sync -j`nproc`
|
||||
- make --output-sync -j`nproc` check V=1
|
||||
|
||||
ubuntu-18.04-s390x-tci:
|
||||
ubuntu-20.04-s390x-tci:
|
||||
needs: []
|
||||
stage: build
|
||||
tags:
|
||||
- ubuntu_18.04
|
||||
- ubuntu_20.04
|
||||
- s390x
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
|
||||
@@ -97,11 +97,11 @@ ubuntu-18.04-s390x-tci:
|
||||
- ../configure --disable-libssh --enable-tcg-interpreter
|
||||
- make --output-sync -j`nproc`
|
||||
|
||||
ubuntu-18.04-s390x-notcg:
|
||||
ubuntu-20.04-s390x-notcg:
|
||||
needs: []
|
||||
stage: build
|
||||
tags:
|
||||
- ubuntu_18.04
|
||||
- ubuntu_20.04
|
||||
- s390x
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
|
||||
@@ -0,0 +1,23 @@
|
||||
# All ubuntu-20.04 jobs should run successfully in an environment
|
||||
# setup by the scripts/ci/setup/qemu/build-environment.yml task
|
||||
# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
|
||||
|
||||
ubuntu-20.04-aarch32-all:
|
||||
needs: []
|
||||
stage: build
|
||||
tags:
|
||||
- ubuntu_20.04
|
||||
- aarch32
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
|
||||
when: manual
|
||||
allow_failure: true
|
||||
- if: "$AARCH32_RUNNER_AVAILABLE"
|
||||
when: manual
|
||||
allow_failure: true
|
||||
script:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --cross-prefix=arm-linux-gnueabihf-
|
||||
- make --output-sync -j`nproc`
|
||||
- make --output-sync -j`nproc` check V=1
|
||||
@@ -3549,6 +3549,7 @@ S: Maintained
|
||||
F: semihosting/
|
||||
F: include/semihosting/
|
||||
F: tests/tcg/multiarch/arm-compat-semi/
|
||||
F: tests/tcg/aarch64/system/semiheap.c
|
||||
|
||||
Multi-process QEMU
|
||||
M: Elena Ufimtseva <elena.ufimtseva@oracle.com>
|
||||
|
||||
@@ -44,6 +44,13 @@ If you've got access to an aarch64 host that can be used as a gitlab-CI
|
||||
runner, you can set this variable to enable the tests that require this
|
||||
kind of host. The runner should be tagged with "aarch64".
|
||||
|
||||
AARCH32_RUNNER_AVAILABLE
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
If you've got access to an armhf host or an arch64 host that can run
|
||||
aarch32 EL0 code to be used as a gitlab-CI runner, you can set this
|
||||
variable to enable the tests that require this kind of host. The
|
||||
runner should be tagged with "aarch32".
|
||||
|
||||
S390X_RUNNER_AVAILABLE
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
If you've got access to an IBM Z host that can be used as a gitlab-CI
|
||||
|
||||
@@ -1333,6 +1333,92 @@ static Rom *find_rom(hwaddr addr, size_t size)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
typedef struct RomSec {
|
||||
hwaddr base;
|
||||
int se; /* start/end flag */
|
||||
} RomSec;
|
||||
|
||||
|
||||
/*
|
||||
* Sort into address order. We break ties between rom-startpoints
|
||||
* and rom-endpoints in favour of the startpoint, by sorting the 0->1
|
||||
* transition before the 1->0 transition. Either way round would
|
||||
* work, but this way saves a little work later by avoiding
|
||||
* dealing with "gaps" of 0 length.
|
||||
*/
|
||||
static gint sort_secs(gconstpointer a, gconstpointer b)
|
||||
{
|
||||
RomSec *ra = (RomSec *) a;
|
||||
RomSec *rb = (RomSec *) b;
|
||||
|
||||
if (ra->base == rb->base) {
|
||||
return ra->se - rb->se;
|
||||
}
|
||||
return ra->base > rb->base ? 1 : -1;
|
||||
}
|
||||
|
||||
static GList *add_romsec_to_list(GList *secs, hwaddr base, int se)
|
||||
{
|
||||
RomSec *cand = g_new(RomSec, 1);
|
||||
cand->base = base;
|
||||
cand->se = se;
|
||||
return g_list_prepend(secs, cand);
|
||||
}
|
||||
|
||||
RomGap rom_find_largest_gap_between(hwaddr base, size_t size)
|
||||
{
|
||||
Rom *rom;
|
||||
RomSec *cand;
|
||||
RomGap res = {0, 0};
|
||||
hwaddr gapstart = base;
|
||||
GList *it, *secs = NULL;
|
||||
int count = 0;
|
||||
|
||||
QTAILQ_FOREACH(rom, &roms, next) {
|
||||
/* Ignore blobs being loaded to special places */
|
||||
if (rom->mr || rom->fw_file) {
|
||||
continue;
|
||||
}
|
||||
/* ignore anything finishing bellow base */
|
||||
if (rom->addr + rom->romsize <= base) {
|
||||
continue;
|
||||
}
|
||||
/* ignore anything starting above the region */
|
||||
if (rom->addr >= base + size) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Save the start and end of each relevant ROM */
|
||||
secs = add_romsec_to_list(secs, rom->addr, 1);
|
||||
|
||||
if (rom->addr + rom->romsize < base + size) {
|
||||
secs = add_romsec_to_list(secs, rom->addr + rom->romsize, -1);
|
||||
}
|
||||
}
|
||||
|
||||
/* sentinel */
|
||||
secs = add_romsec_to_list(secs, base + size, 1);
|
||||
|
||||
secs = g_list_sort(secs, sort_secs);
|
||||
|
||||
for (it = g_list_first(secs); it; it = g_list_next(it)) {
|
||||
cand = (RomSec *) it->data;
|
||||
if (count == 0 && count + cand->se == 1) {
|
||||
size_t gap = cand->base - gapstart;
|
||||
if (gap > res.size) {
|
||||
res.base = gapstart;
|
||||
res.size = gap;
|
||||
}
|
||||
} else if (count == 1 && count + cand->se == 0) {
|
||||
gapstart = cand->base;
|
||||
}
|
||||
count += cand->se;
|
||||
}
|
||||
|
||||
g_list_free_full(secs, g_free);
|
||||
return res;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copies memory from registered ROMs to dest. Any memory that is contained in
|
||||
* a ROM between addr and addr + size is copied. Note that this can involve
|
||||
|
||||
@@ -343,4 +343,18 @@ int rom_add_option(const char *file, int32_t bootindex);
|
||||
* overflow on real hardware too. */
|
||||
#define UBOOT_MAX_GUNZIP_BYTES (64 << 20)
|
||||
|
||||
typedef struct RomGap {
|
||||
hwaddr base;
|
||||
size_t size;
|
||||
} RomGap;
|
||||
|
||||
/**
|
||||
* rom_find_largest_gap_between: return largest gap between ROMs in given range
|
||||
*
|
||||
* Given a range of addresses, this function finds the largest
|
||||
* contiguous subrange which has no ROMs loaded to it. That is,
|
||||
* it finds the biggest gap which is free for use for other things.
|
||||
*/
|
||||
RomGap rom_find_largest_gap_between(hwaddr base, size_t size);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -19,6 +19,13 @@
|
||||
- '((ansible_version.major == 2) and (ansible_version.minor >= 8)) or (ansible_version.major >= 3)'
|
||||
msg: "Unsuitable ansible version, please use version 2.8.0 or later"
|
||||
|
||||
- name: Add armhf foreign architecture to aarch64 hosts
|
||||
command: dpkg --add-architecture armhf
|
||||
when:
|
||||
- ansible_facts['distribution'] == 'Ubuntu'
|
||||
- ansible_facts['architecture'] == 'aarch64'
|
||||
- ansible_facts['distribution_version'] == '20.04'
|
||||
|
||||
- name: Update apt cache / upgrade packages via apt
|
||||
apt:
|
||||
update_cache: yes
|
||||
@@ -115,6 +122,24 @@
|
||||
- ansible_facts['distribution'] == 'Ubuntu'
|
||||
- ansible_facts['distribution_version'] == '20.04'
|
||||
|
||||
- name: Install armhf cross-compile packages to build QEMU on AArch64 Ubuntu 20.04
|
||||
package:
|
||||
name:
|
||||
- binutils-arm-linux-gnueabihf
|
||||
- gcc-arm-linux-gnueabihf
|
||||
- libblkid-dev:armhf
|
||||
- libc6-dev:armhf
|
||||
- libffi-dev:armhf
|
||||
- libglib2.0-dev:armhf
|
||||
- libmount-dev:armhf
|
||||
- libpcre2-dev:armhf
|
||||
- libpixman-1-dev:armhf
|
||||
- zlib1g-dev:armhf
|
||||
when:
|
||||
- ansible_facts['distribution'] == 'Ubuntu'
|
||||
- ansible_facts['distribution_version'] == '20.04'
|
||||
- ansible_facts['architecture'] == 'aarch64'
|
||||
|
||||
- name: Install basic packages to build QEMU on EL8
|
||||
dnf:
|
||||
# This list of packages start with tests/docker/dockerfiles/centos8.docker
|
||||
|
||||
@@ -69,3 +69,41 @@
|
||||
name: gitlab-runner
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
- name: Download secondary gitlab-runner
|
||||
get_url:
|
||||
dest: /usr/local/bin/gitlab-runner-arm
|
||||
url: "https://s3.amazonaws.com/gitlab-runner-downloads/v{{ gitlab_runner_version }}/binaries/gitlab-runner-{{ gitlab_runner_os }}-arm"
|
||||
owner: gitlab-runner
|
||||
group: gitlab-runner
|
||||
mode: u=rwx,g=rwx,o=rx
|
||||
when:
|
||||
- ansible_facts['distribution'] == 'Ubuntu'
|
||||
- ansible_facts['architecture'] == 'aarch64'
|
||||
- ansible_facts['distribution_version'] == '20.04'
|
||||
|
||||
- name: Register secondary gitlab-runner
|
||||
command: "/usr/local/bin/gitlab-runner-arm register --non-interactive --url {{ gitlab_runner_server_url }} --registration-token {{ gitlab_runner_registration_token }} --executor shell --tag-list aarch32,{{ ansible_facts[\"distribution\"]|lower }}_{{ ansible_facts[\"distribution_version\"] }} --description '{{ ansible_facts[\"distribution\"] }} {{ ansible_facts[\"distribution_version\"] }} {{ ansible_facts[\"architecture\"] }} ({{ ansible_facts[\"os_family\"] }})'"
|
||||
when:
|
||||
- ansible_facts['distribution'] == 'Ubuntu'
|
||||
- ansible_facts['architecture'] == 'aarch64'
|
||||
- ansible_facts['distribution_version'] == '20.04'
|
||||
|
||||
- name: Install the secondary gitlab-runner service using its own functionality
|
||||
command: /usr/local/bin/gitlab-runner-arm install --user gitlab-runner --working-directory /home/gitlab-runner/arm -n gitlab-runner-arm
|
||||
register: gitlab_runner_install_service_result
|
||||
failed_when: "gitlab_runner_install_service_result.rc != 0 and \"already exists\" not in gitlab_runner_install_service_result.stderr"
|
||||
when:
|
||||
- ansible_facts['distribution'] == 'Ubuntu'
|
||||
- ansible_facts['architecture'] == 'aarch64'
|
||||
- ansible_facts['distribution_version'] == '20.04'
|
||||
|
||||
- name: Enable the secondary gitlab-runner service
|
||||
service:
|
||||
name: gitlab-runner-arm
|
||||
state: started
|
||||
enabled: yes
|
||||
when:
|
||||
- ansible_facts['distribution'] == 'Ubuntu'
|
||||
- ansible_facts['architecture'] == 'aarch64'
|
||||
- ansible_facts['distribution_version'] == '20.04'
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
#define COMMON_SEMI_HEAP_SIZE (128 * 1024 * 1024)
|
||||
#else
|
||||
#include "qemu/cutils.h"
|
||||
#include "hw/loader.h"
|
||||
#ifdef TARGET_ARM
|
||||
#include "hw/arm/boot.h"
|
||||
#endif
|
||||
@@ -144,33 +145,69 @@ typedef struct GuestFD {
|
||||
static GArray *guestfd_array;
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
#include "exec/address-spaces.h"
|
||||
/*
|
||||
* Find the base of a RAM region containing the specified address
|
||||
|
||||
/**
|
||||
* common_semi_find_bases: find information about ram and heap base
|
||||
*
|
||||
* This function attempts to provide meaningful numbers for RAM and
|
||||
* HEAP base addresses. The rambase is simply the lowest addressable
|
||||
* RAM position. For the heapbase we ask the loader to scan the
|
||||
* address space and the largest available gap by querying the "ROM"
|
||||
* regions.
|
||||
*
|
||||
* Returns: a structure with the numbers we need.
|
||||
*/
|
||||
static inline hwaddr
|
||||
common_semi_find_region_base(hwaddr addr)
|
||||
|
||||
typedef struct LayoutInfo {
|
||||
target_ulong rambase;
|
||||
size_t ramsize;
|
||||
hwaddr heapbase;
|
||||
hwaddr heaplimit;
|
||||
} LayoutInfo;
|
||||
|
||||
static bool find_ram_cb(Int128 start, Int128 len, const MemoryRegion *mr,
|
||||
hwaddr offset_in_region, void *opaque)
|
||||
{
|
||||
MemoryRegion *subregion;
|
||||
LayoutInfo *info = (LayoutInfo *) opaque;
|
||||
uint64_t size = int128_get64(len);
|
||||
|
||||
if (!mr->ram || mr->readonly) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (size > info->ramsize) {
|
||||
info->rambase = int128_get64(start);
|
||||
info->ramsize = size;
|
||||
}
|
||||
|
||||
/* search exhaustively for largest RAM */
|
||||
return false;
|
||||
}
|
||||
|
||||
static LayoutInfo common_semi_find_bases(CPUState *cs)
|
||||
{
|
||||
FlatView *fv;
|
||||
LayoutInfo info = { 0, 0, 0, 0 };
|
||||
|
||||
RCU_READ_LOCK_GUARD();
|
||||
|
||||
fv = address_space_to_flatview(cs->as);
|
||||
flatview_for_each_range(fv, find_ram_cb, &info);
|
||||
|
||||
/*
|
||||
* Find the chunk of R/W memory containing the address. This is
|
||||
* used for the SYS_HEAPINFO semihosting call, which should
|
||||
* probably be using information from the loaded application.
|
||||
* If we have found the RAM lets iterate through the ROM blobs to
|
||||
* work out the best place for the remainder of RAM and split it
|
||||
* equally between stack and heap.
|
||||
*/
|
||||
QTAILQ_FOREACH(subregion, &get_system_memory()->subregions,
|
||||
subregions_link) {
|
||||
if (subregion->ram && !subregion->readonly) {
|
||||
Int128 top128 = int128_add(int128_make64(subregion->addr),
|
||||
subregion->size);
|
||||
Int128 addr128 = int128_make64(addr);
|
||||
if (subregion->addr <= addr && int128_lt(addr128, top128)) {
|
||||
return subregion->addr;
|
||||
}
|
||||
}
|
||||
if (info.rambase || info.ramsize > 0) {
|
||||
RomGap gap = rom_find_largest_gap_between(info.rambase, info.ramsize);
|
||||
info.heapbase = gap.base;
|
||||
info.heaplimit = gap.base + gap.size;
|
||||
}
|
||||
return 0;
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef TARGET_ARM
|
||||
@@ -204,28 +241,6 @@ common_semi_sys_exit_extended(CPUState *cs, int nr)
|
||||
return (nr == TARGET_SYS_EXIT_EXTENDED || is_a64(cs->env_ptr));
|
||||
}
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
#include "hw/arm/boot.h"
|
||||
static inline target_ulong
|
||||
common_semi_rambase(CPUState *cs)
|
||||
{
|
||||
CPUArchState *env = cs->env_ptr;
|
||||
const struct arm_boot_info *info = env->boot_info;
|
||||
target_ulong sp;
|
||||
|
||||
if (info) {
|
||||
return info->loader_start;
|
||||
}
|
||||
|
||||
if (is_a64(env)) {
|
||||
sp = env->xregs[31];
|
||||
} else {
|
||||
sp = env->regs[13];
|
||||
}
|
||||
return common_semi_find_region_base(sp);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TARGET_ARM */
|
||||
|
||||
#ifdef TARGET_RISCV
|
||||
@@ -251,17 +266,6 @@ common_semi_sys_exit_extended(CPUState *cs, int nr)
|
||||
return (nr == TARGET_SYS_EXIT_EXTENDED || sizeof(target_ulong) == 8);
|
||||
}
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
|
||||
static inline target_ulong
|
||||
common_semi_rambase(CPUState *cs)
|
||||
{
|
||||
RISCVCPU *cpu = RISCV_CPU(cs);
|
||||
CPURISCVState *env = &cpu->env;
|
||||
return common_semi_find_region_base(env->gpr[xSP]);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -1165,12 +1169,12 @@ target_ulong do_common_semihosting(CPUState *cs)
|
||||
case TARGET_SYS_HEAPINFO:
|
||||
{
|
||||
target_ulong retvals[4];
|
||||
target_ulong limit;
|
||||
int i;
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
TaskState *ts = cs->opaque;
|
||||
target_ulong limit;
|
||||
#else
|
||||
target_ulong rambase = common_semi_rambase(cs);
|
||||
LayoutInfo info = common_semi_find_bases(cs);
|
||||
#endif
|
||||
|
||||
GET_ARG(0);
|
||||
@@ -1201,12 +1205,10 @@ target_ulong do_common_semihosting(CPUState *cs)
|
||||
retvals[2] = ts->stack_base;
|
||||
retvals[3] = 0; /* Stack limit. */
|
||||
#else
|
||||
limit = current_machine->ram_size;
|
||||
/* TODO: Make this use the limit of the loaded application. */
|
||||
retvals[0] = rambase + limit / 2;
|
||||
retvals[1] = rambase + limit;
|
||||
retvals[2] = rambase + limit; /* Stack base */
|
||||
retvals[3] = rambase; /* Stack limit. */
|
||||
retvals[0] = info.heapbase; /* Heap Base */
|
||||
retvals[1] = info.heaplimit; /* Heap Limit */
|
||||
retvals[2] = info.heaplimit; /* Stack base */
|
||||
retvals[3] = info.heapbase; /* Stack limit. */
|
||||
#endif
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(retvals); i++) {
|
||||
|
||||
@@ -8,13 +8,19 @@ COMMA := ,
|
||||
|
||||
HOST_ARCH = $(if $(ARCH),$(ARCH),$(shell uname -m))
|
||||
|
||||
# These variables can be set by the user to limit the set of docker
|
||||
# images and tests to a more restricted subset
|
||||
TESTS ?= %
|
||||
IMAGES ?= %
|
||||
|
||||
DOCKER_SUFFIX := .docker
|
||||
DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles
|
||||
# we don't run tests on intermediate images (used as base by another image)
|
||||
DOCKER_PARTIAL_IMAGES := debian10 debian11
|
||||
# we don't directly build virtual images (they are used to build other images)
|
||||
DOCKER_VIRTUAL_IMAGES := debian-bootstrap debian-toolchain empty
|
||||
DOCKER_IMAGES := $(sort $(filter-out $(DOCKER_VIRTUAL_IMAGES), $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker)))))
|
||||
__IMAGES := $(sort $(filter-out $(DOCKER_VIRTUAL_IMAGES), $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker)))))
|
||||
DOCKER_IMAGES := $(if $(IMAGES), $(filter $(IMAGES), $(__IMAGES)), $(__IMAGES))
|
||||
DOCKER_TARGETS := $(patsubst %,docker-image-%,$(DOCKER_IMAGES))
|
||||
# Use a global constant ccache directory to speed up repetitive builds
|
||||
DOCKER_CCACHE_DIR := $$HOME/.cache/qemu-docker-ccache
|
||||
@@ -23,16 +29,14 @@ DOCKER_DEFAULT_REGISTRY := registry.gitlab.com/qemu-project/qemu
|
||||
endif
|
||||
DOCKER_REGISTRY := $(if $(REGISTRY),$(REGISTRY),$(DOCKER_DEFAULT_REGISTRY))
|
||||
|
||||
DOCKER_TESTS := $(notdir $(shell \
|
||||
find $(SRC_PATH)/tests/docker/ -name 'test-*' -type f))
|
||||
__TESTS := $(notdir $(shell \
|
||||
find $(SRC_PATH)/tests/docker/ -name 'test-*' -type f))
|
||||
DOCKER_TESTS := $(if $(TESTS), $(filter $(TESTS), $(__TESTS)), $(__TESTS))
|
||||
|
||||
ENGINE := auto
|
||||
|
||||
DOCKER_SCRIPT=$(SRC_PATH)/tests/docker/docker.py --engine $(ENGINE)
|
||||
|
||||
TESTS ?= %
|
||||
IMAGES ?= %
|
||||
|
||||
CUR_TIME := $(shell date +%Y-%m-%d-%H.%M.%S.$$$$)
|
||||
DOCKER_SRC_COPY := $(BUILD_DIR)/docker-src.$(CUR_TIME)
|
||||
|
||||
@@ -133,7 +137,6 @@ DOCKER_PARTIAL_IMAGES += fedora
|
||||
endif
|
||||
|
||||
docker-image-debian-alpha-cross: docker-image-debian10
|
||||
docker-image-debian-arm64-cross: docker-image-debian10
|
||||
docker-image-debian-armel-cross: docker-image-debian10
|
||||
docker-image-debian-armhf-cross: docker-image-debian10
|
||||
docker-image-debian-hppa-cross: docker-image-debian10
|
||||
@@ -143,7 +146,6 @@ docker-image-debian-mips64-cross: docker-image-debian10
|
||||
docker-image-debian-mips64el-cross: docker-image-debian10
|
||||
docker-image-debian-mipsel-cross: docker-image-debian10
|
||||
docker-image-debian-ppc64el-cross: docker-image-debian10
|
||||
docker-image-debian-s390x-cross: docker-image-debian10
|
||||
docker-image-debian-sh4-cross: docker-image-debian10
|
||||
docker-image-debian-sparc64-cross: docker-image-debian10
|
||||
|
||||
@@ -154,6 +156,9 @@ docker-image-debian-native: DOCKER_REGISTRY=
|
||||
docker-image-debian10: NOUSER=1
|
||||
docker-image-debian11: NOUSER=1
|
||||
|
||||
# alpine has no adduser
|
||||
docker-image-alpine: NOUSER=1
|
||||
|
||||
#
|
||||
# The build rule for hexagon-cross is special in so far for most of
|
||||
# the time we don't want to build it. While dockers caching does avoid
|
||||
@@ -206,19 +211,19 @@ docker-image-debian-nios2-cross: $(DOCKER_FILES_DIR)/debian-toolchain.docker \
|
||||
# Specialist build images, sometimes very limited tools
|
||||
docker-image-debian-tricore-cross: docker-image-debian10
|
||||
docker-image-debian-all-test-cross: docker-image-debian10
|
||||
docker-image-debian-arm64-test-cross: docker-image-debian11
|
||||
docker-image-debian-microblaze-cross: docker-image-debian10
|
||||
docker-image-debian-nios2-cross: docker-image-debian10
|
||||
docker-image-debian-powerpc-test-cross: docker-image-debian11
|
||||
docker-image-debian-riscv64-test-cross: docker-image-debian11
|
||||
|
||||
# These images may be good enough for building tests but not for test builds
|
||||
DOCKER_PARTIAL_IMAGES += debian-alpha-cross
|
||||
DOCKER_PARTIAL_IMAGES += debian-arm64-test-cross
|
||||
DOCKER_PARTIAL_IMAGES += debian-powerpc-test-cross
|
||||
DOCKER_PARTIAL_IMAGES += debian-hppa-cross
|
||||
DOCKER_PARTIAL_IMAGES += debian-m68k-cross debian-mips64-cross
|
||||
DOCKER_PARTIAL_IMAGES += debian-microblaze-cross
|
||||
DOCKER_PARTIAL_IMAGES += debian-nios2-cross
|
||||
DOCKER_PARTIAL_IMAGES += debian-riscv64-test-cross
|
||||
DOCKER_PARTIAL_IMAGES += debian-sh4-cross debian-sparc64-cross
|
||||
DOCKER_PARTIAL_IMAGES += debian-tricore-cross
|
||||
DOCKER_PARTIAL_IMAGES += debian-xtensa-cross
|
||||
@@ -274,8 +279,8 @@ endif
|
||||
@echo ' TARGET_LIST=a,b,c Override target list in builds.'
|
||||
@echo ' EXTRA_CONFIGURE_OPTS="..."'
|
||||
@echo ' Extra configure options.'
|
||||
@echo ' IMAGES="a b c ..": Filters which images to build or run.'
|
||||
@echo ' TESTS="x y z .." Filters which tests to run (for docker-test).'
|
||||
@echo ' IMAGES="a b c ..": Restrict available images to subset.'
|
||||
@echo ' TESTS="x y z .." Restrict available tests to subset.'
|
||||
@echo ' J=[0..9]* Overrides the -jN parameter for make commands'
|
||||
@echo ' (default is 1)'
|
||||
@echo ' DEBUG=1 Stop and drop to shell in the created container'
|
||||
|
||||
@@ -1,32 +1,166 @@
|
||||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# Docker arm64 cross-compiler target
|
||||
# $ lcitool dockerfile --layers all --cross aarch64 debian-11 qemu
|
||||
#
|
||||
# This docker target builds on the debian Buster base image.
|
||||
#
|
||||
FROM qemu/debian10
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
# Add the foreign architecture we want and install dependencies
|
||||
RUN dpkg --add-architecture arm64
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
crossbuild-essential-arm64
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt build-dep -yy -a arm64 --arch-only qemu
|
||||
FROM docker.io/library/debian:11-slim
|
||||
|
||||
# Specify the cross prefix for this image (see tests/docker/common.rc)
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get install -y eatmydata && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
bash \
|
||||
bc \
|
||||
bsdextrautils \
|
||||
bzip2 \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
dbus \
|
||||
debianutils \
|
||||
diffutils \
|
||||
exuberant-ctags \
|
||||
findutils \
|
||||
gcovr \
|
||||
genisoimage \
|
||||
gettext \
|
||||
git \
|
||||
hostname \
|
||||
libpcre2-dev \
|
||||
libspice-protocol-dev \
|
||||
libtest-harness-perl \
|
||||
llvm \
|
||||
locales \
|
||||
make \
|
||||
meson \
|
||||
ncat \
|
||||
ninja-build \
|
||||
openssh-client \
|
||||
perl-base \
|
||||
pkgconf \
|
||||
python3 \
|
||||
python3-numpy \
|
||||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
sparse \
|
||||
tar \
|
||||
tesseract-ocr \
|
||||
tesseract-ocr-eng \
|
||||
texinfo && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture arm64 && \
|
||||
eatmydata apt-get update && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
g++-aarch64-linux-gnu \
|
||||
gcc-aarch64-linux-gnu \
|
||||
libaio-dev:arm64 \
|
||||
libasan5:arm64 \
|
||||
libasound2-dev:arm64 \
|
||||
libattr1-dev:arm64 \
|
||||
libbpf-dev:arm64 \
|
||||
libbrlapi-dev:arm64 \
|
||||
libbz2-dev:arm64 \
|
||||
libc6-dev:arm64 \
|
||||
libcacard-dev:arm64 \
|
||||
libcap-ng-dev:arm64 \
|
||||
libcapstone-dev:arm64 \
|
||||
libcurl4-gnutls-dev:arm64 \
|
||||
libdaxctl-dev:arm64 \
|
||||
libdrm-dev:arm64 \
|
||||
libepoxy-dev:arm64 \
|
||||
libfdt-dev:arm64 \
|
||||
libffi-dev:arm64 \
|
||||
libfuse3-dev:arm64 \
|
||||
libgbm-dev:arm64 \
|
||||
libgcrypt20-dev:arm64 \
|
||||
libglib2.0-dev:arm64 \
|
||||
libglusterfs-dev:arm64 \
|
||||
libgnutls28-dev:arm64 \
|
||||
libgtk-3-dev:arm64 \
|
||||
libibumad-dev:arm64 \
|
||||
libibverbs-dev:arm64 \
|
||||
libiscsi-dev:arm64 \
|
||||
libjemalloc-dev:arm64 \
|
||||
libjpeg62-turbo-dev:arm64 \
|
||||
liblttng-ust-dev:arm64 \
|
||||
liblzo2-dev:arm64 \
|
||||
libncursesw5-dev:arm64 \
|
||||
libnfs-dev:arm64 \
|
||||
libnuma-dev:arm64 \
|
||||
libpam0g-dev:arm64 \
|
||||
libpixman-1-dev:arm64 \
|
||||
libpng-dev:arm64 \
|
||||
libpulse-dev:arm64 \
|
||||
librbd-dev:arm64 \
|
||||
librdmacm-dev:arm64 \
|
||||
libsasl2-dev:arm64 \
|
||||
libsdl2-dev:arm64 \
|
||||
libsdl2-image-dev:arm64 \
|
||||
libseccomp-dev:arm64 \
|
||||
libselinux1-dev:arm64 \
|
||||
libslirp-dev:arm64 \
|
||||
libsnappy-dev:arm64 \
|
||||
libspice-server-dev:arm64 \
|
||||
libssh-gcrypt-dev:arm64 \
|
||||
libsystemd-dev:arm64 \
|
||||
libtasn1-6-dev:arm64 \
|
||||
libubsan1:arm64 \
|
||||
libudev-dev:arm64 \
|
||||
liburing-dev:arm64 \
|
||||
libusb-1.0-0-dev:arm64 \
|
||||
libusbredirhost-dev:arm64 \
|
||||
libvdeplug-dev:arm64 \
|
||||
libvirglrenderer-dev:arm64 \
|
||||
libvte-2.91-dev:arm64 \
|
||||
libxen-dev:arm64 \
|
||||
libzstd-dev:arm64 \
|
||||
nettle-dev:arm64 \
|
||||
systemtap-sdt-dev:arm64 \
|
||||
xfslibs-dev:arm64 \
|
||||
zlib1g-dev:arm64 && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/aarch64-linux-gnu-gcc'\n\
|
||||
ar = '/usr/bin/aarch64-linux-gnu-gcc-ar'\n\
|
||||
strip = '/usr/bin/aarch64-linux-gnu-strip'\n\
|
||||
pkgconfig = '/usr/bin/aarch64-linux-gnu-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'aarch64'\n\
|
||||
cpu = 'aarch64'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/aarch64-linux-gnu && \
|
||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-c++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-cc && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-gcc
|
||||
|
||||
ENV ABI "aarch64-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=aarch64-linux-gnu-
|
||||
ENV DEF_TARGET_LIST aarch64-softmmu,aarch64-linux-user
|
||||
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
libbz2-dev:arm64 \
|
||||
liblzo2-dev:arm64 \
|
||||
librdmacm-dev:arm64 \
|
||||
libsnappy-dev:arm64 \
|
||||
libxen-dev:arm64
|
||||
|
||||
# nettle
|
||||
ENV QEMU_CONFIGURE_OPTS $QEMU_CONFIGURE_OPTS --enable-nettle
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
#
|
||||
# Docker arm64 cross-compiler target (tests only)
|
||||
#
|
||||
# This docker target builds on the debian Bullseye base image.
|
||||
#
|
||||
FROM qemu/debian11
|
||||
|
||||
# Add the foreign architecture we want and install dependencies
|
||||
RUN dpkg --add-architecture arm64
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
crossbuild-essential-arm64 gcc-10-aarch64-linux-gnu
|
||||
@@ -0,0 +1,12 @@
|
||||
#
|
||||
# Docker cross-compiler target
|
||||
#
|
||||
# This docker target builds on the Debian Bullseye base image.
|
||||
#
|
||||
FROM qemu/debian11
|
||||
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
gcc-riscv64-linux-gnu \
|
||||
libc6-dev-riscv64-cross
|
||||
@@ -1,33 +1,164 @@
|
||||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# Docker s390 cross-compiler target
|
||||
# $ lcitool dockerfile --layers all --cross s390x debian-11 qemu
|
||||
#
|
||||
# This docker target builds on the debian Stretch base image.
|
||||
#
|
||||
FROM qemu/debian10
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
# Add the s390x architecture
|
||||
RUN dpkg --add-architecture s390x
|
||||
FROM docker.io/library/debian:11-slim
|
||||
|
||||
# Grab the updated list of packages
|
||||
RUN apt update && apt dist-upgrade -yy
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
gcc-multilib-s390x-linux-gnu
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get install -y eatmydata && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
bash \
|
||||
bc \
|
||||
bsdextrautils \
|
||||
bzip2 \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
dbus \
|
||||
debianutils \
|
||||
diffutils \
|
||||
exuberant-ctags \
|
||||
findutils \
|
||||
gcovr \
|
||||
genisoimage \
|
||||
gettext \
|
||||
git \
|
||||
hostname \
|
||||
libpcre2-dev \
|
||||
libspice-protocol-dev \
|
||||
libtest-harness-perl \
|
||||
llvm \
|
||||
locales \
|
||||
make \
|
||||
meson \
|
||||
ncat \
|
||||
ninja-build \
|
||||
openssh-client \
|
||||
perl-base \
|
||||
pkgconf \
|
||||
python3 \
|
||||
python3-numpy \
|
||||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
sparse \
|
||||
tar \
|
||||
tesseract-ocr \
|
||||
tesseract-ocr-eng \
|
||||
texinfo && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt build-dep -yy -a s390x --arch-only qemu
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
# Specify the cross prefix for this image (see tests/docker/common.rc)
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture s390x && \
|
||||
eatmydata apt-get update && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
g++-s390x-linux-gnu \
|
||||
gcc-s390x-linux-gnu \
|
||||
libaio-dev:s390x \
|
||||
libasan5:s390x \
|
||||
libasound2-dev:s390x \
|
||||
libattr1-dev:s390x \
|
||||
libbpf-dev:s390x \
|
||||
libbrlapi-dev:s390x \
|
||||
libbz2-dev:s390x \
|
||||
libc6-dev:s390x \
|
||||
libcacard-dev:s390x \
|
||||
libcap-ng-dev:s390x \
|
||||
libcapstone-dev:s390x \
|
||||
libcurl4-gnutls-dev:s390x \
|
||||
libdaxctl-dev:s390x \
|
||||
libdrm-dev:s390x \
|
||||
libepoxy-dev:s390x \
|
||||
libfdt-dev:s390x \
|
||||
libffi-dev:s390x \
|
||||
libfuse3-dev:s390x \
|
||||
libgbm-dev:s390x \
|
||||
libgcrypt20-dev:s390x \
|
||||
libglib2.0-dev:s390x \
|
||||
libglusterfs-dev:s390x \
|
||||
libgnutls28-dev:s390x \
|
||||
libgtk-3-dev:s390x \
|
||||
libibumad-dev:s390x \
|
||||
libibverbs-dev:s390x \
|
||||
libiscsi-dev:s390x \
|
||||
libjemalloc-dev:s390x \
|
||||
libjpeg62-turbo-dev:s390x \
|
||||
liblttng-ust-dev:s390x \
|
||||
liblzo2-dev:s390x \
|
||||
libncursesw5-dev:s390x \
|
||||
libnfs-dev:s390x \
|
||||
libnuma-dev:s390x \
|
||||
libpam0g-dev:s390x \
|
||||
libpixman-1-dev:s390x \
|
||||
libpng-dev:s390x \
|
||||
libpulse-dev:s390x \
|
||||
librbd-dev:s390x \
|
||||
librdmacm-dev:s390x \
|
||||
libsasl2-dev:s390x \
|
||||
libsdl2-dev:s390x \
|
||||
libsdl2-image-dev:s390x \
|
||||
libseccomp-dev:s390x \
|
||||
libselinux1-dev:s390x \
|
||||
libslirp-dev:s390x \
|
||||
libsnappy-dev:s390x \
|
||||
libssh-gcrypt-dev:s390x \
|
||||
libsystemd-dev:s390x \
|
||||
libtasn1-6-dev:s390x \
|
||||
libubsan1:s390x \
|
||||
libudev-dev:s390x \
|
||||
liburing-dev:s390x \
|
||||
libusb-1.0-0-dev:s390x \
|
||||
libusbredirhost-dev:s390x \
|
||||
libvdeplug-dev:s390x \
|
||||
libvirglrenderer-dev:s390x \
|
||||
libvte-2.91-dev:s390x \
|
||||
libzstd-dev:s390x \
|
||||
nettle-dev:s390x \
|
||||
systemtap-sdt-dev:s390x \
|
||||
xfslibs-dev:s390x \
|
||||
zlib1g-dev:s390x && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/s390x-linux-gnu-gcc'\n\
|
||||
ar = '/usr/bin/s390x-linux-gnu-gcc-ar'\n\
|
||||
strip = '/usr/bin/s390x-linux-gnu-strip'\n\
|
||||
pkgconfig = '/usr/bin/s390x-linux-gnu-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 's390x'\n\
|
||||
cpu = 's390x'\n\
|
||||
endian = 'big'" > /usr/local/share/meson/cross/s390x-linux-gnu && \
|
||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-c++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-cc && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-gcc
|
||||
|
||||
ENV ABI "s390x-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=s390x-linux-gnu-
|
||||
ENV DEF_TARGET_LIST s390x-softmmu,s390x-linux-user
|
||||
|
||||
# Install extra libraries to increase code coverage
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
libbz2-dev:s390x \
|
||||
liblzo2-dev:s390x \
|
||||
librdmacm-dev:s390x \
|
||||
libsnappy-dev:s390x
|
||||
|
||||
@@ -127,8 +127,7 @@ RUN zypper update -y && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.56.0
|
||||
RUN pip3 install meson==0.56.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
|
||||
@@ -134,8 +134,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.56.0
|
||||
RUN pip3 install meson==0.56.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
|
||||
@@ -136,8 +136,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.56.0
|
||||
RUN pip3 install meson==0.56.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
|
||||
+1
-1
Submodule tests/lcitool/libvirt-ci updated: 6dd9b6fab1...f83b916d5e
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user