mirror of https://github.com/xemu-project/xemu.git
* build system fixes and cleanups
* use subproject() for the dtc and keycodemapdb submodules * fix virtio memory leak * update slirp.wrap to latest commit in the master branch -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmRwi6cUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroO3awf9GsLa0sip+lUsV2JgzZGm2mL7Fo9A kBbuehaT+5gI2PGY6Sp1RVdDnf/JS4HkU11TBBVYFpJdDwqerCNcprgOO3Y5Mung Ukg93FgdvORlbTyfnMXNUe8dDaoTe6kvN1kTm+zhzMCJDTSCgZRqWc4Fh5oNg+No pupeR7hjW6nEKSnYVhjP7LjSOteJfR9aeKT/bxRaQpmlegeGVC6RZ1naZtRHY6le Y8KeKoelgBkEGPk5MnmFhnrITwYrfV0g2uP4Jinr5GildC8E/ZSmxo5h1TUqkQFA /MKuIt6cRBitCHyYQLiXY+MZc6AkS3tsAhCo41Nknb4nylKeWgPHBIAWxA== =NRBc -----END PGP SIGNATURE----- Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging * build system fixes and cleanups * use subproject() for the dtc and keycodemapdb submodules * fix virtio memory leak * update slirp.wrap to latest commit in the master branch # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmRwi6cUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroO3awf9GsLa0sip+lUsV2JgzZGm2mL7Fo9A # kBbuehaT+5gI2PGY6Sp1RVdDnf/JS4HkU11TBBVYFpJdDwqerCNcprgOO3Y5Mung # Ukg93FgdvORlbTyfnMXNUe8dDaoTe6kvN1kTm+zhzMCJDTSCgZRqWc4Fh5oNg+No # pupeR7hjW6nEKSnYVhjP7LjSOteJfR9aeKT/bxRaQpmlegeGVC6RZ1naZtRHY6le # Y8KeKoelgBkEGPk5MnmFhnrITwYrfV0g2uP4Jinr5GildC8E/ZSmxo5h1TUqkQFA # /MKuIt6cRBitCHyYQLiXY+MZc6AkS3tsAhCo41Nknb4nylKeWgPHBIAWxA== # =NRBc # -----END PGP SIGNATURE----- # gpg: Signature made Fri 26 May 2023 03:36:23 AM PDT # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [undefined] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * tag 'for-upstream' of https://gitlab.com/bonzini/qemu: configure: ignore --make meson: use subproject for keycodemapdb meson: use subproject for internal libfdt meson: simplify logic for -Dfdt virtio: qmp: fix memory leak slirp: update wrap to latest master meson: Add static glib dependency for initrd-stress.img meson: Remove leftover comment configure: unset harmful environment variables Makefile: remove $(TESTS_PYTHON) tests/vm: fix and simplify HOST_ARCH definition tests/docker: simplify HOST_ARCH definition Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
ac84b57b4d
|
@ -13,8 +13,8 @@
|
|||
[submodule "roms/qemu-palcode"]
|
||||
path = roms/qemu-palcode
|
||||
url = https://gitlab.com/qemu-project/qemu-palcode.git
|
||||
[submodule "dtc"]
|
||||
path = dtc
|
||||
[submodule "subprojects/dtc"]
|
||||
path = subprojects/dtc
|
||||
url = https://gitlab.com/qemu-project/dtc.git
|
||||
[submodule "roms/u-boot"]
|
||||
path = roms/u-boot
|
||||
|
@ -25,8 +25,8 @@
|
|||
[submodule "roms/QemuMacDrivers"]
|
||||
path = roms/QemuMacDrivers
|
||||
url = https://gitlab.com/qemu-project/QemuMacDrivers.git
|
||||
[submodule "ui/keycodemapdb"]
|
||||
path = ui/keycodemapdb
|
||||
[submodule "subprojects/keycodemapdb"]
|
||||
path = subprojects/keycodemapdb
|
||||
url = https://gitlab.com/qemu-project/keycodemapdb.git
|
||||
[submodule "roms/seabios-hppa"]
|
||||
path = roms/seabios-hppa
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
#
|
||||
|
||||
# Unset some variables known to interfere with behavior of common tools,
|
||||
# just as autoconf does.
|
||||
CLICOLOR_FORCE= GREP_OPTIONS=
|
||||
unset CLICOLOR_FORCE GREP_OPTIONS
|
||||
# just as autoconf does. Unlike autoconf, we assume that unset exists.
|
||||
unset CLICOLOR_FORCE GREP_OPTIONS BASH_ENV ENV MAIL MAILPATH CDPATH
|
||||
|
||||
# Don't allow CCACHE, if present, to use cached results of compile tests!
|
||||
export CCACHE_RECACHE=yes
|
||||
|
@ -254,7 +253,7 @@ else
|
|||
git_submodules_action="ignore"
|
||||
fi
|
||||
|
||||
git_submodules="ui/keycodemapdb"
|
||||
git_submodules="subprojects/keycodemapdb"
|
||||
git="git"
|
||||
debug_tcg="no"
|
||||
docs="auto"
|
||||
|
@ -401,20 +400,16 @@ gnu/kfreebsd)
|
|||
;;
|
||||
freebsd)
|
||||
bsd="yes"
|
||||
make="${MAKE-gmake}"
|
||||
# needed for kinfo_getvmmap(3) in libutil.h
|
||||
;;
|
||||
dragonfly)
|
||||
bsd="yes"
|
||||
make="${MAKE-gmake}"
|
||||
;;
|
||||
netbsd)
|
||||
bsd="yes"
|
||||
make="${MAKE-gmake}"
|
||||
;;
|
||||
openbsd)
|
||||
bsd="yes"
|
||||
make="${MAKE-gmake}"
|
||||
;;
|
||||
darwin)
|
||||
bsd="yes"
|
||||
|
@ -422,7 +417,6 @@ darwin)
|
|||
;;
|
||||
sunos)
|
||||
solaris="yes"
|
||||
make="${MAKE-gmake}"
|
||||
;;
|
||||
haiku)
|
||||
pie="no"
|
||||
|
@ -526,9 +520,6 @@ case "$cpu" in
|
|||
CPU_CFLAGS="-m64 -mcpu=ultrasparc" ;;
|
||||
esac
|
||||
|
||||
: ${make=${MAKE-make}}
|
||||
|
||||
|
||||
check_py_version() {
|
||||
# We require python >= 3.7.
|
||||
# NB: a True python conditional creates a non-zero return code (Failure)
|
||||
|
@ -631,7 +622,7 @@ for opt do
|
|||
;;
|
||||
--objcc=*)
|
||||
;;
|
||||
--make=*) make="$optarg"
|
||||
--make=*)
|
||||
;;
|
||||
--install=*)
|
||||
;;
|
||||
|
@ -806,7 +797,7 @@ case $git_submodules_action in
|
|||
fi
|
||||
;;
|
||||
ignore)
|
||||
if ! test -f "$source_path/ui/keycodemapdb/README"
|
||||
if ! test -f "$source_path/subprojects/keycodemapdb/README"
|
||||
then
|
||||
echo
|
||||
echo "ERROR: missing GIT submodules"
|
||||
|
@ -898,7 +889,6 @@ Advanced options (experts only):
|
|||
--cross-cc-ARCH=CC use compiler when building ARCH guest test cases
|
||||
--cross-cc-cflags-ARCH= use compiler flags when building ARCH guest tests
|
||||
--cross-prefix-ARCH=PREFIX cross compiler prefix when building ARCH guest test cases
|
||||
--make=MAKE use specified make [$make]
|
||||
--python=PYTHON use specified python [$python]
|
||||
--ninja=NINJA use specified ninja [$ninja]
|
||||
--smbd=SMBD use specified smbd [$smbd]
|
||||
|
@ -951,11 +941,6 @@ then
|
|||
fi
|
||||
fi
|
||||
|
||||
if ! has "$make"
|
||||
then
|
||||
error_exit "GNU make ($make) not found"
|
||||
fi
|
||||
|
||||
if ! check_py_version "$python"; then
|
||||
error_exit "Cannot use '$python', Python >= 3.7 is required." \
|
||||
"Use --python=/path/to/python to specify a supported Python." \
|
||||
|
@ -1188,7 +1173,7 @@ fi
|
|||
case "$fdt" in
|
||||
auto | enabled | internal)
|
||||
# Simpler to always update submodule, even if not needed.
|
||||
git_submodules="${git_submodules} dtc"
|
||||
git_submodules="${git_submodules} subprojects/dtc"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -1778,7 +1763,6 @@ if test "$container" != no; then
|
|||
echo "RUNC=$runc" >> $config_host_mak
|
||||
fi
|
||||
echo "ROMS=$roms" >> $config_host_mak
|
||||
echo "MAKE=$make" >> $config_host_mak
|
||||
echo "PYTHON=$python" >> $config_host_mak
|
||||
echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
|
||||
echo "MESON=$meson" >> $config_host_mak
|
||||
|
@ -2031,7 +2015,6 @@ preserve_env CXXFLAGS
|
|||
preserve_env LD
|
||||
preserve_env LDFLAGS
|
||||
preserve_env LD_LIBRARY_PATH
|
||||
preserve_env MAKE
|
||||
preserve_env NM
|
||||
preserve_env OBJCFLAGS
|
||||
preserve_env OBJCOPY
|
||||
|
|
|
@ -668,7 +668,7 @@ VirtioDeviceFeatures *qmp_decode_features(uint16_t device_id, uint64_t bitmap)
|
|||
VirtioInfoList *qmp_x_query_virtio(Error **errp)
|
||||
{
|
||||
VirtioInfoList *list = NULL;
|
||||
VirtioInfoList *node;
|
||||
VirtioInfo *node;
|
||||
VirtIODevice *vdev;
|
||||
|
||||
QTAILQ_FOREACH(vdev, &virtio_list, next) {
|
||||
|
@ -682,11 +682,10 @@ VirtioInfoList *qmp_x_query_virtio(Error **errp)
|
|||
if (!strncmp(is_realized->str, "false", 4)) {
|
||||
QTAILQ_REMOVE(&virtio_list, vdev, next);
|
||||
} else {
|
||||
node = g_new0(VirtioInfoList, 1);
|
||||
node->value = g_new(VirtioInfo, 1);
|
||||
node->value->path = g_strdup(dev->canonical_path);
|
||||
node->value->name = g_strdup(vdev->name);
|
||||
QAPI_LIST_PREPEND(list, node->value);
|
||||
node = g_new(VirtioInfo, 1);
|
||||
node->path = g_strdup(dev->canonical_path);
|
||||
node->name = g_strdup(vdev->name);
|
||||
QAPI_LIST_PREPEND(list, node);
|
||||
}
|
||||
g_string_free(is_realized, true);
|
||||
}
|
||||
|
|
54
meson.build
54
meson.build
|
@ -404,8 +404,6 @@ if targetos != 'sunos' and not get_option('tsan')
|
|||
qemu_ldflags += cc.get_supported_link_arguments('-Wl,--warn-common')
|
||||
endif
|
||||
|
||||
# Specify linker-script with add_project_link_arguments so that it is not placed
|
||||
# within a linker --start-group/--end-group pair
|
||||
if get_option('fuzzing')
|
||||
# Specify a filter to only instrument code that is directly related to
|
||||
# virtual-devices.
|
||||
|
@ -3061,13 +3059,14 @@ if have_system and vfio_user_server_allowed
|
|||
endif
|
||||
|
||||
fdt = not_found
|
||||
if have_system
|
||||
fdt_opt = get_option('fdt')
|
||||
fdt_opt = get_option('fdt')
|
||||
if fdt_required.length() > 0 or fdt_opt == 'enabled'
|
||||
if fdt_opt == 'disabled'
|
||||
error('fdt disabled but required by targets ' + ', '.join(fdt_required))
|
||||
endif
|
||||
|
||||
if fdt_opt in ['enabled', 'auto', 'system']
|
||||
have_internal = fs.exists(meson.current_source_dir() / 'dtc/libfdt/Makefile.libfdt')
|
||||
fdt = cc.find_library('fdt',
|
||||
required: fdt_opt == 'system' or
|
||||
fdt_opt == 'enabled' and not have_internal)
|
||||
fdt = cc.find_library('fdt', required: fdt_opt == 'system')
|
||||
if fdt.found() and cc.links('''
|
||||
#include <libfdt.h>
|
||||
#include <libfdt_env.h>
|
||||
|
@ -3076,41 +3075,27 @@ if have_system
|
|||
fdt_opt = 'system'
|
||||
elif fdt_opt == 'system'
|
||||
error('system libfdt requested, but it is too old (1.5.1 or newer required)')
|
||||
elif have_internal
|
||||
fdt_opt = 'internal'
|
||||
else
|
||||
fdt_opt = 'disabled'
|
||||
fdt_opt = 'internal'
|
||||
fdt = not_found
|
||||
endif
|
||||
endif
|
||||
if fdt_opt == 'internal'
|
||||
fdt_files = files(
|
||||
'dtc/libfdt/fdt.c',
|
||||
'dtc/libfdt/fdt_ro.c',
|
||||
'dtc/libfdt/fdt_wip.c',
|
||||
'dtc/libfdt/fdt_sw.c',
|
||||
'dtc/libfdt/fdt_rw.c',
|
||||
'dtc/libfdt/fdt_strerror.c',
|
||||
'dtc/libfdt/fdt_empty_tree.c',
|
||||
'dtc/libfdt/fdt_addresses.c',
|
||||
'dtc/libfdt/fdt_overlay.c',
|
||||
'dtc/libfdt/fdt_check.c',
|
||||
)
|
||||
if not fdt.found()
|
||||
assert(fdt_opt == 'internal')
|
||||
have_internal = fs.exists(meson.current_source_dir() / 'subprojects/dtc/meson.build')
|
||||
|
||||
fdt_inc = include_directories('dtc/libfdt')
|
||||
libfdt = static_library('fdt',
|
||||
build_by_default: false,
|
||||
sources: fdt_files,
|
||||
include_directories: fdt_inc)
|
||||
fdt = declare_dependency(link_with: libfdt,
|
||||
include_directories: fdt_inc)
|
||||
if not have_internal
|
||||
error('libfdt source not found - please pull git submodule')
|
||||
endif
|
||||
|
||||
libfdt_proj = subproject('dtc', required: true,
|
||||
default_options: ['tools=false', 'yaml=disabled',
|
||||
'python=disabled', 'default_library=static'])
|
||||
fdt = libfdt_proj.get_variable('libfdt_dep')
|
||||
endif
|
||||
else
|
||||
fdt_opt = 'disabled'
|
||||
endif
|
||||
if not fdt.found() and fdt_required.length() > 0
|
||||
error('fdt not available but required by targets ' + ', '.join(fdt_required))
|
||||
endif
|
||||
|
||||
config_host_data.set('CONFIG_CAPSTONE', capstone.found())
|
||||
config_host_data.set('CONFIG_FDT', fdt.found())
|
||||
|
@ -4043,7 +4028,6 @@ summary(summary_info, bool_yn: true, section: 'Directories')
|
|||
# Host binaries
|
||||
summary_info = {}
|
||||
summary_info += {'git': config_host['GIT']}
|
||||
summary_info += {'make': config_host['MAKE']}
|
||||
summary_info += {'python': '@0@ (version: @1@)'.format(python.full_path(), python.language_version())}
|
||||
summary_info += {'sphinx-build': sphinx_build}
|
||||
if config_host.has_key('HAVE_GDB_BIN')
|
||||
|
|
|
@ -26,7 +26,7 @@ sub_file="${sub_tdir}/submodule.tar"
|
|||
# independent of what the developer currently has initialized
|
||||
# in their checkout, because the build environment is completely
|
||||
# different to the host OS.
|
||||
submodules="dtc ui/keycodemapdb"
|
||||
submodules="subprojects/dtc subprojects/keycodemapdb"
|
||||
submodules="$submodules tests/fp/berkeley-softfloat-3 tests/fp/berkeley-testfloat-3"
|
||||
sub_deinit=""
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[wrap-git]
|
||||
url = https://gitlab.freedesktop.org/slirp/libslirp
|
||||
revision = 15c52d697529eb3e78c5d8aa324d61715bce33b6
|
||||
revision = 26be815b86e8d49add8c9a8b320239b9594ff03d
|
||||
|
||||
[provide]
|
||||
slirp = libslirp_dep
|
||||
|
|
|
@ -89,11 +89,9 @@ distclean-tcg: $(DISTCLEAN_TCG_TARGET_RULES)
|
|||
# Build up our target list from the filtered list of ninja targets
|
||||
TARGETS=$(patsubst libqemu-%.fa, %, $(filter libqemu-%.fa, $(ninja-targets)))
|
||||
|
||||
TESTS_VENV_DIR=$(BUILD_DIR)/pyvenv
|
||||
TESTS_VENV_TOKEN=$(BUILD_DIR)/pyvenv/tests.group
|
||||
TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt
|
||||
TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results
|
||||
TESTS_PYTHON=$(TESTS_VENV_DIR)/bin/python3
|
||||
ifndef AVOCADO_TESTS
|
||||
AVOCADO_TESTS=tests/avocado
|
||||
endif
|
||||
|
@ -109,7 +107,7 @@ else
|
|||
endif
|
||||
|
||||
quiet-venv-pip = $(quiet-@)$(call quiet-command-run, \
|
||||
$(TESTS_PYTHON) -m pip -q --disable-pip-version-check $1, \
|
||||
$(PYTHON) -m pip -q --disable-pip-version-check $1, \
|
||||
"VENVPIP","$1")
|
||||
|
||||
$(TESTS_VENV_TOKEN): $(TESTS_VENV_REQ)
|
||||
|
@ -131,7 +129,7 @@ FEDORA_31_DOWNLOAD=$(filter $(FEDORA_31_ARCHES),$(FEDORA_31_ARCHES_CANDIDATES))
|
|||
# download one specific Fedora 31 image
|
||||
get-vm-image-fedora-31-%: check-venv
|
||||
$(call quiet-command, \
|
||||
$(TESTS_PYTHON) -m avocado vmimage get \
|
||||
$(PYTHON) -m avocado vmimage get \
|
||||
--distro=fedora --distro-version=31 --arch=$*, \
|
||||
"AVOCADO", "Downloading avocado tests VM image for $*")
|
||||
|
||||
|
@ -142,7 +140,7 @@ JOBS_OPTION=$(lastword -j1 $(filter-out -j, $(filter -j%,$(MAKEFLAGS))))
|
|||
|
||||
check-avocado: check-venv $(TESTS_RESULTS_DIR) get-vm-images
|
||||
$(call quiet-command, \
|
||||
$(TESTS_PYTHON) -m avocado \
|
||||
$(PYTHON) -m avocado \
|
||||
--show=$(AVOCADO_SHOW) run --job-results-dir=$(TESTS_RESULTS_DIR) \
|
||||
$(if $(AVOCADO_TAGS),, \
|
||||
--filter-by-tags-include-empty \
|
||||
|
|
|
@ -6,7 +6,7 @@ NULL :=
|
|||
SPACE := $(NULL) #
|
||||
COMMA := ,
|
||||
|
||||
HOST_ARCH = $(if $(ARCH),$(ARCH),$(shell uname -m))
|
||||
HOST_ARCH = $(shell uname -m)
|
||||
USER = $(if $(NOUSER),,$(shell id -un))
|
||||
UID = $(if $(NOUSER),,$(shell id -u))
|
||||
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
sysprof = dependency('sysprof-capture-4', required: false)
|
||||
glib_static = dependency('glib-2.0', version: glib_req_ver, required: false,
|
||||
method: 'pkg-config', static: true)
|
||||
|
||||
stress = executable(
|
||||
'stress',
|
||||
files('stress.c'),
|
||||
dependencies: [glib, sysprof],
|
||||
dependencies: [glib_static, sysprof],
|
||||
link_args: ['-static'],
|
||||
build_by_default: false,
|
||||
)
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
# Makefile for VM tests
|
||||
|
||||
# Hack to allow running in an unconfigured build tree
|
||||
ifeq ($(wildcard $(SRC_PATH)/config-host.mak),)
|
||||
ifeq ($(realpath $(SRC_PATH)),$(realpath .))
|
||||
VM_PYTHON = PYTHONPATH=$(SRC_PATH)/python /usr/bin/env python3
|
||||
VM_VENV =
|
||||
HOST_ARCH := $(shell uname -m)
|
||||
else
|
||||
VM_PYTHON = $(TESTS_PYTHON)
|
||||
VM_PYTHON = $(PYTHON)
|
||||
VM_VENV = check-venv
|
||||
HOST_ARCH = $(ARCH)
|
||||
endif
|
||||
|
||||
.PHONY: vm-build-all vm-clean-all
|
||||
|
@ -23,6 +21,7 @@ ARM64_IMAGES += ubuntu.aarch64 centos.aarch64
|
|||
endif
|
||||
endif
|
||||
|
||||
HOST_ARCH = $(shell uname -m)
|
||||
ifeq ($(HOST_ARCH),x86_64)
|
||||
IMAGES=$(X86_IMAGES) $(if $(USE_TCG),$(ARM64_IMAGES))
|
||||
else ifeq ($(HOST_ARCH),aarch64)
|
||||
|
|
|
@ -162,15 +162,15 @@ keymaps = [
|
|||
]
|
||||
|
||||
if have_system or xkbcommon.found()
|
||||
keycodemapdb_proj = subproject('keycodemapdb', required: true)
|
||||
foreach e : keymaps
|
||||
output = 'input-keymap-@0@-to-@1@.c.inc'.format(e[0], e[1])
|
||||
genh += custom_target(output,
|
||||
output: output,
|
||||
capture: true,
|
||||
input: files('keycodemapdb/data/keymaps.csv'),
|
||||
command: [python, files('keycodemapdb/tools/keymap-gen'),
|
||||
'code-map',
|
||||
'--lang', 'glib2',
|
||||
input: keycodemapdb_proj.get_variable('keymaps_csv'),
|
||||
command: [python, keycodemapdb_proj.get_variable('keymap_gen').full_path(),
|
||||
'code-map', '--lang', 'glib2',
|
||||
'--varname', 'qemu_input_map_@0@_to_@1@'.format(e[0], e[1]),
|
||||
'@INPUT0@', e[0], e[1]])
|
||||
endforeach
|
||||
|
|
Loading…
Reference in New Issue