From 0bc1a45f789d1aa6b75496739a77dbc77fc2492c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= 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_' * 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é Signed-off-by: Miroslav Rezanina --- 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