diff --git a/0001-initrdinject-Use-full-option-versions-for-cpio.patch b/0001-initrdinject-Use-full-option-versions-for-cpio.patch deleted file mode 100644 index 3ce130c64087d82c1eef934970cf5337a4208a31..0000000000000000000000000000000000000000 --- a/0001-initrdinject-Use-full-option-versions-for-cpio.patch +++ /dev/null @@ -1,25 +0,0 @@ -From: Cole Robinson -Date: Tue, 2 Apr 2019 15:02:47 -0400 -Subject: [PATCH virt-manager] initrdinject: Use full option versions for cpio - -Makes it more self documenting IMO - -(cherry picked from commit 309840b9535b0e1965ed177b4558652faa256b36) ---- - virtinst/initrdinject.py | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/virtinst/initrdinject.py b/virtinst/initrdinject.py -index 78c18c28..9a09f20c 100644 ---- a/virtinst/initrdinject.py -+++ b/virtinst/initrdinject.py -@@ -30,7 +30,8 @@ def perform_initrd_injections(initrd, injections, scratchdir): - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - cwd=tempdir) -- cpio_proc = subprocess.Popen(['cpio', '-o', '--null', '-Hnewc', '--quiet'], -+ cpio_proc = subprocess.Popen(['cpio', '--create', '--null', '--quiet', -+ '--format=newc'], - stdin=find_proc.stdout, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, diff --git a/0002-initrdinject-Force-added-files-to-be-owned-as-root-b.patch b/0002-initrdinject-Force-added-files-to-be-owned-as-root-b.patch deleted file mode 100644 index 881c1deea9dc2d6d1853119a33141fa23bca4698..0000000000000000000000000000000000000000 --- a/0002-initrdinject-Force-added-files-to-be-owned-as-root-b.patch +++ /dev/null @@ -1,33 +0,0 @@ -From: Cole Robinson -Date: Wed, 3 Apr 2019 18:07:12 -0400 -Subject: [PATCH virt-manager] initrdinject: Force added files to be owned as - root (bz 1686464) - -systemd in fedora30 has some new security restriction about non-root -owned directories. Initrd inject would tickle this because the cpio -archive would cause the root dir in the initrd to be owned by the -uid that launched virt-install. - -Pass --owner=+0:+0 to cpio to force root ownership - -Suggested-by: James Szinger - -https://bugzilla.redhat.com/show_bug.cgi?id=1686464 -(cherry picked from commit c6b5f22fa61d87557b5fab23be080073d2f7906e) ---- - virtinst/initrdinject.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/virtinst/initrdinject.py b/virtinst/initrdinject.py -index 9a09f20c..4032f9ba 100644 ---- a/virtinst/initrdinject.py -+++ b/virtinst/initrdinject.py -@@ -31,7 +31,7 @@ def perform_initrd_injections(initrd, injections, scratchdir): - stderr=subprocess.PIPE, - cwd=tempdir) - cpio_proc = subprocess.Popen(['cpio', '--create', '--null', '--quiet', -- '--format=newc'], -+ '--format=newc', '--owner=+0:+0'], - stdin=find_proc.stdout, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, diff --git a/Add-loongarch-support.patch b/Add-loongarch-support.patch new file mode 100644 index 0000000000000000000000000000000000000000..62b80193575948a3fbaf8297cae9bdf3c4027ecd --- /dev/null +++ b/Add-loongarch-support.patch @@ -0,0 +1,190 @@ +From 49874e7491b10b7cf47f842e2967dc843fb862a0 Mon Sep 17 00:00:00 2001 +From: zhaotianrui +Date: Mon, 12 Dec 2022 16:51:20 +0800 +Subject: [PATCH] Add loongarch support + +Signed-off-by: zhaotianrui +--- + virtManager/createvm.py | 5 ++++- + virtinst/devices/disk.py | 2 ++ + virtinst/devices/video.py | 2 ++ + virtinst/domain/cpu.py | 5 +++++ + virtinst/domain/os.py | 3 +++ + virtinst/domcapabilities.py | 6 +++++- + virtinst/guest.py | 16 ++++++++++++---- + 7 files changed, 33 insertions(+), 6 deletions(-) + +diff --git a/virtManager/createvm.py b/virtManager/createvm.py +index 7e5ded6..7930b37 100644 +--- a/virtManager/createvm.py ++++ b/virtManager/createvm.py +@@ -476,7 +476,8 @@ class vmmCreateVM(vmmGObjectUI): + + installable_arch = bool(guest.os.is_x86() or + guest.os.is_ppc64() or +- guest.os.is_s390x()) ++ guest.os.is_s390x() or ++ guest.os.is_loongarch()) + + default_efi = ( + self.config.get_default_firmware_setting() == "uefi" and +@@ -857,6 +858,8 @@ class vmmCreateVM(vmmGObjectUI): + machines.sort() + + defmachine = None ++ if self._capsinfo.arch in ["loongarch64"]: ++ defmachine = "loongson7a" + prios = [] + recommended_machine = virtinst.Guest.get_recommended_machine( + self._capsinfo) +diff --git a/virtinst/devices/disk.py b/virtinst/devices/disk.py +index dc59fd1..261b82b 100644 +--- a/virtinst/devices/disk.py ++++ b/virtinst/devices/disk.py +@@ -974,6 +974,8 @@ class DeviceDisk(Device): + return "sd" + if guest.os.is_q35(): + return "sata" ++ if self.is_cdrom() and guest.os.is_loongarch(): ++ return "scsi" + if self.conn.is_bhyve(): + # IDE bus is not supported by bhyve + return "sata" +diff --git a/virtinst/devices/video.py b/virtinst/devices/video.py +index 70067a7..d10fd7a 100644 +--- a/virtinst/devices/video.py ++++ b/virtinst/devices/video.py +@@ -27,6 +27,8 @@ class DeviceVideo(Device): + + @staticmethod + def default_model(guest): ++ if guest.os.is_loongarch(): ++ return "virtio" + if not guest.os.is_hvm(): + return None + if guest.os.is_pseries(): +diff --git a/virtinst/domain/cpu.py b/virtinst/domain/cpu.py +index 5de42b4..82b68ac 100644 +--- a/virtinst/domain/cpu.py ++++ b/virtinst/domain/cpu.py +@@ -449,5 +449,10 @@ class DomainCpu(XMLBuilder): + # -M virt defaults to a 32bit CPU, even if using aarch64 + self.set_model(guest, "cortex-a57") + ++ elif guest.os.is_loongarch() and guest.type == "kvm": ++ if guest.os.arch != self.conn.caps.host.cpu.arch: ++ return ++ self.set_special_mode(guest, guest.loongarch_cpu_default) ++ + elif guest.os.is_x86() and guest.type == "kvm": + self._set_cpu_x86_kvm_default(guest) +diff --git a/virtinst/domain/os.py b/virtinst/domain/os.py +index e2cea75..bd0deac 100644 +--- a/virtinst/domain/os.py ++++ b/virtinst/domain/os.py +@@ -70,6 +70,9 @@ class DomainOs(XMLBuilder): + def is_pseries(self): + return self.is_ppc64() and str(self.machine).startswith("pseries") + ++ def is_loongarch(self): ++ return self.arch == "loongarch64" ++ + def is_s390x(self): + return self.arch == "s390x" + +diff --git a/virtinst/domcapabilities.py b/virtinst/domcapabilities.py +index d22ce6a..50ce12c 100644 +--- a/virtinst/domcapabilities.py ++++ b/virtinst/domcapabilities.py +@@ -289,6 +289,10 @@ class DomainCapabilities(XMLBuilder): + r".*arm/QEMU_EFI.*", # fedora, gerd's firmware repo + r".*edk2-arm-code\.fd" # upstream qemu + ], ++ "loongarch64": [ ++ ".*loongarch_bios.bin", # loongarch ++ ".*loongarch_vars.bin", # gerd's firmware repo ++ ], + } + + def find_uefi_path_for_arch(self): +@@ -444,7 +448,7 @@ class DomainCapabilities(XMLBuilder): + # support. Use our pre-existing logic + if not self.conn.is_qemu() and not self.conn.is_test(): + return False +- return self.conn.caps.host.cpu.arch in ["i686", "x86_64"] ++ return self.conn.caps.host.cpu.arch in ["i686", "x86_64", "loongarch64"] + + return self.devices.graphics.get_enum("type").has_value("spice") + +diff --git a/virtinst/guest.py b/virtinst/guest.py +index e663602..f0f2d67 100644 +--- a/virtinst/guest.py ++++ b/virtinst/guest.py +@@ -212,6 +212,7 @@ class Guest(XMLBuilder): + self.skip_default_rng = False + self.skip_default_tpm = False + self.x86_cpu_default = self.cpu.SPECIAL_MODE_APP_DEFAULT ++ self.loongarch_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY + + # qemu 6.1, fairly new when we added this option, has an unfortunate + # bug with >= 15 root ports, so we choose 14 instead of our original 16 +@@ -352,7 +353,8 @@ class Guest(XMLBuilder): + if (self.os.is_arm_machvirt() or + self.os.is_riscv_virt() or + self.os.is_s390x() or +- self.os.is_pseries()): ++ self.os.is_pseries() or ++ self.os.is_loongarch()): + return True + + if not os_support: +@@ -541,7 +543,7 @@ class Guest(XMLBuilder): + # and doesn't break QEMU internal snapshots + prefer_efi = self.osinfo.requires_firmware_efi(self.os.arch) + else: +- prefer_efi = self.os.is_arm_machvirt() or self.conn.is_bhyve() ++ prefer_efi = self.os.is_arm_machvirt() or self.conn.is_bhyve() or self.os.is_loongarch() + + log.debug("Prefer EFI => %s", prefer_efi) + return prefer_efi +@@ -558,6 +560,8 @@ class Guest(XMLBuilder): + """ + self.os.loader_ro = True + self.os.loader_type = "pflash" ++ if (self.os.is_loongarch()): ++ self.os.loader_type = "rom" + self.os.loader = path + + # If the firmware name contains "secboot" it is probably build +@@ -902,7 +906,8 @@ class Guest(XMLBuilder): + usb_tablet = True + if (self.os.is_arm_machvirt() or + self.os.is_riscv_virt() or +- self.os.is_pseries()): ++ self.os.is_pseries() or ++ self.os.is_loongarch()): + usb_tablet = True + usb_keyboard = True + +@@ -1016,7 +1021,8 @@ class Guest(XMLBuilder): + if self.os.is_container() and not self.conn.is_vz(): + return + if (not self.os.is_x86() and +- not self.os.is_pseries()): ++ not self.os.is_pseries() and ++ not self.os.is_loongarch()): + return + self.add_device(DeviceGraphics(self.conn)) + +@@ -1155,6 +1161,8 @@ class Guest(XMLBuilder): + self.add_device(dev) + + def _add_spice_usbredir(self): ++ if (self.os.is_loongarch()): ++ return + if self.skip_default_usbredir: + return + if self.devices.redirdev: +-- +2.33.0 + diff --git a/Fix-bug-that-virt-manager-can-not-support-dies.patch b/Fix-bug-that-virt-manager-can-not-support-dies.patch new file mode 100644 index 0000000000000000000000000000000000000000..938dba59b3ca94eea965bd618aba40de7cfb0292 --- /dev/null +++ b/Fix-bug-that-virt-manager-can-not-support-dies.patch @@ -0,0 +1,47 @@ +From 8b09ac9855c051fc4f52538e168f0ddd64bcb963 Mon Sep 17 00:00:00 2001 +From: weishaokun +Date: Thu, 1 Feb 2024 15:28:17 +0800 +Subject: [PATCH] fix bug that virt-manager can not support dies + +Change-Id: Id791f0d9e93613e8085167753a292deb5c7b4db7 +--- + virtManager/object/domain.py | 1 + + virtinst/domain/cpu.py | 3 ++- + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/virtManager/object/domain.py b/virtManager/object/domain.py +index f61f0f5..9ebda3f 100644 +--- a/virtManager/object/domain.py ++++ b/virtManager/object/domain.py +@@ -464,6 +464,7 @@ class vmmDomain(vmmLibvirtObject): + guest.cpu.sockets = sockets + guest.cpu.cores = cores + guest.cpu.threads = threads ++ guest.cpu.dies = None + + if secure != _SENTINEL or model != _SENTINEL: + guest.cpu.secure = secure +diff --git a/virtinst/domain/cpu.py b/virtinst/domain/cpu.py +index 5fb3d22..b671f04 100644 +--- a/virtinst/domain/cpu.py ++++ b/virtinst/domain/cpu.py +@@ -65,7 +65,7 @@ class DomainCpu(XMLBuilder): + """ + XML_NAME = "cpu" + _XML_PROP_ORDER = ["mode", "match", "model", "vendor", +- "sockets", "cores", "threads", "features"] ++ "sockets", "cores", "threads", "dies", "features"] + + secure = True + +@@ -264,6 +264,7 @@ class DomainCpu(XMLBuilder): + sockets = XMLProperty("./topology/@sockets", is_int=True) + cores = XMLProperty("./topology/@cores", is_int=True) + threads = XMLProperty("./topology/@threads", is_int=True) ++ dies = XMLProperty("./topology/@dies", is_int=True) + + + ################## +-- +2.20.1 + diff --git a/virt-manager-2.1.0.tar.gz b/virt-manager-2.1.0.tar.gz deleted file mode 100644 index bd704809f80b0221f5bf6e6439d47f836dbadf55..0000000000000000000000000000000000000000 Binary files a/virt-manager-2.1.0.tar.gz and /dev/null differ diff --git a/virt-manager-4.1.0.tar.gz b/virt-manager-4.1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..9bfced3f874927b49643530ff3c786b50a0b5f7c Binary files /dev/null and b/virt-manager-4.1.0.tar.gz differ diff --git a/virt-manager.spec b/virt-manager.spec index 06a9caf2fa90745dc951fb7dfb18f905462e692e..40a9e46f39fb992171ac4a88bdb5d4967cb9785d 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -1,18 +1,22 @@ %global __python %{__python3} + Name: virt-manager -Version: 2.1.0 -Release: 5 +Version: 4.1.0 +Release: 3 Summary: The manage virtual machines tool which via libvirt. License: GPLv2+ BuildArch: noarch URL: https://virt-manager.org/ Source0: https://virt-manager.org/download/sources/virt-manager/virt-manager-%{version}.tar.gz -Patch0001: 0001-initrdinject-Use-full-option-versions-for-cpio.patch -Patch0002: 0002-initrdinject-Force-added-files-to-be-owned-as-root-b.patch + +Patch1: Add-loongarch-support.patch + Requires: virt-manager-common = %{version}-%{release} python3-gobject gtk3 libvirt-glib >= 0.0.9 -Requires: gtk-vnc2 spice-gtk3 dconf vte291 +Requires: gtk-vnc2 dconf vte291 gtksourceview4 Recommends: (libvirt-daemon-kvm or libvirt-daemon-qemu) libvirt-daemon-config-network -BuildRequires: intltool /usr/bin/pod2man python3-devel +BuildRequires: git gettext python3-devel python3-docutils +Suggests: python3-libguestfs + %description The virtual machine management tool uses libvirt as the management API and provides @@ -23,7 +27,7 @@ resource usage and provide it to the virtual machine. %package common Summary: Files used for Virtual Machine Manager interfaces Requires: python3-argcomplete python3-libvirt python3-libxml2 python3-requests -Requires: libosinfo >= 0.2.10 python3-gobject-base genisoimage +Requires: libosinfo >= 0.2.10 python3-gobject-base xorriso %description common The files used by virt-manager interfaces, as virt-install related tools. @@ -31,7 +35,7 @@ The files used by virt-manager interfaces, as virt-install related tools. %package -n virt-install Summary: Utilities for installing virtual machines Requires: virt-manager-common = %{version}-%{release} libvirt-client -Provides: virt-install virt-clone virt-convert virt-xml +Provides: virt-install virt-clone virt-xml %description -n virt-install Package provides several command line utilities, including virt-clone (clone an @@ -39,7 +43,6 @@ existing virtual machine) and virt-install (build and install new VMs). %package help Summary: Documentation for user of virt-manager. -Requires: virt-manager = %{version}-%{release} %description help Documentation for user of virt-manager. @@ -48,7 +51,7 @@ Documentation for user of virt-manager. %autosetup -n virt-manager-%{version} -p1 %build -./setup.py configure --default-hvs "qemu,xen,lxc" +./setup.py configure --default-hvs "qemu,xen,lxc" --default-graphics=vnc %install ./setup.py --no-update-icon-cache --no-compile-schemas install -O1 --root=%{buildroot} @@ -57,30 +60,48 @@ for f in $(find %{buildroot} -type f -executable -print); do sed -i "1 s|^#!/usr/bin/env python3|#!%{__python3}|" $f || : done +%if 0%{?py_byte_compile:1} +%py_byte_compile %{__python3} %{buildroot}%{_datadir}/virt-manager/ +%endif + %files %doc README.md COPYING NEWS.md %{_bindir}/virt-manager %{_datadir}/virt-manager/ui/*.ui %{_datadir}/virt-manager/{virt-manager,virtManager,icons} %{_datadir}/icons/hicolor/*/apps/* -%{_datadir}/appdata/virt-manager.appdata.xml %{_datadir}/applications/virt-manager.desktop %{_datadir}/glib-2.0/schemas/org.virt-manager.virt-manager.gschema.xml +%{_datadir}/metainfo/virt-manager.appdata.xml %files common -f virt-manager.lang %dir %{_datadir}/virt-manager %{_datadir}/virt-manager/{virtcli,virtconv,virtinst} %files -n virt-install -%{_datadir}/virt-manager/{virt-install,virt-clone,virt-convert,virt-xml} %{_datadir}/bash-completion/completions/{virt-install,virt-clone,virt-convert,virt-xml} -%{_bindir}/{virt-install,virt-clone,virt-convert,virt-xml} +%{_bindir}/{virt-install,virt-clone,virt-xml} %files help %{_mandir}/man1/virt-manager.1* -%{_mandir}/man1/{virt-install.1*,virt-clone.1*,virt-convert.1*,virt-xml.1*} +%{_mandir}/man1/{virt-install.1*,virt-clone.1*,virt-xml.1*} %changelog +* Wed Feb 28 2024 lijunwei - 4.1.0-3 +* fix bug that virt-manager can not support features dies + +* Tue Jan 10 2023 zhaotianrui - 4.1.0-2 +- Add loongarch support + +* Thu Sep 08 2022 wangdi - 4.1.0-1 +- Upgrade to 4.1.0 + +* Mon May 30 2022 jiangxinyu - 3.2.0-1 +- Upgrade to 3.2.0 + +* Thu Feb 17 2022 liuxingxiang - 2.1.0-6 +- Improve simplified Chinese translation + * Fri Jul 30 2021 chenyanpanHW - 2.1.0-5 - DESC: delete -S git from %autosetup, and delete BuildRequires git