From 68bc088ccdd5adc00026b10ab7a04d45f9715b81 Mon Sep 17 00:00:00 2001 From: Jonathon Jongsma Date: Tue, 25 Jun 2024 11:28:11 -0500 Subject: [PATCH] virt-manager-4.1.0-7.el10 - cloner: Sync and system uuid (RHEL-34608) - virtinstall: fix regression with --boot and no install method (RHEL-34608) - progress: Fix showing correct final total (RHEL-34608) - virtinstall: Fix the allocating disk size printed by the progress bar (RHEL-34608) - virtinstall: Hide total_size in the progress bar if it doesn't need (RHEL-34608) - virt-install: Recommend '--boot uefi' (RHEL-34608) - virt-install: Document Secure Boot setups (RHEL-34608) - tests: Add more cloud-init and TPM test cases (RHEL-34608) - installer: drop default TPM for --cloud-init install phase (RHEL-34608) - Add gating for centos stream 10 (RHEL-34608) - xmleditor: make gtksourceview optional (RHEL-35859) Resolves: RHEL-34608, RHEL-35859 --- gating.yaml | 6 + ...er-Sync-uuid-and-sysinfo-system-uuid.patch | 97 +++ ...ult-TPM-for-cloud-init-install-phase.patch | 148 ++++ ...ress-Fix-showing-correct-final-total.patch | 125 ++++ ...d-more-cloud-init-and-TPM-test-cases.patch | 652 ++++++++++++++++++ ...-install-Document-Secure-Boot-setups.patch | 61 ++ ...ger-virt-install-Recommend-boot-uefi.patch | 41 ++ ...isk-size-printed-by-the-progress-bar.patch | 38 + ...-the-progress-bar-if-it-doesn-t-need.patch | 86 +++ ...sion-with-boot-and-no-install-method.patch | 57 ++ ...mleditor-make-gtksourceview-optional.patch | 79 +++ virt-manager.spec | 39 +- 12 files changed, 1424 insertions(+), 5 deletions(-) create mode 100644 gating.yaml create mode 100644 virt-manager-cloner-Sync-uuid-and-sysinfo-system-uuid.patch create mode 100644 virt-manager-installer-drop-default-TPM-for-cloud-init-install-phase.patch create mode 100644 virt-manager-progress-Fix-showing-correct-final-total.patch create mode 100644 virt-manager-tests-Add-more-cloud-init-and-TPM-test-cases.patch create mode 100644 virt-manager-virt-install-Document-Secure-Boot-setups.patch create mode 100644 virt-manager-virt-install-Recommend-boot-uefi.patch create mode 100644 virt-manager-virtinstall-Fix-the-allocating-disk-size-printed-by-the-progress-bar.patch create mode 100644 virt-manager-virtinstall-Hide-total_size-in-the-progress-bar-if-it-doesn-t-need.patch create mode 100644 virt-manager-virtinstall-fix-regression-with-boot-and-no-install-method.patch create mode 100644 virt-manager-xmleditor-make-gtksourceview-optional.patch diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..6e046f8 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,6 @@ +--- !Policy +product_versions: + - rhel-10 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: libvirt-ci.virt-install.brew-build.gating.x86_64.tier1.functional} diff --git a/virt-manager-cloner-Sync-uuid-and-sysinfo-system-uuid.patch b/virt-manager-cloner-Sync-uuid-and-sysinfo-system-uuid.patch new file mode 100644 index 0000000..02210c1 --- /dev/null +++ b/virt-manager-cloner-Sync-uuid-and-sysinfo-system-uuid.patch @@ -0,0 +1,97 @@ +From 98e015cf5d87599e3bc70a11d9c8cfe635004c1c Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Sun, 21 Aug 2022 16:21:10 -0400 +Subject: [PATCH] cloner: Sync and system uuid + +Otherwise libvirt errors like: + +ERROR UUID mismatch between and + +https://bugzilla.redhat.com/show_bug.cgi?id=2038040 + +Signed-off-by: Cole Robinson +(cherry picked from commit b0d0516736320315a70f74aff3759fb35dd35d9d) + +Resolves: https://issues.redhat.com/browse/RHEL-34608 +Signed-off-by: Jonathon Jongsma +--- + tests/data/cli/compare/virt-clone-auto-unmanaged.xml | 5 +++++ + tests/data/cli/compare/virt-clone-unmanaged-preserve.xml | 5 +++++ + tests/data/cli/virtclone/clone-disk.xml | 5 +++++ + virtinst/cloner.py | 6 ++++-- + 4 files changed, 19 insertions(+), 2 deletions(-) + +diff --git a/tests/data/cli/compare/virt-clone-auto-unmanaged.xml b/tests/data/cli/compare/virt-clone-auto-unmanaged.xml +index 21a9a6398..f2043be25 100644 +--- a/tests/data/cli/compare/virt-clone-auto-unmanaged.xml ++++ b/tests/data/cli/compare/virt-clone-auto-unmanaged.xml +@@ -1,6 +1,11 @@ + + origtest-clone + 00000000-1111-2222-3333-444444444444 ++ ++ ++ 00000000-1111-2222-3333-444444444444 ++ ++ + 8388608 + 2097152 + 2 +diff --git a/tests/data/cli/compare/virt-clone-unmanaged-preserve.xml b/tests/data/cli/compare/virt-clone-unmanaged-preserve.xml +index 3bdbbbe36..c003ed3ee 100644 +--- a/tests/data/cli/compare/virt-clone-unmanaged-preserve.xml ++++ b/tests/data/cli/compare/virt-clone-unmanaged-preserve.xml +@@ -1,6 +1,11 @@ + + clonetest + 00000000-1111-2222-3333-444444444444 ++ ++ ++ 00000000-1111-2222-3333-444444444444 ++ ++ + 8388608 + 2097152 + 2 +diff --git a/tests/data/cli/virtclone/clone-disk.xml b/tests/data/cli/virtclone/clone-disk.xml +index da1eb0a63..2f6e916d7 100644 +--- a/tests/data/cli/virtclone/clone-disk.xml ++++ b/tests/data/cli/virtclone/clone-disk.xml +@@ -1,6 +1,11 @@ + + origtest + db69fa1f-eef0-e567-3c20-3ef16f10376b ++ ++ ++ db69fa1f-eef0-e567-3c20-3ef16f10376b ++ ++ + 8388608 + 2097152 + 2 +diff --git a/virtinst/cloner.py b/virtinst/cloner.py +index 34a702f91..9334513c5 100644 +--- a/virtinst/cloner.py ++++ b/virtinst/cloner.py +@@ -352,8 +352,7 @@ class Cloner(object): + """ + self._new_guest.id = None + self._new_guest.title = None +- self._new_guest.uuid = None +- self._new_guest.uuid = Guest.generate_uuid(self.conn) ++ self.set_clone_uuid(Guest.generate_uuid(self.conn)) + + for dev in self._new_guest.devices.graphics: + if dev.port and dev.port != -1: +@@ -408,6 +407,9 @@ class Cloner(object): + Override the new VMs generated UUId + """ + self._new_guest.uuid = uuid ++ for sysinfo in self._new_guest.sysinfo: ++ if sysinfo.system_uuid: ++ sysinfo.system_uuid = uuid + + def set_replace(self, val): + """ +-- +2.45.1 diff --git a/virt-manager-installer-drop-default-TPM-for-cloud-init-install-phase.patch b/virt-manager-installer-drop-default-TPM-for-cloud-init-install-phase.patch new file mode 100644 index 0000000..5ca089f --- /dev/null +++ b/virt-manager-installer-drop-default-TPM-for-cloud-init-install-phase.patch @@ -0,0 +1,148 @@ +From d447ac4e2439103faa612f0933126931264e3a2f Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Tue, 12 Sep 2023 12:01:09 -0400 +Subject: [PATCH] installer: drop default TPM for --cloud-init install phase + +When shim in the guest sees unpopulated EFI NVRAM, like when +we create a new UEFI VM, it invokes fallback.efi to populate +initial NVRAM boot entries. When the guest also has a TPM device, +shim will do a one time VM reset. This reset throws off the +reboot detection that is central to virt-install's install +process. + +The main install case that this will usually be relevant is +the combo of UEFI and --cloud-init. The latter usually implies +use of a distro cloud image, which will be using shim, and the +--cloud-init process requires a multi stage install compared +to just a plain import install. + +For that case, we disable the default TPM device for the first +boot. + +https://bugzilla.redhat.com/show_bug.cgi?id=2133525 + +Signed-off-by: Cole Robinson + +Resolves: https://issues.redhat.com/browse/RHEL-34608 + +(cherry picked from commit ec434948a8384541c56bfa04e4985f4fc709bc76) +Signed-off-by: Jonathon Jongsma +--- + .../virt-install-aarch64-cloud-init.xml | 3 -- + .../virt-install-cloud-init-options1.xml | 3 -- + virtinst/guest.py | 2 ++ + virtinst/install/installer.py | 31 +++++++++++++++++-- + 4 files changed, 31 insertions(+), 8 deletions(-) + +diff --git a/tests/data/cli/compare/virt-install-aarch64-cloud-init.xml b/tests/data/cli/compare/virt-install-aarch64-cloud-init.xml +index e4a50cf4c..18c417662 100644 +--- a/tests/data/cli/compare/virt-install-aarch64-cloud-init.xml ++++ b/tests/data/cli/compare/virt-install-aarch64-cloud-init.xml +@@ -49,9 +49,6 @@ + + + +- +- +- + + + /dev/urandom +diff --git a/tests/data/cli/compare/virt-install-cloud-init-options1.xml b/tests/data/cli/compare/virt-install-cloud-init-options1.xml +index cd5426049..110730dd3 100644 +--- a/tests/data/cli/compare/virt-install-cloud-init-options1.xml ++++ b/tests/data/cli/compare/virt-install-cloud-init-options1.xml +@@ -71,9 +71,6 @@ chpasswd: + + + +- +- +- + + + /dev/urandom +diff --git a/virtinst/guest.py b/virtinst/guest.py +index e66360223..0f5a93d08 100644 +--- a/virtinst/guest.py ++++ b/virtinst/guest.py +@@ -211,6 +211,7 @@ class Guest(XMLBuilder): + self.skip_default_graphics = False + self.skip_default_rng = False + self.skip_default_tpm = False ++ self.have_default_tpm = False + self.x86_cpu_default = self.cpu.SPECIAL_MODE_APP_DEFAULT + + # qemu 6.1, fairly new when we added this option, has an unfortunate +@@ -1060,6 +1061,7 @@ class Guest(XMLBuilder): + dev = DeviceTpm(self.conn) + dev.type = DeviceTpm.TYPE_EMULATOR + self.add_device(dev) ++ self.have_default_tpm = True + + def _add_default_memballoon(self): + if self.devices.memballoon: +diff --git a/virtinst/install/installer.py b/virtinst/install/installer.py +index df74eaffa..c005e77bd 100644 +--- a/virtinst/install/installer.py ++++ b/virtinst/install/installer.py +@@ -564,13 +564,38 @@ class Installer(object): + # guest install handling # + ########################## + +- def _build_postboot_xml(self, final_xml, meter): ++ def _build_postboot_xml(self, guest_ro, final_xml, meter): + initial_guest = Guest(self.conn, parsexml=final_xml) + self._alter_bootconfig(initial_guest) + self._alter_install_resources(initial_guest, meter) + if self.has_cloudinit(): + initial_guest.set_smbios_serial_cloudinit() + ++ # When shim in the guest sees unpopulated EFI NVRAM, like when ++ # we create a new UEFI VM, it invokes fallback.efi to populate ++ # initial NVRAM boot entries. When the guest also has a TPM device, ++ # shim will do a one time VM reset. This reset throws off the ++ # reboot detection that is central to virt-install's install ++ # process. ++ # ++ # The main install case that this will usually be relevant is ++ # the combo of UEFI and --cloud-init. The latter usually implies ++ # use of a distro cloud image, which will be using shim, and the ++ # --cloud-init process requires a multi stage install compared ++ # to just a plain import install. ++ # ++ # For that case, we disable the default TPM device for the first ++ # boot. ++ if (guest_ro.have_default_tpm and ++ guest_ro.is_uefi() and ++ len(initial_guest.devices.tpm)): ++ log.debug( ++ "combo of default TPM, UEFI, and cloudinit is " ++ "used. assuming this VM is using a linux distro " ++ "cloud image with shim in the boot path. disabling " ++ "TPM for the first boot") ++ initial_guest.remove_device(initial_guest.devices.tpm[0]) ++ + final_guest = Guest(self.conn, parsexml=final_xml) + self._remove_install_cdrom_media(final_guest) + self._remove_unattended_install_cdrom_device(final_guest) +@@ -581,7 +606,8 @@ class Installer(object): + initial_xml = None + final_xml = guest.get_xml() + if self._requires_postboot_xml_changes(): +- initial_xml, final_xml = self._build_postboot_xml(final_xml, meter) ++ initial_xml, final_xml = self._build_postboot_xml( ++ guest, final_xml, meter) + final_xml = self._pre_reinstall_xml or final_xml + + log.debug("Generated initial_xml: %s", +@@ -680,6 +706,7 @@ class Installer(object): + # All installer XML alterations are made on this guest instance, + # so the user_guest instance is left intact + guest = Guest(self.conn, parsexml=user_guest.get_xml()) ++ guest.have_default_tpm = user_guest.have_default_tpm + + try: + self._prepare(guest, meter) +-- +2.45.1 diff --git a/virt-manager-progress-Fix-showing-correct-final-total.patch b/virt-manager-progress-Fix-showing-correct-final-total.patch new file mode 100644 index 0000000..2cf8d5c --- /dev/null +++ b/virt-manager-progress-Fix-showing-correct-final-total.patch @@ -0,0 +1,125 @@ +From dcdd66af84fdb7adc44ec859f4cbca77ba8ccf4c Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Wed, 14 Dec 2022 12:57:10 -0500 +Subject: [PATCH] progress: Fix showing correct final total + +Reproducer: +Reproducer: +./virt-install --connect test:///default \ + --location tests/data/fakemedia/fake-f26-netinst.iso + +Before: +Starting install... +Retrieving 'vmlinuz' | 0 B 00:00:00 ... +Retrieving 'initrd.img' | 0 B 00:00:00 ... + +After: +Starting install... +Retrieving 'vmlinuz' | 9 B 00:00:00 ... +Retrieving 'initrd.img' | 9 B 00:00:00 ... + +progress.end() currently only reports the total amount of bytes +that were last written to the UI. It should report the total amount +that's been passed to update(). + +Reported-by: Toshiki Sonoda +Signed-off-by: Cole Robinson +(cherry picked from commit 4114fa1aa827b836d3a1d11c2ac2d367c9bb0463) + +Resolves: https://issues.redhat.com/browse/RHEL-34608 + +Signed-off-by: Jonathon Jongsma +--- + tests/data/meter/meter1.txt | 2 +- + tests/data/meter/meter2.txt | 2 +- + tests/data/meter/meter3.txt | 2 +- + tests/data/meter/meter5.txt | 2 +- + tests/data/meter/meter6.txt | 2 +- + tests/test_misc.py | 4 +++- + virtinst/_progresspriv.py | 4 ++-- + 7 files changed, 10 insertions(+), 8 deletions(-) + +diff --git a/tests/data/meter/meter1.txt b/tests/data/meter/meter1.txt +index a3f7c7d2f..7e154c972 100644 +--- a/tests/data/meter/meter1.txt ++++ b/tests/data/meter/meter1.txt +@@ -9,4 +9,4 @@ Meter text test 20% [=== ] 413 B/s | 2.0 kB 00:19 ETA + + Meter text test 40% [======- ] 731 B/s | 3.9 kB 00:08 ETA + +-Meter text test | 3.9 kB 00:04 ... ++Meter text test | 4.4 kB 00:04 ... +diff --git a/tests/data/meter/meter2.txt b/tests/data/meter/meter2.txt +index 93e93dc31..7ccc31636 100644 +--- a/tests/data/meter/meter2.txt ++++ b/tests/data/meter/meter2.txt +@@ -9,4 +9,4 @@ Meter text test 20% [======= + + Meter text test 40% [============== ] 731 B/s | 3.9 kB 00:00:08 ETA + +-Meter text test | 3.9 kB 00:00:04 ... ++Meter text test | 4.4 kB 00:00:04 ... +diff --git a/tests/data/meter/meter3.txt b/tests/data/meter/meter3.txt +index 474e40f74..6f66608fe 100644 +--- a/tests/data/meter/meter3.txt ++++ b/tests/data/meter/meter3.txt +@@ -4,4 +4,4 @@ Meter text test 67 B/s | 200 B 00:02 + Meter text test 413 B/s | 2.0 kB 00:03 + Meter text test 731 B/s | 3.9 kB 00:04 + +-Meter text test | 3.9 kB 00:04 ++Meter text test | 4.4 kB 00:04 +diff --git a/tests/data/meter/meter5.txt b/tests/data/meter/meter5.txt +index 1d232a5de..7142a9718 100644 +--- a/tests/data/meter/meter5.txt ++++ b/tests/data/meter/meter5.txt +@@ -9,4 +9,4 @@ Meter text test 1000% [================] 413 B/s | 2.0 kB --:-- ETA + + Meter text test 2000% [================] 731 B/s | 3.9 kB --:-- ETA + +-Meter text test | 3.9 kB 00:04 !!! ++Meter text test | 4.4 kB 00:04 !!! +diff --git a/tests/data/meter/meter6.txt b/tests/data/meter/meter6.txt +index 07d99bfd8..dd5d3d47b 100644 +--- a/tests/data/meter/meter6.txt ++++ b/tests/data/meter/meter6.txt +@@ -9,4 +9,4 @@ Meter text test 100% [================] 413 B/s | 2.0 kB --:-- ETA + + Meter text test 100% [================] 731 B/s | 3.9 kB --:-- ETA + +-Meter text test | 3.9 kB 00:04 ++Meter text test | 4.4 kB 00:04 +diff --git a/tests/test_misc.py b/tests/test_misc.py +index aa610f4df..20f5a626b 100644 +--- a/tests/test_misc.py ++++ b/tests/test_misc.py +@@ -178,7 +178,9 @@ def test_misc_meter(): + m.update(2000) + with unittest.mock.patch("time.time", return_value=5.0): + m.update(4000) +- with unittest.mock.patch("time.time", return_value=6.0): ++ with unittest.mock.patch("time.time", return_value=5.1): ++ m.update(4500) ++ with unittest.mock.patch("time.time", return_value=5.5): + m.end() + + # Basic output testing +diff --git a/virtinst/_progresspriv.py b/virtinst/_progresspriv.py +index 5a31a18cc..a035c9c43 100644 +--- a/virtinst/_progresspriv.py ++++ b/virtinst/_progresspriv.py +@@ -112,10 +112,10 @@ class BaseMeter: + assert type(amount_read) is int + + now = time.time() ++ self.last_amount_read = amount_read ++ self.re.update(amount_read, now) + if (not self.last_update_time or + (now >= self.last_update_time + self.update_period)): +- self.re.update(amount_read, now) +- self.last_amount_read = amount_read + self.last_update_time = now + self._do_update(amount_read) + +-- +2.45.1 diff --git a/virt-manager-tests-Add-more-cloud-init-and-TPM-test-cases.patch b/virt-manager-tests-Add-more-cloud-init-and-TPM-test-cases.patch new file mode 100644 index 0000000..f58a434 --- /dev/null +++ b/virt-manager-tests-Add-more-cloud-init-and-TPM-test-cases.patch @@ -0,0 +1,652 @@ +From 1412f0b806af3723679bd7ca7c1dc17d7ed67b27 Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Tue, 12 Sep 2023 11:57:27 -0400 +Subject: [PATCH] tests: Add more cloud-init and TPM test cases + +Signed-off-by: Cole Robinson + +Resolves: https://issues.redhat.com/browse/RHEL-34608 + +(cherry picked from commit fca6de3950d41ccc1c4895c42073c840c45f01ab) +Signed-off-by: Jonathon Jongsma +--- + .../data/capabilities/kvm-aarch64-domcaps.xml | 14 ++ + .../virt-install-aarch64-cloud-init.xml | 136 ++++++++++++++++++ + ...t-install-aarch64-firmware-no-override.xml | 6 + + .../compare/virt-install-aarch64-kvm-gic.xml | 3 + + .../virt-install-aarch64-kvm-import.xml | 3 + + .../virt-install-cloud-init-default.xml | 127 +++++++++++----- + .../virt-install-cloud-init-options1.xml | 131 +++++++++++------ + tests/test_cli.py | 6 +- + 8 files changed, 346 insertions(+), 80 deletions(-) + create mode 100644 tests/data/cli/compare/virt-install-aarch64-cloud-init.xml + +diff --git a/tests/data/capabilities/kvm-aarch64-domcaps.xml b/tests/data/capabilities/kvm-aarch64-domcaps.xml +index 432bdb537..9c244bbdd 100644 +--- a/tests/data/capabilities/kvm-aarch64-domcaps.xml ++++ b/tests/data/capabilities/kvm-aarch64-domcaps.xml +@@ -62,6 +62,20 @@ + + + ++ ++ ++ tpm-tis ++ ++ ++ passthrough ++ emulator ++ external ++ ++ ++ 1.2 ++ 2.0 ++ ++ + + + +diff --git a/tests/data/cli/compare/virt-install-aarch64-cloud-init.xml b/tests/data/cli/compare/virt-install-aarch64-cloud-init.xml +new file mode 100644 +index 000000000..e4a50cf4c +--- /dev/null ++++ b/tests/data/cli/compare/virt-install-aarch64-cloud-init.xml +@@ -0,0 +1,136 @@ ++ ++ fedora28 ++ 00000000-1111-2222-3333-444444444444 ++ ++ ++ ++ ++ ++ 65536 ++ 65536 ++ 2 ++ ++ hvm ++ /usr/share/AAVMF/AAVMF_CODE.fd ++ ++ ++ ++ ++ ++ /usr/bin/qemu-system-aarch64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ /dev/urandom ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ds=nocloud ++ ++ ++ destroy ++ ++ ++ fedora28 ++ 00000000-1111-2222-3333-444444444444 ++ ++ ++ ++ ++ ++ 65536 ++ 65536 ++ 2 ++ ++ hvm ++ /usr/share/AAVMF/AAVMF_CODE.fd ++ ++ ++ ++ ++ ++ /usr/bin/qemu-system-aarch64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ /dev/urandom ++ ++ ++ ++ ++ ++ ++ +diff --git a/tests/data/cli/compare/virt-install-aarch64-firmware-no-override.xml b/tests/data/cli/compare/virt-install-aarch64-firmware-no-override.xml +index b6fe84e67..cef9e6cde 100644 +--- a/tests/data/cli/compare/virt-install-aarch64-firmware-no-override.xml ++++ b/tests/data/cli/compare/virt-install-aarch64-firmware-no-override.xml +@@ -43,6 +43,9 @@ + + + ++ ++ ++ + + + /dev/urandom +@@ -95,6 +98,9 @@ + + + ++ ++ ++ + + + /dev/urandom +diff --git a/tests/data/cli/compare/virt-install-aarch64-kvm-gic.xml b/tests/data/cli/compare/virt-install-aarch64-kvm-gic.xml +index 92e17eda6..aa31ed9c1 100644 +--- a/tests/data/cli/compare/virt-install-aarch64-kvm-gic.xml ++++ b/tests/data/cli/compare/virt-install-aarch64-kvm-gic.xml +@@ -56,6 +56,9 @@ + + + ++ ++ ++ + + + /dev/urandom +diff --git a/tests/data/cli/compare/virt-install-aarch64-kvm-import.xml b/tests/data/cli/compare/virt-install-aarch64-kvm-import.xml +index 5203cb807..1e4b26e51 100644 +--- a/tests/data/cli/compare/virt-install-aarch64-kvm-import.xml ++++ b/tests/data/cli/compare/virt-install-aarch64-kvm-import.xml +@@ -51,6 +51,9 @@ + + + ++ ++ ++ + + + destroy + +- ++ + fedora28 + 00000000-1111-2222-3333-444444444444 + +@@ -67,40 +93,65 @@ + 65536 + 2 + +- hvm ++ hvm + + + +- ++ ++ + +- ++ ++ ++ ++ ++ ++ + + + + + +- /usr/bin/test-hv ++ /usr/bin/qemu-system-x86_64 + ++ + +- ++ + +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +- ++ + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ /dev/urandom ++ + +- ++ + + + +diff --git a/tests/data/cli/compare/virt-install-cloud-init-options1.xml b/tests/data/cli/compare/virt-install-cloud-init-options1.xml +index 1df73714d..cd5426049 100644 +--- a/tests/data/cli/compare/virt-install-cloud-init-options1.xml ++++ b/tests/data/cli/compare/virt-install-cloud-init-options1.xml +@@ -4,7 +4,7 @@ chpasswd: + root:[SCRUBBLED] + expire: True + +- ++ + fedora28 + 00000000-1111-2222-3333-444444444444 + +@@ -20,48 +20,74 @@ chpasswd: + foobar + + +- +- hvm ++ ++ hvm + + + +- ++ ++ + +- ++ ++ ++ ++ ++ ++ + + + + + +- /usr/bin/test-hv ++ /usr/bin/qemu-system-x86_64 + ++ + +- ++ + +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +- ++ + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ /dev/urandom ++ + ++ + +- ++ + + + + destroy + +- ++ + fedora28 + 00000000-1111-2222-3333-444444444444 + +@@ -77,42 +103,67 @@ chpasswd: + foobar + + +- +- hvm ++ ++ hvm + + + + +- ++ ++ + +- ++ ++ ++ ++ ++ ++ + + + + + +- /usr/bin/test-hv ++ /usr/bin/qemu-system-x86_64 + ++ + +- ++ + +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +- ++ + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ /dev/urandom ++ + +- ++ + + + +diff --git a/tests/test_cli.py b/tests/test_cli.py +index ca8d2340a..c3f7ab2ba 100644 +--- a/tests/test_cli.py ++++ b/tests/test_cli.py +@@ -1017,8 +1017,9 @@ c = vinst.add_category("misc-install", "--nographics --noautoconsole") + c.add_compare("--connect %s --os-variant generic" % (utils.URIs.test_suite), "noargs-fail", use_default_args=False) # No arguments + c.add_compare("--connect %s --os-variant fedora26" % (utils.URIs.test_suite), "osvariant-noargs-fail", use_default_args=False) # No arguments + c.add_compare("--connect %s --os-variant fedora26 --pxe --print-xml" % (utils.URIs.test_suite), "osvariant-defaults-pxe", use_default_args=False) # No arguments +-c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init", "cloud-init-default", env={"VIRTINST_TEST_SUITE_CLOUDINIT": "1"}) # default --cloud-init behavior is root-password-generate=yes,disable=yes +-c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init root-password-generate=yes,disable=no --sysinfo system.serial=foobar", "cloud-init-options1", env={"VIRTINST_TEST_SUITE_PRINT_CLOUDINIT": "1"}) # --cloud-init root-password-generate, with --sysinfo override ++c.add_valid("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init", env={"VIRTINST_TEST_SUITE_CLOUDINIT": "1"}) # default --cloud-init, but without implied --print-xml, to hit some specific code paths ++c.add_compare("--connect %(URI-KVM-X86)s --disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init --tpm default", "cloud-init-default", env={"VIRTINST_TEST_SUITE_CLOUDINIT": "1"}) # default --cloud-init behavior is root-password-generate=yes,disable=yes, forcing tpm ++c.add_compare("--connect %(URI-KVM-X86)s --disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init root-password-generate=yes,disable=no --sysinfo system.serial=foobar --boot uefi", "cloud-init-options1", env={"VIRTINST_TEST_SUITE_PRINT_CLOUDINIT": "1"}) # --cloud-init root-password-generate, with --sysinfo override, with uefi + c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init root-password-file=%(ADMIN-PASSWORD-FILE)s,root-ssh-key=%(XMLDIR)s/cloudinit/ssh-key.txt,clouduser-ssh-key=%(XMLDIR)s/cloudinit/ssh-key2.txt --boot smbios.mode=none", "cloud-init-options2", env={"VIRTINST_TEST_SUITE_PRINT_CLOUDINIT": "1"}) # --cloud-init root-password-file with smbios.mode override + c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init ssh-key=%(XMLDIR)s/cloudinit/ssh-key.txt", "cloud-init-options3", env={"VIRTINST_TEST_SUITE_PRINT_CLOUDINIT": "1"}) # --cloud-init ssh-key + c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init user-data=%(XMLDIR)s/cloudinit/user-data.txt,meta-data=%(XMLDIR)s/cloudinit/meta-data.txt", "cloud-init-options4", env={"VIRTINST_TEST_SUITE_PRINT_CLOUDINIT": "1"}) # --cloud-init user-data=,meta-data= +@@ -1177,6 +1178,7 @@ c.add_compare("--arch aarch64 --cdrom %(ISO-F26-NETINST)s --boot loader=CODE.fd, + c.add_compare("--connect %(URI-KVM-AARCH64)s --disk %(EXISTIMG1)s --import --os-variant fedora21 --panic default --graphics vnc", "aarch64-kvm-import") # --import test, but also test --panic no-op, and --graphics + c.add_compare("--connect %(URI-KVM-AARCH64)s --disk size=1 --os-variant fedora22 --features gic_version=host --network network=default,address.type=pci --controller type=scsi,model=virtio-scsi,address.type=pci", "aarch64-kvm-gic") + c.add_compare("--connect %(URI-KVM-AARCH64)s --osinfo fedora30 --arch aarch64 --disk none --pxe --boot firmware=efi", "aarch64-firmware-no-override") ++c.add_compare("--connect %(URI-KVM-AARCH64)s --disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init", "aarch64-cloud-init") + + + +-- +2.45.1 diff --git a/virt-manager-virt-install-Document-Secure-Boot-setups.patch b/virt-manager-virt-install-Document-Secure-Boot-setups.patch new file mode 100644 index 0000000..2ed7704 --- /dev/null +++ b/virt-manager-virt-install-Document-Secure-Boot-setups.patch @@ -0,0 +1,61 @@ +From a06231642804318239f07fd7e379da666190a6e6 Mon Sep 17 00:00:00 2001 +From: Andrea Bolognani +Date: Mon, 12 Dec 2022 19:38:22 +0100 +Subject: [PATCH] virt-install: Document Secure Boot setups + +Provide ready to use recipes for explicitly enabling and +explicitly disabling Secure Boot, as well as a pointer to +the more extensive information found on the libvirt website. + +Setting loader_secure=yes is only one part of a proper Secure +Boot setup, so stop documenting it in the section about manual +firmware selection to avoid confusion. + +https://bugzilla.redhat.com/show_bug.cgi?id=2112154 +https://bugzilla.redhat.com/show_bug.cgi?id=2149971 + +Signed-off-by: Andrea Bolognani +(cherry picked from commit 33ff193ee9fcfdb74f95d946a1b93239a1a12a61) + +Resolves: https://issues.redhat.com/browse/RHEL-34608 + +Signed-off-by: Jonathon Jongsma +--- + man/virt-install.rst | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +diff --git a/man/virt-install.rst b/man/virt-install.rst +index 684f22655..a0df73280 100644 +--- a/man/virt-install.rst ++++ b/man/virt-install.rst +@@ -957,13 +957,26 @@ Some examples: + via domcapabilities XML, so this will likely only work if using properly + configured distro packages. This is the recommended UEFI setup. + ++``--boot uefi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=yes,firmware.feature1.name=enrolled-keys,firmware.feature1.enabled=yes`` ++ Configure the VM to boot from UEFI with Secure Boot support enabled. ++ Only signed operating systems will be able to boot with this configuration. ++ ++``--boot uefi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=no`` ++ Configure the VM to boot from UEFI with Secure Boot support disabled. ++ This configuration allows both signed and unsigned operating systems to ++ run. ++ ++ Additional information about the ``secure-boot`` and ++ ``enrolled-keys`` firmware features and how they can be used to ++ influence firmware selection is available at ++ https://libvirt.org/kbase/secureboot.html ++ + ``--boot loader=/.../OVMF_CODE.fd,loader.readonly=yes,loader.type=pflash,nvram.template=/.../OVMF_VARS.fd,loader_secure=no`` + Specify that the virtual machine use the custom OVMF binary as boot firmware, + mapped as a virtual flash chip. In addition, request that libvirt instantiate + the VM-specific UEFI varstore from the custom "/.../OVMF_VARS.fd" varstore + template. This setup is not recommended, and should only be used if +- --boot uefi doesn't know about your UEFI binaries. If your UEFI firmware +- supports Secure boot feature you can enable it via loader_secure. ++ --boot uefi doesn't know about your UEFI binaries. + + Use --boot=? to see a list of all available sub options. + Complete details at https://libvirt.org/formatdomain.html#elementsOS +-- +2.45.1 diff --git a/virt-manager-virt-install-Recommend-boot-uefi.patch b/virt-manager-virt-install-Recommend-boot-uefi.patch new file mode 100644 index 0000000..2a11b7f --- /dev/null +++ b/virt-manager-virt-install-Recommend-boot-uefi.patch @@ -0,0 +1,41 @@ +From a3a321b92e3eedf9ef7974c3344429ce0798d104 Mon Sep 17 00:00:00 2001 +From: Andrea Bolognani +Date: Mon, 12 Dec 2022 19:32:32 +0100 +Subject: [PATCH] virt-install: Recommend '--boot uefi' + +Firmware autoselection is the way to go in most cases, so +recommend that instead of telling users that they should provide +all information manually. + +Signed-off-by: Andrea Bolognani +(cherry picked from commit f2b5aaf458764ec7ecf105038e5f2f7cc26b6c17) + +Resolves: https://issues.redhat.com/browse/RHEL-34608 + +Signed-off-by: Jonathon Jongsma +--- + man/virt-install.rst | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/man/virt-install.rst b/man/virt-install.rst +index 3a6e8dcd2..684f22655 100644 +--- a/man/virt-install.rst ++++ b/man/virt-install.rst +@@ -955,13 +955,13 @@ Some examples: + Configure the VM to boot from UEFI. In order for virt-install to know the + correct UEFI parameters, libvirt needs to be advertising known UEFI binaries + via domcapabilities XML, so this will likely only work if using properly +- configured distro packages. ++ configured distro packages. This is the recommended UEFI setup. + + ``--boot loader=/.../OVMF_CODE.fd,loader.readonly=yes,loader.type=pflash,nvram.template=/.../OVMF_VARS.fd,loader_secure=no`` + Specify that the virtual machine use the custom OVMF binary as boot firmware, + mapped as a virtual flash chip. In addition, request that libvirt instantiate + the VM-specific UEFI varstore from the custom "/.../OVMF_VARS.fd" varstore +- template. This is the recommended UEFI setup, and should be used if ++ template. This setup is not recommended, and should only be used if + --boot uefi doesn't know about your UEFI binaries. If your UEFI firmware + supports Secure boot feature you can enable it via loader_secure. + +-- +2.45.1 diff --git a/virt-manager-virtinstall-Fix-the-allocating-disk-size-printed-by-the-progress-bar.patch b/virt-manager-virtinstall-Fix-the-allocating-disk-size-printed-by-the-progress-bar.patch new file mode 100644 index 0000000..4bf23c2 --- /dev/null +++ b/virt-manager-virtinstall-Fix-the-allocating-disk-size-printed-by-the-progress-bar.patch @@ -0,0 +1,38 @@ +From caf6664f3f551c4bded28e29e11272a575c9e46d Mon Sep 17 00:00:00 2001 +From: Toshiki Sonoda +Date: Wed, 9 Nov 2022 18:33:56 +0900 +Subject: [PATCH] virtinstall: Fix the allocating disk size printed by the + progress bar + +When a sparse file is created during a disk allocation, +virt-install prints not the created disk size but a sparse file size. + +Therefore, we fix to print the created disk size during disk allocation +instead of the size of the sparse file by updating the meter with the +self.capacity. + +Signed-off-by: Toshiki Sonoda +Signed-off-by: Haruka Ohata +(cherry picked from commit 39c7a443146433766e4e71e48ab59145c74924b3) + +Resolves: https://issues.redhat.com/browse/RHEL-34608 + +Signed-off-by: Jonathon Jongsma +--- + virtinst/storage.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/virtinst/storage.py b/virtinst/storage.py +index 509f5cb06..617b05e0d 100644 +--- a/virtinst/storage.py ++++ b/virtinst/storage.py +@@ -697,6 +697,7 @@ class StorageVolume(_StorageObject): + log.debug("Using vol create flags=%s", createflags) + vol = self.pool.createXML(xml, createflags) + ++ meter.update(self.capacity) + meter.end() + log.debug("Storage volume '%s' install complete.", self.name) + return vol +-- +2.45.1 diff --git a/virt-manager-virtinstall-Hide-total_size-in-the-progress-bar-if-it-doesn-t-need.patch b/virt-manager-virtinstall-Hide-total_size-in-the-progress-bar-if-it-doesn-t-need.patch new file mode 100644 index 0000000..a217505 --- /dev/null +++ b/virt-manager-virtinstall-Hide-total_size-in-the-progress-bar-if-it-doesn-t-need.patch @@ -0,0 +1,86 @@ +From 5452a6f30d7669354aaee39fba596783fb2d27dc Mon Sep 17 00:00:00 2001 +From: Toshiki Sonoda +Date: Wed, 9 Nov 2022 18:33:57 +0900 +Subject: [PATCH] virtinstall: Hide total_size in the progress bar if it + doesn't need + +virt-install prints the total_size value to the progress bar even if it +is meaningless. +This value can be confusing to user, so for execute prosess that doesn't +copy files (total_size = 0B), we hide the total_size value. +For example, 'Creating domain...' doesn't need to print the total_size +value. + +Signed-off-by: Toshiki Sonoda +Signed-off-by: Haruka Ohata +(cherry picked from commit 6ec00474a659158f20248d6af3771d1a12ddac7b) + +Resolves: https://issues.redhat.com/browse/RHEL-34608 + +Signed-off-by: Jonathon Jongsma +--- + tests/data/meter/meter-zero.txt | 4 ++++ + tests/test_misc.py | 14 ++++++++++++++ + virtinst/_progresspriv.py | 8 ++++++-- + 3 files changed, 24 insertions(+), 2 deletions(-) + create mode 100644 tests/data/meter/meter-zero.txt + +diff --git a/tests/data/meter/meter-zero.txt b/tests/data/meter/meter-zero.txt +new file mode 100644 +index 000000000..fc81f21fd +--- /dev/null ++++ b/tests/data/meter/meter-zero.txt +@@ -0,0 +1,4 @@ ++ ++Meter text test 100% [================] 0 B/s | 0 B --:-- ETA ++ ++Meter text test | 00:02 +diff --git a/tests/test_misc.py b/tests/test_misc.py +index 20f5a626b..2cabc3382 100644 +--- a/tests/test_misc.py ++++ b/tests/test_misc.py +@@ -224,6 +224,20 @@ def test_misc_meter(): + out = meter.output.getvalue().replace("\r", "\n") + utils.diff_compare(out, os.path.join(utils.DATADIR, "meter", "meter6.txt")) + ++ def _test_meter_zero(m, startval=0, text="Meter text test"): ++ with unittest.mock.patch("time.time", return_value=1.0): ++ m.start(text, startval) ++ with unittest.mock.patch("time.time", return_value=3.0): ++ m.update(0) ++ with unittest.mock.patch("time.time", return_value=3.1): ++ m.end() ++ ++ # meter with size 0 and startval size 0 ++ meter = _progresspriv.TextMeter(output=io.StringIO()) ++ _test_meter_zero(meter, 0) ++ out = meter.output.getvalue().replace("\r", "\n") ++ utils.diff_compare(out, os.path.join(utils.DATADIR, "meter", "meter-zero.txt")) ++ + # BaseMeter coverage + meter = _progresspriv.BaseMeter() + _test_meter_values(meter) +diff --git a/virtinst/_progresspriv.py b/virtinst/_progresspriv.py +index a035c9c43..207c64796 100644 +--- a/virtinst/_progresspriv.py ++++ b/virtinst/_progresspriv.py +@@ -247,11 +247,15 @@ class TextMeter(BaseMeter): + tl = TerminalLine(8) + # For big screens, make it more readable. + use_hours = bool(tl.llen > 80) +- ui_size = tl.add(' | %5sB' % total_size) + ui_time = tl.add(' %s' % format_time(self.re.elapsed_time(), + use_hours)) + ui_end, not_done = _term_add_end(tl, self.size, amount_read) +- dummy = not_done ++ if not not_done and amount_read == 0: ++ # Doesn't need to print total_size ++ ui_size = tl.add(' | %5s ' % ' ') ++ else: ++ ui_size = tl.add(' | %5sB' % total_size) ++ + out = '\r%-*.*s%s%s%s\n' % (tl.rest(), tl.rest(), self.text, + ui_size, ui_time, ui_end) + self.output.write(out) +-- +2.45.1 diff --git a/virt-manager-virtinstall-fix-regression-with-boot-and-no-install-method.patch b/virt-manager-virtinstall-fix-regression-with-boot-and-no-install-method.patch new file mode 100644 index 0000000..f0055d7 --- /dev/null +++ b/virt-manager-virtinstall-fix-regression-with-boot-and-no-install-method.patch @@ -0,0 +1,57 @@ +From f542adfd620f7c1fa5f4a14b75caca030dc955fc Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Sat, 20 Aug 2022 09:54:01 -0400 +Subject: [PATCH] virtinstall: fix regression with --boot and no install method + +Anything passed to --boot should imply --install no_install=yes +in the absence of other --install options. This is historically +what we've done but we regressed in 4.1.0 + +Resolves: https://github.com/virt-manager/virt-manager/issues/426 + +Signed-off-by: Cole Robinson + +Resolves: https://issues.redhat.com/browse/RHEL-34608 + +(cherry picked from commit e94786c066696781a821f5a4bcef3c377e4bc5e5) +Signed-off-by: Jonathon Jongsma +--- + tests/test_cli.py | 1 + + virtinst/virtinstall.py | 3 ++- + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/tests/test_cli.py b/tests/test_cli.py +index 774db098f..ca8d2340a 100644 +--- a/tests/test_cli.py ++++ b/tests/test_cli.py +@@ -966,6 +966,7 @@ c.add_valid("--os-variant generic --pxe --ram 16", grep="Requested memory 16 MiB + c.add_valid("--os-variant winxp --ram 32 --cdrom %(EXISTIMG1)s", grep="32 MiB is less than the recommended 64 MiB") # Windows. Catch memory warning + c.add_valid("--osinfo generic --pxe --autostart") # --autostart flag + c.add_valid("--cdrom %(EXISTIMG2)s --os-variant win2k3 --print-step 2") # HVM windows install, print 3rd stage XML ++c.add_valid("--memory 512 --osinfo generic --boot cdrom") # --boot XXX should imply --install no_install + c.add_compare("--location location=%(TREEDIR)s --initrd-inject virt-install --extra-args ks=file:/virt-install", "initrd-inject") # initrd-inject + c.add_compare("--cdrom http://example.com/path/to/some.iso --os-variant detect=yes,require=no", "cdrom-url") + c.add_compare("--pxe --print-step all --os-variant none", "simple-pxe") # Diskless PXE install +diff --git a/virtinst/virtinstall.py b/virtinst/virtinstall.py +index 6d7f56b8d..20b901813 100644 +--- a/virtinst/virtinstall.py ++++ b/virtinst/virtinstall.py +@@ -431,7 +431,7 @@ def build_installer(options, guest, installdata): + pass + elif (options.import_install or + options.xmlonly or +- options.boot or ++ options.boot_was_set or + options.cloud_init or + options.unattended): + no_install = True +@@ -641,6 +641,7 @@ def _build_options_guest(conn, options): + def build_guest_instance(conn, options): + installdata = cli.parse_install(options.install) + osdata = cli.parse_os_variant(options.os_variant or installdata.os) ++ options.boot_was_set = bool(options.boot) + + if options.reinstall: + dummy1, guest, dummy2 = cli.get_domain_and_guest(conn, options.reinstall) +-- +2.45.1 diff --git a/virt-manager-xmleditor-make-gtksourceview-optional.patch b/virt-manager-xmleditor-make-gtksourceview-optional.patch new file mode 100644 index 0000000..7c11a7f --- /dev/null +++ b/virt-manager-xmleditor-make-gtksourceview-optional.patch @@ -0,0 +1,79 @@ +From e45db8eaa53134b0b5266d25ad58f0760af777b0 Mon Sep 17 00:00:00 2001 +From: Jonathon Jongsma +Date: Thu, 16 May 2024 11:05:23 -0500 +Subject: [PATCH] xmleditor: make gtksourceview optional + +The only thing that GtkSourceView gives us is syntax highlighting and +auto-indent. When this library is not available, we can still offer xml +editing with a plain textview with very little lost functionality. + +Resolves: https://issues.redhat.com/browse/RHEL-35859 + +Signed-off-by: Jonathon Jongsma +--- + virt-manager.spec | 7 ++++--- + virtManager/xmleditor.py | 34 ++++++++++++++++++++++++---------- + 2 files changed, 28 insertions(+), 13 deletions(-) + +diff --git a/virtManager/xmleditor.py b/virtManager/xmleditor.py +index 40d4c424e..8be317cc9 100644 +--- a/virtManager/xmleditor.py ++++ b/virtManager/xmleditor.py +@@ -7,13 +7,24 @@ import gi + from virtinst import log + + # We can use either gtksourceview3 or gtksourceview4 ++have_gtksourceview = True + try: + gi.require_version("GtkSource", "4") + log.debug("Using GtkSource 4") + except ValueError: # pragma: no cover +- gi.require_version("GtkSource", "3.0") +- log.debug("Using GtkSource 3.0") +-from gi.repository import GtkSource ++ try: ++ gi.require_version("GtkSource", "3.0") ++ log.debug("Using GtkSource 3.0") ++ except: ++ log.debug("Not using GtkSource") ++ have_gtksourceview = False ++ ++if have_gtksourceview: ++ from gi.repository import GtkSource ++else: ++ # if GtkSourceView is not available, just use a plain TextView. This will ++ # only disable auto-indent and syntax highlighting. ++ from gi.repository import Gtk + + from .lib import uiutil + from .baseclass import vmmGObjectUI +@@ -66,17 +77,20 @@ class vmmXMLEditor(vmmGObjectUI): + not enabled) + + def _init_ui(self): +- self._srcview = GtkSource.View() +- self._srcbuff = self._srcview.get_buffer() +- +- lang = GtkSource.LanguageManager.get_default().get_language("xml") +- self._srcbuff.set_language(lang) ++ if have_gtksourceview: ++ self._srcview = GtkSource.View() ++ self._srcbuff = self._srcview.get_buffer() ++ self._srcview.set_auto_indent(True) ++ lang = GtkSource.LanguageManager.get_default().get_language("xml") ++ self._srcbuff.set_language(lang) ++ self._srcbuff.set_highlight_syntax(True) ++ else: ++ self._srcview = Gtk.TextView() ++ self._srcbuff = self._srcview.get_buffer() + + self._srcview.set_monospace(True) +- self._srcview.set_auto_indent(True) + self._srcview.get_accessible().set_name("XML editor") + +- self._srcbuff.set_highlight_syntax(True) + self._srcbuff.connect("changed", self._buffer_changed_cb) + + self.widget("xml-notebook").connect("switch-page", +-- +2.45.1 diff --git a/virt-manager.spec b/virt-manager.spec index 637398c..3decffe 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -8,7 +8,7 @@ Name: virt-manager Version: 4.1.0 -Release: 6%{?dist} +Release: 7%{?dist}%{?extra_release} %global verrel %{version}-%{release} Summary: Desktop tool for managing virtual machines via libvirt @@ -16,6 +16,17 @@ License: GPL-2.0-or-later BuildArch: noarch URL: https://virt-manager.org/ Source0: https://virt-manager.org/download/sources/%{name}/%{name}-%{version}.tar.gz +Patch1: virt-manager-cloner-Sync-uuid-and-sysinfo-system-uuid.patch +Patch2: virt-manager-virtinstall-fix-regression-with-boot-and-no-install-method.patch +Patch3: virt-manager-progress-Fix-showing-correct-final-total.patch +Patch4: virt-manager-virtinstall-Fix-the-allocating-disk-size-printed-by-the-progress-bar.patch +Patch5: virt-manager-virtinstall-Hide-total_size-in-the-progress-bar-if-it-doesn-t-need.patch +Patch6: virt-manager-virt-install-Recommend-boot-uefi.patch +Patch7: virt-manager-virt-install-Document-Secure-Boot-setups.patch +Patch8: virt-manager-tests-Add-more-cloud-init-and-TPM-test-cases.patch +Patch9: virt-manager-installer-drop-default-TPM-for-cloud-init-install-phase.patch +Patch10: virt-manager-xmleditor-make-gtksourceview-optional.patch + Requires: virt-manager-common = %{verrel} @@ -27,9 +38,6 @@ Requires: gtk-vnc2 Requires: spice-gtk3 %endif -# We can work with gtksourceview 3 or gtksourceview4, pick the latest one -Requires: gtksourceview4 - # virt-manager is one of those apps that people will often install onto # a headless machine for use over SSH. This means the virt-manager dep # chain needs to provide everything we need to get a usable app experience. @@ -44,6 +52,10 @@ Requires: dconf # no ambiguity. Requires: vte291 +# We can use GtkTextView, gtksourceview 3 or gtksourceview4, recommend +# the latest one but don't make it a hard requirement +Recommends: gtksourceview4 + # Weak dependencies for the common virt-manager usecase Recommends: (libvirt-daemon-kvm or libvirt-daemon-qemu) Recommends: libvirt-daemon-config-network @@ -51,6 +63,7 @@ Recommends: libvirt-daemon-config-network # Optional inspection of guests Suggests: python3-libguestfs +BuildRequires: git BuildRequires: gettext BuildRequires: python3-devel BuildRequires: python3-docutils @@ -101,7 +114,10 @@ machine). %prep -%autosetup -p1 +%autosetup -S git_am -N + +%autopatch + %build @@ -170,6 +186,19 @@ machine). %changelog +* Tue Jun 25 2024 Jonathon Jongsma - 4.1.0-7 +- cloner: Sync and system uuid (RHEL-34608) +- virtinstall: fix regression with --boot and no install method (RHEL-34608) +- progress: Fix showing correct final total (RHEL-34608) +- virtinstall: Fix the allocating disk size printed by the progress bar (RHEL-34608) +- virtinstall: Hide total_size in the progress bar if it doesn't need (RHEL-34608) +- virt-install: Recommend '--boot uefi' (RHEL-34608) +- virt-install: Document Secure Boot setups (RHEL-34608) +- tests: Add more cloud-init and TPM test cases (RHEL-34608) +- installer: drop default TPM for --cloud-init install phase (RHEL-34608) +- Add gating for centos stream 10 (RHEL-34608) +- xmleditor: make gtksourceview optional (RHEL-35859) + * Mon Jun 24 2024 Troy Dawson - 4.1.0-6 - Bump release for June 2024 mass rebuild