- Rebase to QEMU 10.1.0 [RHEL-105035] - Resolves: RHEL-105035 (Rebase qemu-kvm to QEMU 10.1.0)
196 lines
8.8 KiB
Diff
196 lines
8.8 KiB
Diff
From 0bc1a45f789d1aa6b75496739a77dbc77fc2492c Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
|
|
Date: Wed, 3 Jul 2024 15:27:03 +0100
|
|
Subject: Adapt versioned machine type macros for RHEL
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
The versioned machine type macros are changed thus:
|
|
|
|
* All symbol names get 'rhel' inserted eg 'virt_rhel_macine_9_4_0_<blah>'
|
|
* All machine type names get 'rhel' inserted eg 'virt-rhel9.4.0-machine'
|
|
* Lifecycle is changed to deprecate after 1 major RHEL release,
|
|
force non-registration (effectively deletion) after 2 major releases
|
|
* Custom message to explain RHEL deprecation/deletion policy
|
|
* Remove upstream logic that temporarily disabled deletion since
|
|
the upstream constraints in this area don't apply to RHEL
|
|
* For automatic deprecation/deletion, RHEL_VERSION is defined
|
|
|
|
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
|
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
---
|
|
Rebase changes (10.1.0 rc0):
|
|
- Added deprecetion limits change to docs/conf.py
|
|
---
|
|
.distro/Makefile | 2 +-
|
|
.distro/Makefile.common | 1 +
|
|
.distro/qemu-kvm.spec.template | 1 +
|
|
.distro/scripts/process-patches.sh | 3 +++
|
|
docs/conf.py | 4 +--
|
|
include/hw/boards.h | 39 ++++++++++++------------------
|
|
meson.build | 1 +
|
|
meson_options.txt | 2 ++
|
|
scripts/meson-buildoptions.sh | 2 ++
|
|
9 files changed, 29 insertions(+), 26 deletions(-)
|
|
|
|
diff --git a/docs/conf.py b/docs/conf.py
|
|
index f892a6e1da..0b8861e4bf 100644
|
|
--- a/docs/conf.py
|
|
+++ b/docs/conf.py
|
|
@@ -140,8 +140,8 @@
|
|
# MACHINE_VER_DELETION_MAJOR & MACHINE_VER_DEPRECATION_MAJOR
|
|
# defined in include/hw/boards.h and the introductory text in
|
|
# docs/about/deprecated.rst
|
|
-ver_machine_deprecation_version = "%d.%d.0" % (major - 3, minor)
|
|
-ver_machine_deletion_version = "%d.%d.0" % (major - 6, minor)
|
|
+ver_machine_deprecation_version = "%d.%d.0" % (major - 1, minor)
|
|
+ver_machine_deletion_version = "%d.%d.0" % (major - 2, minor)
|
|
|
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
|
# for a list of supported languages.
|
|
diff --git a/include/hw/boards.h b/include/hw/boards.h
|
|
index a434b21909..da2fc92ce8 100644
|
|
--- a/include/hw/boards.h
|
|
+++ b/include/hw/boards.h
|
|
@@ -577,16 +577,16 @@ struct MachineState {
|
|
* "{prefix}-{major}.{minor}.{micro}-{tag}"
|
|
*/
|
|
#define _MACHINE_VER_TYPE_NAME2(prefix, major, minor) \
|
|
- prefix "-" #major "." #minor TYPE_MACHINE_SUFFIX
|
|
+ prefix "-rhel" #major "." #minor TYPE_MACHINE_SUFFIX
|
|
|
|
#define _MACHINE_VER_TYPE_NAME3(prefix, major, minor, micro) \
|
|
- prefix "-" #major "." #minor "." #micro TYPE_MACHINE_SUFFIX
|
|
+ prefix "-rhel" #major "." #minor "." #micro TYPE_MACHINE_SUFFIX
|
|
|
|
#define _MACHINE_VER_TYPE_NAME4(prefix, major, minor, _unused_, tag) \
|
|
- prefix "-" #major "." #minor "-" #tag TYPE_MACHINE_SUFFIX
|
|
+ prefix "-rhel" #major "." #minor "-" #tag TYPE_MACHINE_SUFFIX
|
|
|
|
#define _MACHINE_VER_TYPE_NAME5(prefix, major, minor, micro, _unused_, tag) \
|
|
- prefix "-" #major "." #minor "." #micro "-" #tag TYPE_MACHINE_SUFFIX
|
|
+ prefix "-rhel" #major "." #minor "." #micro "-" #tag TYPE_MACHINE_SUFFIX
|
|
|
|
#define MACHINE_VER_TYPE_NAME(prefix, ...) \
|
|
_MACHINE_VER_PICK(__VA_ARGS__, \
|
|
@@ -614,16 +614,16 @@ struct MachineState {
|
|
* {prefix}_machine_{major}_{minor}_{micro}_{tag}_{sym}
|
|
*/
|
|
#define _MACHINE_VER_SYM2(sym, prefix, major, minor) \
|
|
- prefix ## _machine_ ## major ## _ ## minor ## _ ## sym
|
|
+ prefix ## _rhel_machine_ ## major ## _ ## minor ## _ ## sym
|
|
|
|
#define _MACHINE_VER_SYM3(sym, prefix, major, minor, micro) \
|
|
- prefix ## _machine_ ## major ## _ ## minor ## _ ## micro ## _ ## sym
|
|
+ prefix ## _rhel_machine_ ## major ## _ ## minor ## _ ## micro ## _ ## sym
|
|
|
|
#define _MACHINE_VER_SYM4(sym, prefix, major, minor, _unused_, tag) \
|
|
- prefix ## _machine_ ## major ## _ ## minor ## _ ## tag ## _ ## sym
|
|
+ prefix ## _rhel_machine_ ## major ## _ ## minor ## _ ## tag ## _ ## sym
|
|
|
|
#define _MACHINE_VER_SYM5(sym, prefix, major, minor, micro, _unused_, tag) \
|
|
- prefix ## _machine_ ## major ## _ ## minor ## _ ## micro ## _ ## tag ## _ ## sym
|
|
+ prefix ## _rhel_machine_ ## major ## _ ## minor ## _ ## micro ## _ ## tag ## _ ## sym
|
|
|
|
#define MACHINE_VER_SYM(sym, prefix, ...) \
|
|
_MACHINE_VER_PICK(__VA_ARGS__, \
|
|
@@ -642,17 +642,16 @@ struct MachineState {
|
|
* and ver_machine_deletion_version logic in docs/conf.py and
|
|
* the text in docs/about/deprecated.rst
|
|
*/
|
|
-#define MACHINE_VER_DELETION_MAJOR 6
|
|
-#define MACHINE_VER_DEPRECATION_MAJOR 3
|
|
+#define MACHINE_VER_DELETION_MAJOR 2
|
|
+#define MACHINE_VER_DEPRECATION_MAJOR 1
|
|
|
|
/*
|
|
* Expands to a static string containing a deprecation
|
|
* message for a versioned machine type
|
|
*/
|
|
#define MACHINE_VER_DEPRECATION_MSG \
|
|
- "machines more than " stringify(MACHINE_VER_DEPRECATION_MAJOR) \
|
|
- " years old are subject to deletion after " \
|
|
- stringify(MACHINE_VER_DELETION_MAJOR) " years"
|
|
+ "machines from the previous RHEL major release are " \
|
|
+ "subject to deletion in the next RHEL major release"
|
|
|
|
#define _MACHINE_VER_IS_CURRENT_EXPIRED(cutoff, major, minor) \
|
|
(((QEMU_VERSION_MAJOR - major) > cutoff) || \
|
|
@@ -683,12 +682,7 @@ struct MachineState {
|
|
* If this ever changes the logic below will need modifying....
|
|
*/
|
|
#define _MACHINE_VER_IS_EXPIRED_IMPL(cutoff, major, minor) \
|
|
- ((QEMU_VERSION_MICRO < 50 && \
|
|
- _MACHINE_VER_IS_CURRENT_EXPIRED(cutoff, major, minor)) || \
|
|
- (QEMU_VERSION_MICRO >= 50 && QEMU_VERSION_MINOR < 2 && \
|
|
- _MACHINE_VER_IS_NEXT_MINOR_EXPIRED(cutoff, major, minor)) || \
|
|
- (QEMU_VERSION_MICRO >= 50 && QEMU_VERSION_MINOR == 2 && \
|
|
- _MACHINE_VER_IS_NEXT_MAJOR_EXPIRED(cutoff, major, minor)))
|
|
+ ((RHEL_VERSION - major) >= cutoff)
|
|
|
|
#define _MACHINE_VER_IS_EXPIRED2(cutoff, major, minor) \
|
|
_MACHINE_VER_IS_EXPIRED_IMPL(cutoff, major, minor)
|
|
@@ -750,10 +744,9 @@ struct MachineState {
|
|
* This must be unconditionally used in the register
|
|
* method for all machine types which support versioning.
|
|
*
|
|
- * Inijtially it will effectively be a no-op, but after a
|
|
- * suitable period of time has passed, it will cause
|
|
- * execution of the method to return, avoiding registration
|
|
- * of the machine
|
|
+ * It will automatically avoid registration of machines
|
|
+ * that should have been deleted at the start of this
|
|
+ * RHEL release
|
|
*/
|
|
#define MACHINE_VER_DELETION(...) \
|
|
do { \
|
|
diff --git a/meson.build b/meson.build
|
|
index 0e0120a613..23494666d9 100644
|
|
--- a/meson.build
|
|
+++ b/meson.build
|
|
@@ -2636,6 +2636,7 @@ config_host_data.set('QEMU_VERSION', '"@0@"'.format(meson.project_version()))
|
|
config_host_data.set('QEMU_VERSION_MAJOR', meson.project_version().split('.')[0])
|
|
config_host_data.set('QEMU_VERSION_MINOR', meson.project_version().split('.')[1])
|
|
config_host_data.set('QEMU_VERSION_MICRO', meson.project_version().split('.')[2])
|
|
+config_host_data.set('RHEL_VERSION', get_option('rhel_version').split('.')[0])
|
|
|
|
config_host_data.set_quoted('CONFIG_HOST_DSOSUF', host_dsosuf)
|
|
config_host_data.set('HAVE_HOST_BLOCK_DEVICE', have_host_block_device)
|
|
diff --git a/meson_options.txt b/meson_options.txt
|
|
index fff1521e58..f45d7ded45 100644
|
|
--- a/meson_options.txt
|
|
+++ b/meson_options.txt
|
|
@@ -2,6 +2,8 @@
|
|
# on the configure script command line. If you add more, list them in
|
|
# scripts/meson-buildoptions.py's SKIP_OPTIONS constant too.
|
|
|
|
+option('rhel_version', type: 'string', value: '0.0',
|
|
+ description: 'RHEL major/minor version')
|
|
option('qemu_suffix', type : 'string', value: 'qemu',
|
|
description: 'Suffix for QEMU data/modules/config directories (can be empty)')
|
|
option('docdir', type : 'string', value : 'share/doc',
|
|
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
|
|
index 0ebe6bc52a..4146dbc88d 100644
|
|
--- a/scripts/meson-buildoptions.sh
|
|
+++ b/scripts/meson-buildoptions.sh
|
|
@@ -75,6 +75,7 @@ meson_options_help() {
|
|
printf "%s\n" ' [QEMU]'
|
|
printf "%s\n" ' --qemu-ga-version=VALUE version number for qemu-ga installer'
|
|
printf "%s\n" ' --rtsig-map=VALUE default value of QEMU_RTSIG_MAP [NULL]'
|
|
+ printf "%s\n" ' --rhel-version=VALUE RHEL major/minor version [0.0]'
|
|
printf "%s\n" ' --smbd=VALUE Path to smbd for slirp networking'
|
|
printf "%s\n" ' --sysconfdir=VALUE Sysconf data directory [etc]'
|
|
printf "%s\n" ' --tls-priority=VALUE Default TLS protocol/cipher priority string'
|
|
@@ -465,6 +466,7 @@ _meson_option_parse() {
|
|
--disable-relocatable) printf "%s" -Drelocatable=false ;;
|
|
--enable-replication) printf "%s" -Dreplication=enabled ;;
|
|
--disable-replication) printf "%s" -Dreplication=disabled ;;
|
|
+ --rhel-version=*) quote_sh "-Drhel_version=$2" ;;
|
|
--enable-rng-none) printf "%s" -Drng_none=true ;;
|
|
--disable-rng-none) printf "%s" -Drng_none=false ;;
|
|
--rtsig-map=*) quote_sh "-Drtsig_map=$2" ;;
|
|
--
|
|
2.39.3
|
|
|