summaryrefslogtreecommitdiff
path: root/libre
diff options
context:
space:
mode:
authorDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2019-02-25 16:54:16 +0100
committerDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2019-02-27 01:31:19 +0100
commitf6f0cf7fcab9bdb30b59d6ed8dbb30e49ca25a68 (patch)
tree2f5c8cddc80730b28d52462bbd14734c52bf987f /libre
parent6629813b30d7df076dc8619414d76b658a5de5f1 (diff)
downloadabslibre-f6f0cf7fcab9bdb30b59d6ed8dbb30e49ca25a68.tar.gz
abslibre-f6f0cf7fcab9bdb30b59d6ed8dbb30e49ca25a68.tar.bz2
abslibre-f6f0cf7fcab9bdb30b59d6ed8dbb30e49ca25a68.zip
libre: virt-install: add i686 version due to upstream lag
This restores virt-install 2.0.0 for i686 to fix this issue with pacman -Syu: :: installing virt-install (2.1.0-2.par1) breaks dependency 'virt-install=2.0.0' required by virt-manager Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Diffstat (limited to 'libre')
-rw-r--r--libre/virt-manager-i686/PKGBUILD46
-rw-r--r--libre/virt-manager-i686/libre.patch886
2 files changed, 932 insertions, 0 deletions
diff --git a/libre/virt-manager-i686/PKGBUILD b/libre/virt-manager-i686/PKGBUILD
new file mode 100644
index 000000000..c8690799c
--- /dev/null
+++ b/libre/virt-manager-i686/PKGBUILD
@@ -0,0 +1,46 @@
+# Maintainer (Arch): Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor (Arch): Daniel Micay <danielmicay@gmail.com>
+# Contributor (Arch): Jonathan Wiersma <archaur at jonw dot org>
+# Maintainer (Hyperbola): André Silva <emulatorman@hyperbola.info>
+# Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>
+
+pkgbase=virt-manager
+pkgname=(virt-install)
+pkgver=2.0.0
+pkgrel=3
+pkgrel+=.par1
+pkgdesc="Console user interface for managing virtual machines, without non-FSDG compliant distros and operating systems support"
+arch=('i686')
+url="http://virt-manager.org/"
+license=('GPL')
+depends=('libosinfo' 'libvirt-python' 'python-gobject' 'python-requests')
+makedepends=('intltool')
+source=("https://virt-manager.org/download/sources/virt-manager/virt-manager-$pkgver.tar.gz"
+ 'libre.patch')
+sha512sums=('5d0eb65dceb5c913973edaa52414b1665d1ed9cd3f226e28a592decddec2acd8fdb589f60736edf9b7d95830893812f9aecca2cbdd715033ca7ea53a95472876'
+ 'de6b88810094bf55515e32bfb6ff5abeb06a8f79c74095e8d57bf48423033eb3835bc9c21433e8525f362c2b144f9819437e46e7aabf64c54e7b3bfb7285e706')
+
+prepare() {
+ cd "$srcdir/$pkgbase-$pkgver"
+ patch -p1 -i ../libre.patch
+}
+
+build() {
+ cd "$srcdir/$pkgbase-$pkgver"
+ python setup.py build
+}
+
+package_virt-install() {
+ cd "$srcdir/$pkgbase-$pkgver"
+ python setup.py --no-update-icon-cache --no-compile-schemas install --root "$pkgdir"
+ python -m compileall "${pkgdir}/usr/share/virt-manager"
+ python -O -m compileall "${pkgdir}/usr/share/virt-manager"
+
+ # Split virt-manager
+ [[ -d $srcdir/virt-manager ]] && rm -r "$srcdir/virt-manager/"
+ mkdir "$srcdir"/virt-manager
+ mv "$pkgdir"/usr/bin/virt-manager \
+ "$pkgdir"/usr/share/{appdata,applications,glib-2.0,icons}/ \
+ "$pkgdir"/usr/share/man/man1/virt-manager.1 \
+ "$srcdir/virt-manager/"
+}
diff --git a/libre/virt-manager-i686/libre.patch b/libre/virt-manager-i686/libre.patch
new file mode 100644
index 000000000..d897336c7
--- /dev/null
+++ b/libre/virt-manager-i686/libre.patch
@@ -0,0 +1,886 @@
+diff -Naur virt-manager-2.0.0.orig/man/virt-install.pod virt-manager-2.0.0/man/virt-install.pod
+--- virt-manager-2.0.0.orig/man/virt-install.pod 2018-10-13 13:26:55.000000000 -0500
++++ virt-manager-2.0.0/man/virt-install.pod 2018-10-19 17:18:38.584887172 -0500
+@@ -408,36 +408,6 @@
+
+ =back
+
+-Some distro specific url samples:
+-
+-=over 4
+-
+-=item Fedora/Red Hat Based
+-
+-https://download.fedoraproject.org/pub/fedora/linux/releases/25/Server/x86_64/os
+-
+-=item Debian
+-
+-https://ftp.us.debian.org/debian/dists/stable/main/installer-amd64/
+-
+-=item Ubuntu
+-
+-https://us.archive.ubuntu.com/ubuntu/dists/wily/main/installer-amd64/
+-
+-=item Suse
+-
+-https://download.opensuse.org/pub/opensuse/distribution/leap/42.3/repo/oss/
+-
+-=item Mandriva
+-
+-ftp://ftp.uwsg.indiana.edu/linux/mandrake/official/2009.0/i586/
+-
+-=item Mageia
+-
+-ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/Mageia/distrib/1
+-
+-=back
+-
+ =item B<--pxe>
+
+ Use the PXE boot protocol to load the initial ramdisk and kernel for starting
+@@ -472,21 +442,6 @@
+
+ --initrd-inject=/path/to/my.ks --extra-args "ks=file:/my.ks"
+
+-=item B<--os-variant> OS_VARIANT
+-
+-Optimize the guest configuration for a specific operating system (ex.
+-'fedora18', 'rhel7', 'winxp'). While not required, specifying this
+-options is HIGHLY RECOMMENDED, as it can greatly increase performance
+-by specifying virtio among other guest tweaks.
+-
+-By default, virt-install will attempt to auto detect this value from
+-the install media (currently only supported for URL installs). Autodetection
+-can be disabled with the special value 'none'. Autodetection can be
+-forced with the special value 'auto'.
+-
+-Use the command "osinfo-query os" to get the list of the accepted OS
+-variants.
+-
+ =item B<--boot> BOOTOPTS
+
+ Optionally specify the post-install VM boot configuration. This option allows
+@@ -644,7 +599,7 @@
+
+ =item B<removable>
+
+-Sets the removable flag (/sys/block/$dev/removable on Linux). Only
++Sets the removable flag (/sys/block/$dev/removable on GNU/Linux). Only
+ used with QEMU and bus=usb. Value can be 'on' or 'off'.
+
+ =item B<readonly>
+@@ -724,7 +679,7 @@
+
+ =item B<serial>
+
+-Serial number of the emulated disk device. This is used in linux guests
++Serial number of the emulated disk device. This is used in GNU/Linux guests
+ to set /dev/disk/by-id symlinks. An example serial number might be:
+ WD-WMAP9A966149
+
+@@ -753,7 +708,7 @@
+
+ --filesystem /source/on/host,/target/point/in/guest
+
+-Which will work for recent QEMU and linux guest OS or LXC containers. For
++Which will work for recent QEMU and GNU/Linux guest OS or LXC Linux containers. For
+ QEMU, the target point is just a mounting hint in sysfs, so will not be
+ automatically mounted.
+
+@@ -1721,45 +1676,6 @@
+
+ =head1 EXAMPLES
+
+-Install a Fedora 20 KVM guest with virtio accelerated disk/network,
+-creating a new 10GiB qcow2 file, installing from media in the hosts
+-CDROM drive. This will use Spice graphics by default, and launch autolaunch
+-a graphical client.
+-
+- # virt-install \
+- --connect qemu:///system \
+- --virt-type kvm \
+- --name demo \
+- --memory 500 \
+- --disk size=10 \
+- --cdrom /dev/cdrom \
+- --os-variant fedora13
+-
+-Install a Fedora 9 plain QEMU guest, using LVM partition, virtual networking,
+-booting from PXE, using VNC server/viewer, with virtio-scsi disk
+-
+- # virt-install \
+- --connect qemu:///system \
+- --name demo \
+- --memory 500 \
+- --disk path=/dev/HostVG/DemoVM,bus=scsi \
+- --controller virtio-scsi \
+- --network network=default \
+- --virt-type qemu \
+- --graphics vnc \
+- --os-variant fedora9
+-
+-Run a Live CD image under Xen fullyvirt, in diskless environment
+-
+- # virt-install \
+- --hvm \
+- --name demo \
+- --memory 500 \
+- --disk none \
+- --livecd \
+- --graphics vnc \
+- --cdrom /root/fedora7live.iso
+-
+ Run /usr/bin/httpd in a linux container guest (LXC). Resource usage is capped
+ at 512 MiB of ram and 2 host cpus:
+
+@@ -1785,7 +1701,7 @@
+ --init /bin/sh
+
+ Install a paravirtualized Xen guest, 500 MiB of RAM, a 5 GiB of disk, and
+-Fedora Core 6 from a web server, in text-only mode, with old style --file
++Parabola from a web server, in text-only mode, with old style --file
+ options:
+
+ # virt-install \
+@@ -1794,7 +1710,7 @@
+ --memory 500 \
+ --disk /var/lib/xen/images/demo.img,size=6 \
+ --graphics none \
+- --location https://download.fedora.redhat.com/pub/fedora/linux/core/6/x86_64/os/
++ --location https://repo.parabola.nu/iso/latest/
+
+ Create a guest from an existing disk image 'mydisk.img' using defaults for
+ the rest of the options.
+diff -Naur virt-manager-2.0.0.orig/man/virt-xml.pod virt-manager-2.0.0/man/virt-xml.pod
+--- virt-manager-2.0.0.orig/man/virt-xml.pod 2018-10-13 13:26:55.000000000 -0500
++++ virt-manager-2.0.0/man/virt-xml.pod 2018-10-19 18:35:08.954722971 -0500
+@@ -292,53 +292,10 @@
+
+ # virt-xml winxp --edit --cpu host-model,clearxml=yes --confirm
+
+-Change the second sound card to model=ich6 on 'fedora19', but only output the diff:
+-
+- # virt-xml fedora19 --edit 2 --sound model=ich6 --print-diff
+-
+-Update the every graphics device password to 'foo' of the running VM 'rhel6':
+-
+- # virt-xml rhel6 --edit all --graphics password=foo --update
+-
+-Remove the disk path from disk device hdc:
+-
+- # virt-xml rhel6 --edit target=hdc --disk path=
+-
+ Change all disk devices of type 'disk' to use cache=none, using XML from stdin, printing the new XML to stdout.
+
+ # cat <xmlfile> | virt-xml --edit device=disk --disk cache=none
+
+-Change disk 'hda' IO to native and use startup policy as 'optional'.
+-
+- # virt-xml fedora20 --edit target=hda \
+- --disk io=native,startup_policy=optional
+-
+-Change all host devices to use driver_name=vfio for VM 'fedora20' on the remote connection
+-
+- # virt-xml --connect qemu+ssh://remotehost/system \
+- fedora20 --edit all --hostdev driver_name=vfio
+-
+-Hotplug host USB device 001.003 to running domain 'fedora19':
+-
+- # virt-xml fedora19 --update --add-device --hostdev 001.003
+-
+-Add a spicevmc channel to the domain 'winxp', that will be available after the next VM shutdown.
+-
+- # virt-xml winxp --add-device --channel spicevmc
+-
+-Create a 10G qcow2 disk image and attach it to 'fedora18' for the next VM startup:
+-
+- # virt-xml fedora18 --add-device \
+- --disk /var/lib/libvirt/images/newimage.qcow2,format=qcow2,size=10
+-
+-Hotunplug the disk vdb from the running domain 'rhel7':
+-
+- # virt-xml rhel7 --update --remove-device --disk target=vdb
+-
+-Remove all graphics devices from the VM 'rhel7' after the next shutdown:
+-
+- # virt-xml rhel7 --remove-device --graphics all
+-
+ Generate XML for a virtio console device and print it to stdout:
+
+ # virt-xml --build-xml --console pty,target_type=virtio
+diff -Naur virt-manager-2.0.0.orig/virtinst/osdict.py virt-manager-2.0.0/virtinst/osdict.py
+--- virt-manager-2.0.0.orig/virtinst/osdict.py 2018-10-13 13:59:42.000000000 -0500
++++ virt-manager-2.0.0/virtinst/osdict.py 2018-10-19 19:37:17.687104677 -0500
+@@ -99,49 +99,7 @@
+ # This is only for back compatibility with pre-libosinfo support.
+ # This should never change.
+ _aliases = {
+- "altlinux": "altlinux1.0",
+- "debianetch": "debian4",
+- "debianlenny": "debian5",
+- "debiansqueeze": "debian6",
+- "debianwheezy": "debian7",
+- "freebsd10": "freebsd10.0",
+- "freebsd6": "freebsd6.0",
+- "freebsd7": "freebsd7.0",
+- "freebsd8": "freebsd8.0",
+- "freebsd9": "freebsd9.0",
+- "mandriva2009": "mandriva2009.0",
+- "mandriva2010": "mandriva2010.0",
+- "mbs1": "mbs1.0",
+- "msdos": "msdos6.22",
+- "openbsd4": "openbsd4.2",
+- "opensolaris": "opensolaris2009.06",
+- "opensuse11": "opensuse11.4",
+- "opensuse12": "opensuse12.3",
+- "rhel4": "rhel4.0",
+- "rhel5": "rhel5.0",
+- "rhel6": "rhel6.0",
+- "rhel7": "rhel7.0",
+- "ubuntuhardy": "ubuntu8.04",
+- "ubuntuintrepid": "ubuntu8.10",
+- "ubuntujaunty": "ubuntu9.04",
+- "ubuntukarmic": "ubuntu9.10",
+- "ubuntulucid": "ubuntu10.04",
+- "ubuntumaverick": "ubuntu10.10",
+- "ubuntunatty": "ubuntu11.04",
+- "ubuntuoneiric": "ubuntu11.10",
+- "ubuntuprecise": "ubuntu12.04",
+- "ubuntuquantal": "ubuntu12.10",
+- "ubunturaring": "ubuntu13.04",
+- "ubuntusaucy": "ubuntu13.10",
+- "virtio26": "fedora10",
+- "vista": "winvista",
+- "winxp64": "winxp",
+-
+ # Old --os-type values
+- "linux": "generic",
+- "windows": "winxp",
+- "solaris": "solaris10",
+- "unix": "freebsd9.0",
+ "other": "generic",
+ }
+
+@@ -208,11 +166,6 @@
+ return None
+
+ osname = ret[0].get_short_id()
+- if osname == "fedora-unknown":
+- osname = self.latest_fedora_version()
+- logging.debug("Detected location=%s as os=fedora-unknown. "
+- "Converting that to the latest fedora OS version=%s",
+- location, osname)
+
+ return osname
+
+@@ -236,9 +189,6 @@
+ return None
+ return oses[0]
+
+- def latest_fedora_version(self):
+- return self.latest_regex("fedora[0-9]+")
+-
+
+ #####################
+ # OsVariant classes #
+diff -Naur virt-manager-2.0.0.orig/virtinst/urldetect.py virt-manager-2.0.0/virtinst/urldetect.py
+--- virt-manager-2.0.0.orig/virtinst/urldetect.py 2018-10-13 13:26:55.000000000 -0500
++++ virt-manager-2.0.0/virtinst/urldetect.py 2018-10-19 19:44:14.306556502 -0500
+@@ -134,110 +134,6 @@
+ return version, update
+
+
+-class _SUSEContent(object):
+- """
+- Helper class tracking the SUSE 'content' files
+- """
+- def __init__(self, content_str):
+- self.content_str = content_str
+- self.content_dict = {}
+-
+- for line in self.content_str.splitlines():
+- for prefix in ["LABEL", "DISTRO", "VERSION",
+- "BASEARCHS", "DEFAULTBASE", "REPOID"]:
+- if line.startswith(prefix + " "):
+- self.content_dict[prefix] = line.split(" ", 1)[1]
+-
+- logging.debug("SUSE content dict: %s", str(self.content_dict))
+-
+- self.tree_arch = self._get_tree_arch()
+- self.product_name = self._get_product_name()
+- self.product_version = self._get_product_version()
+- logging.debug("SUSE content product_name=%s product_version=%s "
+- "tree_arch=%s", self.product_name, self.product_version,
+- self.tree_arch)
+-
+- def _get_tree_arch(self):
+- # Examples:
+- # opensuse 11.4: BASEARCHS i586 x86_64
+- # opensuse 12.3: BASEARCHS i586 x86_64
+- # opensuse 10.3: DEFAULTBASE i586
+- distro_arch = (self.content_dict.get("BASEARCHS") or
+- self.content_dict.get("DEFAULTBASE"))
+- if not distro_arch and "REPOID" in self.content_dict:
+- distro_arch = self.content_dict["REPOID"].rsplit('/', 1)[1]
+- if not distro_arch:
+- return None
+-
+- tree_arch = distro_arch.strip()
+- # Fix for 13.2 official oss repo
+- if tree_arch.find("i586-x86_64") != -1:
+- tree_arch = "x86_64"
+- return tree_arch
+-
+- def _get_product_name(self):
+- """
+- Parse the SUSE product name. Examples:
+- SUSE Linux Enterprise Server 11 SP4
+- openSUSE 11.4
+- """
+- # Some field examples in the wild
+- #
+- # opensuse 10.3: LABEL openSUSE 10.3
+- # opensuse 11.4: LABEL openSUSE 11.4
+- # opensuse 12.3: LABEL openSUSE
+- # sles11sp4 DVD: LABEL SUSE Linux Enterprise Server 11 SP4
+- #
+- #
+- # DISTRO cpe:/o:opensuse:opensuse:13.2,openSUSE
+- # DISTRO cpe:/o:suse:sled:12:sp3,SUSE Linux Enterprise Desktop 12 SP3
+- #
+- # As of 2018 all latest distros match only DISTRO and REPOID.
+- product_name = None
+- if "LABEL" in self.content_dict:
+- product_name = self.content_dict["LABEL"]
+- elif "," in self.content_dict.get("DISTRO", ""):
+- product_name = self.content_dict["DISTRO"].rsplit(",", 1)[1]
+-
+- logging.debug("SUSE content product_name=%s", product_name)
+- return product_name
+-
+- def _get_product_version(self):
+- # Some example fields:
+- #
+- # opensuse 10.3: VERSION 10.3
+- # opensuse 12.3: VERSION 12.3
+- # SLES-10-SP4-DVD-x86_64-GM-DVD1.iso: VERSION 10.4-0
+- #
+- # REPOID obsproduct://build.suse.de/SUSE:SLE-11-SP4:GA/SUSE_SLES/11.4/DVD/x86_64
+- # REPOID obsproduct://build.suse.de/SUSE:SLE-12-SP3:GA/SLES/12.3/DVD/aarch64
+- #
+- # As of 2018 all latest distros match only DISTRO and REPOID.
+- if not self.product_name:
+- return None
+-
+- distro_version = self.content_dict.get("VERSION", "")
+- if "-" in distro_version:
+- distro_version = distro_version.split('-', 1)[0]
+-
+- # Special case, parse version out of a line like this
+- # cpe:/o:opensuse:opensuse:13.2,openSUSE
+- if (not distro_version and
+- re.match("^.*:.*,openSUSE*", self.content_dict["DISTRO"])):
+- distro_version = self.content_dict["DISTRO"].rsplit(
+- ",", 1)[0].strip().rsplit(":")[4]
+- distro_version = distro_version.strip()
+-
+- if "Enterprise" in self.product_name or "SLES" in self.product_name:
+- sle_version = self.product_name.strip().rsplit(' ')[4]
+- if len(self.product_name.strip().rsplit(' ')) > 5:
+- sle_version = (sle_version + '.' +
+- self.product_name.strip().rsplit(' ')[5][2])
+- distro_version = sle_version
+-
+- return distro_version
+-
+-
+ def getDistroStore(guest, fetcher):
+ logging.debug("Finding distro store for location=%s", fetcher.location)
+
+@@ -369,455 +265,6 @@
+ return None
+
+
+-class RedHatDistro(Distro):
+- """
+- Baseclass for Red Hat based distros
+- """
+- @classmethod
+- def is_valid(cls, cache):
+- raise NotImplementedError
+-
+- def __init__(self, *args, **kwargs):
+- Distro.__init__(self, *args, **kwargs)
+-
+- self._kernel_paths = self.cache.get_treeinfo_media(self.type)
+-
+- def _get_kernel_url_arg(self):
+- def _is_old_rhdistro():
+- m = re.match(r"^.*[^0-9\.]+([0-9\.]+)$", self._os_variant or "")
+- if m:
+- version = float(m.groups()[0])
+- if "fedora" in self._os_variant and version < 19:
+- return True
+- elif version < 7:
+- # rhel, centos, scientific linux, etc
+- return True
+-
+- # If we can't parse, assume it's something recentish and
+- # it supports the newer arg
+- return False
+-
+- if _is_old_rhdistro():
+- return "method"
+- return "inst.repo"
+-
+-
+-class FedoraDistro(RedHatDistro):
+- PRETTY_NAME = "Fedora"
+- matching_distros = ["fedora"]
+-
+- @classmethod
+- def is_valid(cls, cache):
+- famregex = ".*Fedora.*"
+- return cache.treeinfo_family_regex(famregex)
+-
+- def _detect_version(self):
+- latest_variant = OSDB.latest_fedora_version()
+-
+- verstr = self.cache.treeinfo_version
+- if not verstr:
+- logging.debug("No treeinfo version? Assume latest_variant=%s",
+- latest_variant)
+- return latest_variant
+-
+- # rawhide trees changed to use version=Rawhide in Apr 2016
+- if verstr in ["development", "rawhide", "Rawhide"]:
+- logging.debug("treeinfo version=%s, using latest_variant=%s",
+- verstr, latest_variant)
+- return latest_variant
+-
+- # treeinfo version is just an integer
+- variant = "fedora" + verstr
+- if OSDB.lookup_os(variant):
+- return variant
+-
+- logging.debug("variant=%s from treeinfo version=%s not found, "
+- "using latest_variant=%s", variant, verstr, latest_variant)
+- return latest_variant
+-
+-
+-class RHELDistro(RedHatDistro):
+- PRETTY_NAME = "Red Hat Enterprise Linux"
+- matching_distros = ["rhel"]
+- _variant_prefix = "rhel"
+-
+- @classmethod
+- def is_valid(cls, cache):
+- # Matches:
+- # Red Hat Enterprise Linux
+- # RHEL Atomic Host
+- famregex = ".*(Red Hat Enterprise Linux|RHEL).*"
+- return cache.treeinfo_family_regex(famregex)
+-
+- def _detect_version(self):
+- if not self.cache.treeinfo_version:
+- logging.debug("No treeinfo version? Not setting an os_variant")
+- return
+-
+- version, update = self.cache.split_version()
+-
+- # start with example base=rhel7, then walk backwards
+- # through the OS list to find the latest os name that matches
+- # this way we handle rhel7.6 from treeinfo when osdict only
+- # knows about rhel7.5
+- base = self._variant_prefix + str(version)
+- while update >= 0:
+- tryvar = base + ".%s" % update
+- if OSDB.lookup_os(tryvar):
+- return tryvar
+- update -= 1
+-
+-
+-class CentOSDistro(RHELDistro):
+- PRETTY_NAME = "CentOS"
+- matching_distros = ["centos"]
+- _variant_prefix = "centos"
+-
+- @classmethod
+- def is_valid(cls, cache):
+- famregex = ".*(CentOS|Scientific).*"
+- return cache.treeinfo_family_regex(famregex)
+-
+-
+-class SuseDistro(Distro):
+- PRETTY_NAME = None
+- _suse_regex = []
+- matching_distros = []
+- _variant_prefix = NotImplementedError
+- famregex = NotImplementedError
+-
+- @classmethod
+- def is_valid(cls, cache):
+- if cache.treeinfo_family_regex(cls.famregex):
+- return True
+-
+- if not cache.suse_content:
+- cache.suse_content = -1
+- content_str = cache.acquire_file_content("content")
+- if content_str is None:
+- return False
+-
+- try:
+- cache.suse_content = _SUSEContent(content_str)
+- except Exception as e:
+- logging.debug("Error parsing SUSE content file: %s", str(e))
+- return False
+-
+- if cache.suse_content == -1:
+- return False
+- for regex in cls._suse_regex:
+- if re.match(regex, cache.suse_content.product_name):
+- return True
+- return False
+-
+- def __init__(self, *args, **kwargs):
+- Distro.__init__(self, *args, **kwargs)
+-
+- if not self.cache.suse_content or self.cache.suse_content == -1:
+- # This means we matched on treeinfo
+- self._kernel_paths = self.cache.get_treeinfo_media(self.type)
+- return
+-
+- tree_arch = self.cache.suse_content.tree_arch
+-
+- if re.match(r'i[4-9]86', tree_arch):
+- tree_arch = 'i386'
+-
+- oldkern = "linux"
+- oldinit = "initrd"
+- if tree_arch == "x86_64":
+- oldkern += "64"
+- oldinit += "64"
+-
+- self._kernel_paths = []
+- if self.type == "xen":
+- # Matches Opensuse > 10.2 and sles 10
+- self._kernel_paths.append(
+- ("boot/%s/vmlinuz-xen" % tree_arch,
+- "boot/%s/initrd-xen" % tree_arch))
+-
+- if (tree_arch == "s390x" and
+- (self._os_variant == "sles11" or self._os_variant == "sled11")):
+- self._kernel_paths.append(
+- ("boot/s390x/vmrdr.ikr", "boot/s390x/initrd"))
+-
+- # Tested with SLES 12 for ppc64le, all s390x
+- self._kernel_paths.append(
+- ("boot/%s/linux" % tree_arch,
+- "boot/%s/initrd" % tree_arch))
+- # Tested with Opensuse 10.0
+- self._kernel_paths.append(
+- ("boot/loader/%s" % oldkern,
+- "boot/loader/%s" % oldinit))
+- # Tested with Opensuse >= 10.2, 11, and sles 10
+- self._kernel_paths.append(
+- ("boot/%s/loader/linux" % tree_arch,
+- "boot/%s/loader/initrd" % tree_arch))
+-
+- def _detect_osdict_from_suse_content(self):
+- if not self.cache.suse_content:
+- return
+-
+- distro_version = self.cache.suse_content.product_version
+- if not distro_version:
+- return
+-
+- version = distro_version.split('.', 1)[0].strip()
+- if len(version) == 8:
+- # Tumbleweed 8 digit date
+- return "opensusetumbleweed"
+-
+- if int(version) < 10:
+- return self._variant_prefix + "9"
+-
+- if str(self._variant_prefix).startswith(("sles", "sled")):
+- sp_version = ""
+- if len(distro_version.split('.', 1)) == 2:
+- sp_version = 'sp' + distro_version.split('.', 1)[1].strip()
+-
+- return self._variant_prefix + version + sp_version
+-
+- return self._variant_prefix + distro_version
+-
+- def _detect_osdict_from_url(self):
+- root = "opensuse"
+- oses = [n for n in OSDB.list_os() if n.name.startswith(root)]
+-
+- for osobj in oses:
+- codename = osobj.name[len(root):]
+- if re.search("/%s/" % codename, self.uri):
+- return osobj.name
+-
+- def _detect_from_treeinfo(self):
+- if not self.cache.treeinfo_name:
+- return
+- if re.search("openSUSE Tumbleweed", self.cache.treeinfo_name):
+- return "opensusetumbleweed"
+-
+- version, update = self.cache.split_version()
+- base = self._variant_prefix + str(version)
+- while update >= 0:
+- tryvar = base
+- # SLE doesn't use '.0' for initial releases in
+- # osinfo-db (sles11, sles12, etc)
+- if update > 0 or not base.startswith('sle'):
+- tryvar += ".%s" % update
+- if OSDB.lookup_os(tryvar):
+- return tryvar
+- update -= 1
+-
+- def _detect_version(self):
+- var = self._detect_from_treeinfo()
+- if not var:
+- var = self._detect_osdict_from_url()
+- if not var:
+- var = self._detect_osdict_from_suse_content()
+- return var
+-
+- def _get_kernel_url_arg(self):
+- return "install"
+-
+-
+-class SLESDistro(SuseDistro):
+- PRETTY_NAME = "SLES"
+- matching_distros = ["sles"]
+- _variant_prefix = "sles"
+- _suse_regex = [".*SUSE Linux Enterprise Server*", ".*SUSE SLES*"]
+- famregex = ".*SUSE Linux Enterprise.*"
+-
+-
+-class SLEDDistro(SuseDistro):
+- PRETTY_NAME = "SLED"
+- matching_distros = ["sled"]
+- _variant_prefix = "sled"
+- _suse_regex = [".*SUSE Linux Enterprise Desktop*"]
+- famregex = ".*SUSE Linux Enterprise.*"
+-
+-
+-class OpensuseDistro(SuseDistro):
+- PRETTY_NAME = "openSUSE"
+- matching_distros = ["opensuse"]
+- _variant_prefix = "opensuse"
+- _suse_regex = [".*openSUSE.*"]
+- famregex = ".*openSUSE.*"
+-
+-
+-class DebianDistro(Distro):
+- # ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/
+- # daily builds: https://d-i.debian.org/daily-images/amd64/
+- PRETTY_NAME = "Debian"
+- matching_distros = ["debian"]
+- _debname = "debian"
+-
+- @classmethod
+- def is_valid(cls, cache):
+- def check_manifest(mfile):
+- is_ubuntu = cls._debname == "ubuntu"
+- if cache.content_regex(mfile, ".*[Uu]buntu.*"):
+- return is_ubuntu
+- return cache.content_regex(mfile, ".*[Dd]ebian.*")
+-
+- media_type = None
+- if check_manifest("current/images/MANIFEST"):
+- media_type = "url"
+- elif check_manifest("daily/MANIFEST"):
+- media_type = "daily"
+- elif cache.content_regex(".disk/info",
+- "%s.*" % cls._debname.capitalize()):
+- media_type = "disk"
+-
+- if media_type:
+- cache.debian_media_type = media_type
+- return bool(media_type)
+-
+-
+- def __init__(self, *args, **kwargs):
+- Distro.__init__(self, *args, **kwargs)
+-
+-
+- self._kernel_paths = []
+- if self.cache.debian_media_type == "disk":
+- self._set_installcd_paths()
+- else:
+- self._set_url_paths()
+-
+-
+- def _find_treearch(self):
+- for pattern in [r"^.*/installer-(\w+)/?$",
+- r"^.*/daily-images/(\w+)/?$"]:
+- arch = re.findall(pattern, self.uri)
+- if not arch:
+- continue
+- logging.debug("Found pattern=%s treearch=%s in uri",
+- pattern, arch[0])
+- return arch[0]
+-
+- # Check for standard arch strings which will be
+- # in the URI name for --location $ISO mounts
+- for arch in ["i386", "amd64", "x86_64", "arm64"]:
+- if arch in self.uri:
+- logging.debug("Found treearch=%s in uri", arch)
+- if arch == "x86_64":
+- arch = "amd64"
+- return arch
+-
+- # Otherwise default to i386
+- arch = "i386"
+- logging.debug("No treearch found in uri, defaulting to arch=%s", arch)
+- return arch
+-
+- def _set_url_paths(self):
+- url_prefix = "current/images"
+- if self.cache.debian_media_type == "daily":
+- url_prefix = "daily"
+-
+- tree_arch = self._find_treearch()
+- hvmroot = "%s/netboot/%s-installer/%s/" % (url_prefix,
+- self._debname, tree_arch)
+- initrd_basename = "initrd.gz"
+- kernel_basename = "linux"
+- if tree_arch in ["ppc64el"]:
+- kernel_basename = "vmlinux"
+-
+- if tree_arch == "s390x":
+- hvmroot = "%s/generic/" % url_prefix
+- kernel_basename = "kernel.%s" % self._debname
+- initrd_basename = "initrd.%s" % self._debname
+-
+-
+- if self.type == "xen":
+- xenroot = "%s/netboot/xen/" % url_prefix
+- self._kernel_paths.append(
+- (xenroot + "vmlinuz", xenroot + "initrd.gz"))
+- self._kernel_paths.append(
+- (hvmroot + kernel_basename, hvmroot + initrd_basename))
+-
+- def _set_installcd_paths(self):
+- if self._debname == "ubuntu":
+- if not self.arch == "s390x":
+- kpair = ("install/vmlinuz", "install/initrd.gz")
+- else:
+- kpair = ("boot/kernel.ubuntu", "boot/initrd.ubuntu")
+- elif self.arch == "x86_64":
+- kpair = ("install.amd/vmlinuz", "install.amd/initrd.gz")
+- elif self.arch == "i686":
+- kpair = ("install.386/vmlinuz", "install.386/initrd.gz")
+- elif self.arch == "aarch64":
+- kpair = ("install.a64/vmlinuz", "install.a64/initrd.gz")
+- elif self.arch == "ppc64le":
+- kpair = ("install/vmlinux", "install/initrd.gz")
+- elif self.arch == "s390x":
+- kpair = ("boot/linux_vm", "boot/root.bin")
+- else:
+- kpair = ("install/vmlinuz", "install/initrd.gz")
+- self._kernel_paths += [kpair]
+- return True
+-
+- def _detect_version(self):
+- oses = [n for n in OSDB.list_os() if n.name.startswith(self._debname)]
+-
+- if self.cache.debian_media_type == "daily":
+- logging.debug("Appears to be debian 'daily' URL, using latest "
+- "debian OS")
+- return oses[0].name
+-
+- for osobj in oses:
+- if osobj.codename:
+- # Ubuntu codenames look like 'Warty Warthog'
+- codename = osobj.codename.split()[0].lower()
+- else:
+- if " " not in osobj.label:
+- continue
+- # Debian labels look like 'Debian Sarge'
+- codename = osobj.label.split()[1].lower()
+-
+- if ("/%s/" % codename) in self.uri:
+- logging.debug("Found codename=%s in the URL string", codename)
+- return osobj.name
+-
+-
+-class UbuntuDistro(DebianDistro):
+- # https://archive.ubuntu.com/ubuntu/dists/natty/main/installer-amd64/
+- PRETTY_NAME = "Ubuntu"
+- matching_distros = ["ubuntu"]
+- _debname = "ubuntu"
+-
+-
+-class ALTLinuxDistro(Distro):
+- PRETTY_NAME = "ALT Linux"
+- matching_distros = ["altlinux"]
+-
+- _kernel_paths = [("syslinux/alt0/vmlinuz", "syslinux/alt0/full.cz")]
+-
+- @classmethod
+- def is_valid(cls, cache):
+- # altlinux doesn't have installable URLs, so this is just for ISO
+- return cache.content_regex(".disk/info", ".*ALT .*")
+-
+-
+-class MandrivaDistro(Distro):
+- # ftp://ftp.uwsg.indiana.edu/linux/mandrake/official/2007.1/x86_64/
+- PRETTY_NAME = "Mandriva/Mageia"
+- matching_distros = ["mandriva", "mes"]
+-
+- @classmethod
+- def is_valid(cls, cache):
+- return cache.content_regex("VERSION", ".*(Mandriva|Mageia).*")
+-
+- def __init__(self, *args, **kwargs):
+- Distro.__init__(self, *args, **kwargs)
+- self._kernel_paths = []
+-
+- # At least Mageia 5 uses arch in the names
+- self._kernel_paths += [
+- ("isolinux/%s/vmlinuz" % self.arch,
+- "isolinux/%s/all.rdz" % self.arch)]
+-
+- # Kernels for HVM: valid for releases 2007.1, 2008.*, 2009.0
+- self._kernel_paths += [
+- ("isolinux/alt0/vmlinuz", "isolinux/alt0/all.rdz")]
+-
+-
+ class GenericTreeinfoDistro(Distro):
+ """
+ Generic catchall class for .treeinfo using distros
+diff -Naur virt-manager-2.0.0.orig/virtManager/details.py virt-manager-2.0.0/virtManager/details.py
+--- virt-manager-2.0.0.orig/virtManager/details.py 2018-10-13 16:15:25.000000000 -0500
++++ virt-manager-2.0.0/virtManager/details.py 2018-10-19 19:34:11.219743958 -0500
+@@ -337,14 +337,6 @@
+
+ def _label_for_os_type(os_type):
+ typemap = {
+- "dos": _("MS-DOS/FreeDOS"),
+- "freebsd": _("FreeBSD"),
+- "hurd": _("GNU/Hurd"),
+- "linux": _("Linux"),
+- "minix": _("MINIX"),
+- "netbsd": _("NetBSD"),
+- "openbsd": _("OpenBSD"),
+- "windows": _("Microsoft Windows"),
+ }
+ try:
+ return typemap[os_type]
+diff -Naur virt-manager-2.0.0.orig/virtManager/oslist.py virt-manager-2.0.0/virtManager/oslist.py
+--- virt-manager-2.0.0.orig/virtManager/oslist.py 2018-10-13 13:26:55.000000000 -0500
++++ virt-manager-2.0.0/virtManager/oslist.py 2018-10-20 17:45:29.688394493 -0500
+@@ -55,7 +55,8 @@
+ all_os = virtinst.OSDB.list_os()
+
+ for os in all_os:
+- os_list_model.append([os, "%s (%s)" % (os.label, os.name)])
++ if os.name == "generic":
++ os_list_model.append([os, "%s (%s)" % (os.label, os.name)])
+
+ model_filter = Gtk.TreeModelFilter(child_model=os_list_model)
+ model_filter.set_visible_func(self._filter_os_cb)