Dario Faggioli
5a11d17157
- Substantial rework of the spec file: * the 'make check' testsuite now runs in the %check section of the main package, not in a subpackage * switched from %setup to %autosetup * rearranged the content in order to minimize the use of %if, %ifarch, etc - Some tests are having issues when run in OBS. They seem to be due to race conditions, triggered by resource constraints on the OBS workers. Let's disable them for now, while we investigate and try to fix them. * Patches added: Disable-some-tests-that-have-problems-in.patch - Revert an upstream commit that add some qtests that are problematic for GCC12+LTO * Patches added: Revert-8dcb404bff6d9147765d7dd3e9c849337.patch - _multibuild: disable the build of qemu-testsuite. We are going to run 'make check' as part of the %check phase of the main (qemu) package, so we do not need a dedicated build any longer. - Get rid of downstream patches breaking s390 modules. Replace them with the upstream proposed and Acked (but never committed) solution (bsc#1199015) * Patches added: modules-generates-per-target-modinfo.patch modules-introduces-module_kconfig-direct.patch * Patches dropped: Fix-the-module-building-problem-for-s390.patch modules-quick-fix-a-fundamental-error-in.patch - backport patches for having coroutine work well when LTO is used * Patches added: coroutine-ucontext-use-QEMU_DEFINE_STATI.patch coroutine-use-QEMU_DEFINE_STATIC_CO_TLS.patch coroutine-win32-use-QEMU_DEFINE_STATIC_C.patch - seabios: drop patch that changes python in python2. Just go to python3 directly. * Patches dropped: seabios-use-python2-explicitly-as-needed.patch - Make temp dir (for update_git.sh) configurable - Added new subpackages (audio-dbus, ui-dbus) - Update to v7.0.0. For full release notese, see: * https://wiki.qemu.org/ChangeLog/7.0 Be sure to also check the following pages: * https://qemu-project.gitlab.io/qemu/about/removed-features.html * https://qemu-project.gitlab.io/qemu/about/deprecated.html Some notable changes: * [ARM] The virt board has gained a new control knob to disable passing a RNG seed in the DTB (dtb-kaslr-seed) * [ARM] The AST2600 SoC now supports a dummy version of the i3c device * [ARM] The virt board can now run guests with KVM on hosts with restricted IPA ranges * [ARM] The virt board now supports virtio-mem-pci * [ARM] The virt board now supports specifying the guest CPU topology * [ARM] On the virt board, we now enable PAuth when using KVM or hvf and the host CPU supports it * [RISC-V] Add support for ratified 1.0 Vector extension * [RISC-V] Support for the Zve64f and Zve32f extensions * [RISC-V] Drop support for draft 0.7.1 Vector extension * [RISC-V] Support Zfhmin and Zfh extensions * [RISC-V] RISC-V KVM support * [RISC-V] Mark Hypervisor extension as non experimental * [RISC-V] Enable Hypervisor extension by default * [x86] Support for Intel AMX. * [PCI/PCIe] Q35: fix PCIe device becoming disabled after migration when ACPI based PCI hotplug is used (6b0969f1ec) * [PCI/PCIe] initial bits of SR/IOV support (250346169) * [PCI/PCIe] arm/virt: fixed PXB interrupt routing (e609301b45) * [PCI/PCIe] arm/virt: support for virtio-mem-pci (b1b87327a9) * [virtiofs] Fix for CVE-2022-0358 - behaviour with supplementary groups and SGID directories * [virtiofs] Improved security label support * [virtiofs] The virtiofsd in qemu is now starting to be deprecated; please start using and contributing to Rust virtiofsd * Patches Added: intc-exynos4210_gic-replace-snprintf-wit.patch * Patches dropped: Python-aqmp-fix-type-definitions-for-myp.patch acpi-validate-hotplug-selector-on-access.patch block-backend-Retain-permissions-after-m.patch brotli-fix-actual-variable-array-paramet.patch doc-Add-the-SGX-numa-description.patch hw-i386-amd_iommu-Fix-maybe-uninitialize.patch hw-intc-exynos4210_gic-provide-more-room.patch hw-nvme-fix-CVE-2021-3929.patch hw-nvram-at24-return-0xff-if-1-byte-addr.patch iotest-065-explicit-compression-type.patch iotest-214-explicit-compression-type.patch iotest-302-use-img_info_log-helper.patch iotest-303-explicit-compression-type.patch iotest-39-use-_qcow2_dump_header.patch iotests-60-more-accurate-set-dirty-bit-i.patch iotests-MRCE-Write-data-to-source.patch iotests-bash-tests-filter-compression-ty.patch iotests-common.rc-introduce-_qcow2_dump_.patch iotests-declare-lack-of-support-for-comp.patch iotests-drop-qemu_img_verbose-helper.patch iotests-massive-use-_qcow2_dump_header.patch iotests-specify-some-unsupported_imgopts.patch iotests.py-filter-out-successful-output-.patch iotests.py-img_info_log-rename-imgopts-a.patch iotests.py-implement-unsupported_imgopts.patch iotests.py-qemu_img-create-support-IMGOP.patch iotests.py-rewrite-default-luks-support-.patch meson-build-all-modules-by-default.patch numa-Enable-numa-for-SGX-EPC-sections.patch numa-Support-SGX-numa-in-the-monitor-and.patch python-aqmp-Fix-negotiation-with-pre-oob.patch python-aqmp-add-SocketAddrT-to-package-r.patch python-aqmp-add-__del__-method-to-legacy.patch python-aqmp-add-_session_guard.patch python-aqmp-add-socket-bind-step-to-lega.patch python-aqmp-add-start_server-and-accept-.patch python-aqmp-copy-type-definitions-from-q.patch python-aqmp-drop-_bind_hack.patch python-aqmp-fix-docstring-typo.patch python-aqmp-fix-race-condition-in-legacy.patch python-aqmp-handle-asyncio.TimeoutError-.patch python-aqmp-refactor-_do_accept-into-two.patch python-aqmp-remove-_new_session-and-_est.patch python-aqmp-rename-AQMPError-to-QMPError.patch python-aqmp-rename-accept-to-start_serve.patch python-aqmp-split-_client_connected_cb-o.patch python-aqmp-squelch-pylint-warning-for-t.patch python-aqmp-stop-the-server-during-disco.patch python-introduce-qmp-shell-wrap-convenie.patch python-machine-raise-VMLaunchFailure-exc.patch python-move-qmp-shell-under-the-AQMP-pac.patch python-move-qmp-utilities-to-python-qemu.patch python-qmp-switch-qmp-shell-to-AQMP.patch python-support-recording-QMP-session-to-.patch python-upgrade-mypy-to-0.780.patch qcow2-simple-case-support-for-downgradin.patch qemu-binfmt-conf.sh-should-use-F-as-shor.patch tests-qemu-iotests-040-Skip-TestCommitWi.patch tests-qemu-iotests-Fix-051-for-binaries-.patch tests-qemu-iotests-testrunner-Quote-case.patch tools-virtiofsd-Add-rseq-syscall-to-the-.patch virtiofsd-Drop-membership-of-all-supplem.patch block-qdict-Fix-Werror-maybe-uninitializ.patch OBS-URL: https://build.opensuse.org/request/show/979381 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=717
135 lines
4.8 KiB
Diff
135 lines
4.8 KiB
Diff
From: "Jose R. Ziviani" <jziviani@suse.de>
|
|
Date: Tue, 28 Sep 2021 17:46:28 -0300
|
|
Subject: modules: generates per-target modinfo
|
|
|
|
Git-commit: 0000000000000000000000000000000000000000
|
|
References: bsc#1199015
|
|
|
|
This patch changes the way modinfo is generated and built. Instead of
|
|
one modinfo.c it generates one modinfo-<target>-softmmu.c per target. It
|
|
aims a fine-tune control of modules by configuring Kconfig.
|
|
|
|
Signed-off-by: Jose R. Ziviani <jziviani@suse.de>
|
|
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
|
|
---
|
|
meson.build | 25 +++++++++++++++-------
|
|
scripts/modinfo-generate.py | 42 ++++++++++++++++++++++---------------
|
|
2 files changed, 42 insertions(+), 25 deletions(-)
|
|
|
|
diff --git a/meson.build b/meson.build
|
|
index 05740dd14228fb700ecf6b793cfc..eeaa045c90402cee5ba946f321c1 100644
|
|
--- a/meson.build
|
|
+++ b/meson.build
|
|
@@ -2999,14 +2999,23 @@ foreach d, list : target_modules
|
|
endforeach
|
|
|
|
if enable_modules
|
|
- modinfo_src = custom_target('modinfo.c',
|
|
- output: 'modinfo.c',
|
|
- input: modinfo_files,
|
|
- command: [modinfo_generate, '@INPUT@'],
|
|
- capture: true)
|
|
- modinfo_lib = static_library('modinfo', modinfo_src)
|
|
- modinfo_dep = declare_dependency(link_whole: modinfo_lib)
|
|
- softmmu_ss.add(modinfo_dep)
|
|
+ foreach target : target_dirs
|
|
+ if target.endswith('-softmmu')
|
|
+ config_target = config_target_mak[target]
|
|
+ config_devices_mak = target + '-config-devices.mak'
|
|
+ modinfo_src = custom_target('modinfo-' + target + '.c',
|
|
+ output: 'modinfo-' + target + '.c',
|
|
+ input: modinfo_files,
|
|
+ command: [modinfo_generate, '--devices', config_devices_mak, '@INPUT@'],
|
|
+ capture: true)
|
|
+
|
|
+ modinfo_lib = static_library('modinfo-' + target + '.c', modinfo_src)
|
|
+ modinfo_dep = declare_dependency(link_with: modinfo_lib)
|
|
+
|
|
+ arch = config_target['TARGET_NAME'] == 'sparc64' ? 'sparc64' : config_target['TARGET_BASE_ARCH']
|
|
+ hw_arch[arch].add(modinfo_dep)
|
|
+ endif
|
|
+ endforeach
|
|
endif
|
|
|
|
nm = find_program('nm')
|
|
diff --git a/scripts/modinfo-generate.py b/scripts/modinfo-generate.py
|
|
index 689f33c0f2919508341712a1cde4..a0c09edae1009bc77964e95d585f 100755
|
|
--- a/scripts/modinfo-generate.py
|
|
+++ b/scripts/modinfo-generate.py
|
|
@@ -32,7 +32,7 @@ def parse_line(line):
|
|
continue
|
|
return (kind, data)
|
|
|
|
-def generate(name, lines):
|
|
+def generate(name, lines, core_modules):
|
|
arch = ""
|
|
objs = []
|
|
deps = []
|
|
@@ -49,7 +49,13 @@ def generate(name, lines):
|
|
elif kind == 'arch':
|
|
arch = data;
|
|
elif kind == 'kconfig':
|
|
- pass # ignore
|
|
+ # don't add a module which dependency is not enabled
|
|
+ # in kconfig
|
|
+ if data.strip() not in core_modules:
|
|
+ print(" /* module {} isn't enabled in Kconfig. */"
|
|
+ .format(data.strip()))
|
|
+ print("/* },{ */")
|
|
+ return []
|
|
else:
|
|
print("unknown:", kind)
|
|
exit(1)
|
|
@@ -60,7 +66,7 @@ def generate(name, lines):
|
|
print_array("objs", objs)
|
|
print_array("deps", deps)
|
|
print_array("opts", opts)
|
|
- print("},{");
|
|
+ print("},{")
|
|
return deps
|
|
|
|
def print_pre():
|
|
@@ -74,26 +80,28 @@ def print_post():
|
|
print("}};")
|
|
|
|
def main(args):
|
|
+ if len(args) < 3 or args[0] != '--devices':
|
|
+ print('Expected: modinfo-generate.py --devices '
|
|
+ 'config-device.mak [modinfo files]', file=sys.stderr)
|
|
+ exit(1)
|
|
+
|
|
+ # get all devices enabled in kconfig, from *-config-device.mak
|
|
+ enabled_core_modules = set()
|
|
+ with open(args[1]) as file:
|
|
+ for line in file.readlines():
|
|
+ config = line.split('=')
|
|
+ if config[1].rstrip() == 'y':
|
|
+ enabled_core_modules.add(config[0][7:]) # remove CONFIG_
|
|
+
|
|
deps = {}
|
|
print_pre()
|
|
- for modinfo in args:
|
|
+ for modinfo in args[2:]:
|
|
with open(modinfo) as f:
|
|
lines = f.readlines()
|
|
print(" /* %s */" % modinfo)
|
|
- (basename, ext) = os.path.splitext(modinfo)
|
|
- deps[basename] = generate(basename, lines)
|
|
+ (basename, _) = os.path.splitext(modinfo)
|
|
+ deps[basename] = generate(basename, lines, enabled_core_modules)
|
|
print_post()
|
|
|
|
- flattened_deps = {flat.strip('" ') for dep in deps.values() for flat in dep}
|
|
- error = False
|
|
- for dep in flattened_deps:
|
|
- if dep not in deps.keys():
|
|
- print("Dependency {} cannot be satisfied".format(dep),
|
|
- file=sys.stderr)
|
|
- error = True
|
|
-
|
|
- if error:
|
|
- exit(1)
|
|
-
|
|
if __name__ == "__main__":
|
|
main(sys.argv[1:])
|