Compare commits

...

3 Commits
rawhide ... f29

Author SHA1 Message Date
Peter Robinson c95f7f5723 Fix m2crypto python2 naming 2019-04-02 07:20:40 +01:00
Peter Robinson b14fd212e6 0.17.0 is releases, minor cleanups, Conditionalise py3 support as really too late for f30 with other infra work needed to support it in koji 2019-03-26 10:55:27 +00:00
Chris Lalancette 7ffc87b6a6 Update to upstream 0.17.0.
Signed-off-by: Chris Lalancette <clalancette@gmail.com>
2019-03-16 11:31:37 -04:00
16 changed files with 686 additions and 661 deletions

View File

@ -0,0 +1,37 @@
From fbce72eb95ab15f5c830c542333e9007f3126487 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Jan 2019 03:00:08 +0000
Subject: [PATCH 01/13] Clarify bugzilla instance for bug references
Substitute BZ -> RHBZ to clarify BZ locations.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 4f66c2f..034749d 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -465,7 +465,7 @@ class Guest(object):
oz.ozutil.lxml_subelement(features, "pae")
# CPU
if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
- # Possibly related to BZ 1171501 - need host passthrough for aarch64 and arm with kvm
+ # Possibly related to RHBZ 1171501 - need host passthrough for aarch64 and arm with kvm
cpu = oz.ozutil.lxml_subelement(domain, "cpu", None, {'mode': 'custom', 'match': 'exact'})
oz.ozutil.lxml_subelement(cpu, "model", "host", {'fallback': 'allow'})
# os
@@ -597,7 +597,7 @@ class Guest(object):
capacity = size
if backing_filename:
- # FIXME: Revisit as BZ 958510 evolves
+ # FIXME: Revisit as RHBZ 958510 evolves
# At the moment libvirt forces us to specify a size rather than
# assuming we want to inherit the size of our backing file.
# It may be possible to avoid this inspection step if libvirt
--
2.20.1

View File

@ -0,0 +1,29 @@
From 9e8592849675baa11a30774550a24b34d5611b1b Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 12:41:01 +0000
Subject: [PATCH 02/13] drop ARMv7 special handling for console port
It's unnecessary and breaks grpahical output. Qemu generates a DT with all
the appropriate bits in it to setup the console.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 034749d..e346904 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -481,8 +481,6 @@ class Guest(object):
if initrd:
oz.ozutil.lxml_subelement(osNode, "initrd", initrd)
if cmdline:
- if self.tdl.arch == "armv7l":
- cmdline += " console=ttyAMA0"
oz.ozutil.lxml_subelement(osNode, "cmdline", cmdline)
if self.tdl.arch == "aarch64":
loader, nvram = oz.ozutil.find_uefi_firmware(self.tdl.arch)
--
2.20.1

View File

@ -0,0 +1,37 @@
From 0b32e08e5ddfd7088297d267aed71950219dad79 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 27 Feb 2019 10:54:43 +0000
Subject: [PATCH 03/13] Add appropriate arch checks for architecture specific
features
In a lot of cases qemu just ignores incorrect cmd line options when run
against a different architecture but sometimes it causes issues so lets
add the appropriate checks to ensure no issues.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index e346904..e3a5da5 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -460,9 +460,11 @@ class Guest(object):
oz.ozutil.lxml_subelement(domain, "vcpu", str(self.install_cpus))
# features
features = oz.ozutil.lxml_subelement(domain, "features")
- oz.ozutil.lxml_subelement(features, "acpi")
- oz.ozutil.lxml_subelement(features, "apic")
- oz.ozutil.lxml_subelement(features, "pae")
+ if self.tdl.arch in ["aarch64", "x86_64"]:
+ oz.ozutil.lxml_subelement(features, "acpi")
+ if self.tdl.arch in ["x86_64"]:
+ oz.ozutil.lxml_subelement(features, "apic")
+ oz.ozutil.lxml_subelement(features, "pae")
# CPU
if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
# Possibly related to RHBZ 1171501 - need host passthrough for aarch64 and arm with kvm
--
2.20.1

View File

@ -0,0 +1,29 @@
From 1048f98e3606781696f1a81704235960f426519d Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 27 Feb 2019 10:56:36 +0000
Subject: [PATCH 04/13] ARMv7 only supports GICv2 so we need to explicitly
define it
Add the GIC version to the cpu features list to ensure we get the right GIC
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/oz/Guest.py b/oz/Guest.py
index e3a5da5..4e74fe1 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -465,6 +465,8 @@ class Guest(object):
if self.tdl.arch in ["x86_64"]:
oz.ozutil.lxml_subelement(features, "apic")
oz.ozutil.lxml_subelement(features, "pae")
+ if self.tdl.arch in ["armv7l"]:
+ oz.ozutil.lxml_subelement(features, "gic", attributes={'version': '2'})
# CPU
if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
# Possibly related to RHBZ 1171501 - need host passthrough for aarch64 and arm with kvm
--
2.20.1

View File

@ -0,0 +1,46 @@
From c197d163ccbd2997d400942e14442257dd9d2285 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 27 Feb 2019 11:08:25 +0000
Subject: [PATCH 05/13] Fix input devices for ARMv7 and aarch64
The Arm architectures don't work well with the legacy ps2 bits causing
issues with graphical output. Qemu also doesn't, due to a historical
oversight, automatically setup input so we need to do it here else
graphical out and hence screenshots don't work.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 4e74fe1..418b888 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -255,7 +255,10 @@ class Guest(object):
self.clockoffset = "utc"
self.mousetype = mousetype
if self.mousetype is None:
- self.mousetype = "ps2"
+ if self.tdl.arch in ["aarch64", "armv7l"]:
+ self.mousetype = "usb"
+ else:
+ self.mousetype = "ps2"
if diskbus is None or diskbus == "ide":
self.disk_bus = "ide"
self.disk_dev = "hda"
@@ -512,6 +515,11 @@ class Guest(object):
elif self.mousetype == "usb":
mousedict['type'] = 'tablet'
oz.ozutil.lxml_subelement(devices, "input", None, mousedict)
+ if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
+ # Other arches add a keyboard by default, for historical reasons ARM doesn't
+ # so we add it here so graphical works and hence we can get debug screenshots RHBZ 1538637
+ oz.ozutil.lxml_subelement(devices, 'controller', None, {'type': 'usb', 'index': '0'})
+ oz.ozutil.lxml_subelement(devices, 'input', None, {'type': 'keyboard', 'bus': 'usb'})
# serial console pseudo TTY
console = oz.ozutil.lxml_subelement(devices, "serial", None, {'type': 'pty'})
oz.ozutil.lxml_subelement(console, "target", None, {'port': '0'})
--
2.20.1

View File

@ -0,0 +1,33 @@
From d4c4ea8c4ea77471fc72639d31c38d3d39bc0453 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Jan 2019 03:19:21 +0000
Subject: [PATCH 06/13] Setup graphical console on all architectures except
s390x
The graphical console is now supported on all architectures except
s390x so set it up to enable screenshot fucntionality across all
supported architectures.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 418b888..dfb63e4 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -500,8 +500,8 @@ class Guest(object):
# devices
devices = oz.ozutil.lxml_subelement(domain, "devices")
# graphics
- if self.tdl.arch not in ["aarch64", "armv7l", "s390x"]:
- # qemu for arm/aarch64/s390x does not support a graphical console - amazingly
+ if not self.tdl.arch in ["s390x"]:
+ # qemu for s390x does not support a graphical console
oz.ozutil.lxml_subelement(devices, "graphics", None, {'port': '-1', 'type': 'vnc'})
# network
interface = oz.ozutil.lxml_subelement(devices, "interface", None, {'type': 'bridge'})
--
2.20.1

35
07-use-2gb-ram.patch Normal file
View File

@ -0,0 +1,35 @@
From fb257ff2fbb66a732a1369445b8c580a4ec61339 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 27 Feb 2019 12:30:07 +0000
Subject: [PATCH 07/13] Default to using 2Gb on all architectures
The original 1Gb should be enough but RAM is cheap and sometimes things
like the initrd unexpectently bloat so 2Gb gives us room to move.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index dfb63e4..3bb144e 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -178,13 +178,8 @@ class Guest(object):
1)
# the memory in the configuration file is specified in megabytes, but
# libvirt expects kilobytes, so multiply by 1024
- if self.tdl.arch in ["ppc64", "ppc64le"]:
- # ppc64 needs at least 2Gb RAM
- self.install_memory = int(oz.ozutil.config_get_key(config, 'libvirt',
+ self.install_memory = int(oz.ozutil.config_get_key(config, 'libvirt',
'memory', 2048)) * 1024
- else:
- self.install_memory = int(oz.ozutil.config_get_key(config, 'libvirt',
- 'memory', 1024)) * 1024
self.image_type = oz.ozutil.config_get_key(config, 'libvirt',
'image_type', 'raw')
--
2.20.1

View File

@ -0,0 +1,29 @@
From e274f7bbcac0ef1ccc6ccd7e98fd645793c5a649 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Jan 2019 03:05:22 +0000
Subject: [PATCH 08/13] Add the latest location for EDK2 OVMF firmware location
The Tianocore EDK2 OVMF firmware can now often be found in the
/usr/share/edk2/ovmf location so add this as an extra option.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/ozutil.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/oz/ozutil.py b/oz/ozutil.py
index 273a028..989c9d4 100644
--- a/oz/ozutil.py
+++ b/oz/ozutil.py
@@ -1050,6 +1050,8 @@ def find_uefi_firmware(arch):
elif arch in ['x86_64']:
uefi_list = [UEFI('/usr/share/OVMF/OVMF_CODE.fd',
'/usr/share/OVMF/OVMF_VARS.fd'),
+ UEFI('/usr/share/edk2/ovmf/OVMF_CODE.fd',
+ '/usr/share/edk2/ovmf/OVMF_VARS.fd'),
UEFI('/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd',
'/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd')]
elif arch in ['aarch64']:
--
2.20.1

View File

@ -0,0 +1,31 @@
From c24fa91acae23bdce21595654db002521f49fef2 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Jan 2019 03:12:50 +0000
Subject: [PATCH 09/13] Add check for TianoCore EDK2 firmware for ARMv7
There's now TianoCore EDK2 firmwares for ARMv7 so add a check to
see if they're available in preparation of building UEFI enabled
ARMv7 images.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/ozutil.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/oz/ozutil.py b/oz/ozutil.py
index 989c9d4..d6a4a28 100644
--- a/oz/ozutil.py
+++ b/oz/ozutil.py
@@ -1061,6 +1061,9 @@ def find_uefi_firmware(arch):
'/usr/share/edk2/aarch64/vars-template-pflash.raw'),
UEFI('/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw',
'/usr/share/edk2.git/aarch64/vars-template-pflash.raw')]
+ elif arch in ['armv7l']:
+ uefi_list = [UEFI('/usr/share/edk2/arm/QEMU_EFI-pflash.raw',
+ '/usr/share/edk2/arm/vars-template-pflash.raw')]
else:
raise Exception("Invalid arch for UEFI firmware")
--
2.20.1

View File

@ -0,0 +1,29 @@
From a23d97852bd5a6693920a4f9c823f606e244f783 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 12:46:38 +0000
Subject: [PATCH 10/13] Check for UEFI EDK2 firmware on ARMv7
Checks for EDK2 firmware on ARMv7 along side aarch64 as it now also
supports UEFI now if the firmware is available.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 3bb144e..fc3ae6d 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -484,7 +484,7 @@ class Guest(object):
oz.ozutil.lxml_subelement(osNode, "initrd", initrd)
if cmdline:
oz.ozutil.lxml_subelement(osNode, "cmdline", cmdline)
- if self.tdl.arch == "aarch64":
+ if self.tdl.arch in ["aarch64", "armv7l"]:
loader, nvram = oz.ozutil.find_uefi_firmware(self.tdl.arch)
oz.ozutil.lxml_subelement(osNode, "loader", loader, {'readonly': 'yes', 'type': 'pflash'})
oz.ozutil.lxml_subelement(osNode, "nvram", None, {'template': nvram})
--
2.20.1

View File

@ -0,0 +1,180 @@
From 00047d25ca9b4afbcc692f36617c38e82b375591 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 13:02:47 +0000
Subject: [PATCH 11/13] Make whether we use UEFI configurable on devices that
have legacy options
This allows us to specifiy whether a OS version supports/defaults to
UEFI or legacy BIOS on x86.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Fedora.py | 15 ++++++++++++---
oz/Guest.py | 15 ++++++++++-----
oz/Linux.py | 4 ++--
oz/RedHat.py | 12 ++++++------
4 files changed, 30 insertions(+), 16 deletions(-)
diff --git a/oz/Fedora.py b/oz/Fedora.py
--- a/oz/Fedora.py
+++ b/oz/Fedora.py
@@ -32,7 +32,7 @@ class FedoraConfiguration(object):
"""
def __init__(self, has_virtio_channel, use_yum, use_dev_cdrom_device,
createpart, directkernel, default_netdev, default_diskbus,
- brokenisomethod, haverepo):
+ brokenisomethod, haverepo, useuefi=False):
self._has_virtio_channel = has_virtio_channel
self._use_yum = use_yum
self._use_dev_cdrom_device = use_dev_cdrom_device
@@ -42,6 +42,7 @@ class FedoraConfiguration(object):
self._default_diskbus = default_diskbus
self._brokenisomethod = brokenisomethod
self._haverepo = haverepo
+ self._useuefi = useuefi
@property
def has_virtio_channel(self):
@@ -107,6 +108,13 @@ class FedoraConfiguration(object):
"""
return self._haverepo
+ @property
+ def useuefi(self):
+ """
+ Property method for whether to default to using UEFI as firmware or legacy method.
+ """
+ return self._useuefi
+
version_to_config = {
'29': FedoraConfiguration(has_virtio_channel=True, use_yum=False,
@@ -235,7 +243,7 @@ class FedoraGuest(oz.RedHat.RedHatLinuxC
# ignored now; we leave it in place for backwards API compatibility.
def __init__(self, tdl, config, auto, nicmodel, haverepo, diskbus, # pylint: disable=unused-argument
brokenisomethod, output_disk=None, macaddress=None, # pylint: disable=unused-argument
- assumed_update=None):
+ assumed_update=None, useuefi=False):
self.config = version_to_config[tdl.update]
if nicmodel is None:
nicmodel = self.config.default_netdev
@@ -247,7 +255,8 @@ class FedoraGuest(oz.RedHat.RedHatLinuxC
oz.RedHat.RedHatLinuxCDYumGuest.__init__(self, tdl, config, auto,
output_disk, nicmodel, diskbus,
True, True, self.config.directkernel,
- macaddress, self.config.use_yum)
+ macaddress, self.config.use_yum,
+ self.config.useuefi)
if self.assumed_update is not None:
self.log.warning("==== WARN: TDL contains Fedora update %s, which is newer than Oz knows about; pretending this is Fedora %s, but this may fail ====", tdl.update, assumed_update)
diff --git a/oz/Guest.py b/oz/Guest.py
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -129,7 +129,7 @@ class Guest(object):
self._discover_libvirt_type()
def __init__(self, tdl, config, auto, output_disk, nicmodel, clockoffset,
- mousetype, diskbus, iso_allowed, url_allowed, macaddress):
+ mousetype, diskbus, iso_allowed, url_allowed, macaddress, useuefi):
self.tdl = tdl
# for backwards compatibility
@@ -488,6 +488,11 @@ class Guest(object):
loader, nvram = oz.ozutil.find_uefi_firmware(self.tdl.arch)
oz.ozutil.lxml_subelement(osNode, "loader", loader, {'readonly': 'yes', 'type': 'pflash'})
oz.ozutil.lxml_subelement(osNode, "nvram", None, {'template': nvram})
+ # x86_64 has legacy requirements so we check for defaults as well as for edk2
+ if self.tdl.arch in ["x86_64"] and self.config.useuefi == True:
+ loader, nvram = oz.ozutil.find_uefi_firmware(self.tdl.arch)
+ oz.ozutil.lxml_subelement(osNode, "loader", loader, {'readonly': 'yes', 'type': 'pflash'})
+ oz.ozutil.lxml_subelement(osNode, "nvram", None, {'template': nvram})
# poweroff, reboot, crash
oz.ozutil.lxml_subelement(domain, "on_poweroff", "destroy")
oz.ozutil.lxml_subelement(domain, "on_reboot", "destroy")
@@ -1309,10 +1314,10 @@ class CDGuest(Guest):
self.seqnum = seqnum
def __init__(self, tdl, config, auto, output_disk, nicmodel, clockoffset,
- mousetype, diskbus, iso_allowed, url_allowed, macaddress):
+ mousetype, diskbus, iso_allowed, url_allowed, macaddress, useuefi):
Guest.__init__(self, tdl, config, auto, output_disk, nicmodel,
clockoffset, mousetype, diskbus, iso_allowed,
- url_allowed, macaddress)
+ url_allowed, macaddress, useuefi)
self.orig_iso = os.path.join(self.data_dir, "isos",
self.tdl.distro + self.tdl.update + self.tdl.arch + "-" + self.tdl.installtype + ".iso")
@@ -1777,9 +1782,9 @@ class FDGuest(Guest):
Class for guest installation via floppy disk.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, clockoffset,
- mousetype, diskbus, macaddress):
+ mousetype, diskbus, macaddress, useuefi):
Guest.__init__(self, tdl, config, auto, output_disk, nicmodel,
- clockoffset, mousetype, diskbus, False, True, macaddress)
+ clockoffset, mousetype, diskbus, False, True, macaddress, useuefi)
self.orig_floppy = os.path.join(self.data_dir, "floppies",
self.tdl.distro + self.tdl.update + self.tdl.arch + ".img")
self.modified_floppy_cache = os.path.join(self.data_dir, "floppies",
diff --git a/oz/Linux.py b/oz/Linux.py
--- a/oz/Linux.py
+++ b/oz/Linux.py
@@ -33,10 +33,10 @@ class LinuxCDGuest(oz.Guest.CDGuest):
Class for Linux installation.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, diskbus,
- iso_allowed, url_allowed, macaddress):
+ iso_allowed, url_allowed, macaddress, useuefi):
oz.Guest.CDGuest.__init__(self, tdl, config, auto, output_disk,
nicmodel, None, None, diskbus, iso_allowed,
- url_allowed, macaddress)
+ url_allowed, macaddress, useuefi)
def _test_ssh_connection(self, guestaddr):
"""
diff --git a/oz/RedHat.py b/oz/RedHat.py
--- a/oz/RedHat.py
+++ b/oz/RedHat.py
@@ -40,10 +40,10 @@ class RedHatLinuxCDGuest(oz.Linux.LinuxC
Class for RedHat-based CD guests.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, diskbus,
- iso_allowed, url_allowed, initrdtype, macaddress):
+ iso_allowed, url_allowed, initrdtype, macaddress, useuefi):
oz.Linux.LinuxCDGuest.__init__(self, tdl, config, auto, output_disk,
nicmodel, diskbus, iso_allowed,
- url_allowed, macaddress)
+ url_allowed, macaddress, useuefi)
self.crond_was_active = False
self.sshd_was_active = False
self.sshd_config = """\
@@ -722,11 +722,11 @@ class RedHatLinuxCDYumGuest(RedHatLinuxC
Class for RedHat-based CD guests with yum support.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, diskbus,
- iso_allowed, url_allowed, initrdtype, macaddress, use_yum):
+ iso_allowed, url_allowed, initrdtype, macaddress, use_yum, useuefi):
oz.RedHat.RedHatLinuxCDGuest.__init__(self, tdl, config, auto,
output_disk, nicmodel, diskbus,
iso_allowed, url_allowed,
- initrdtype, macaddress)
+ initrdtype, macaddress, useuefi)
self.use_yum = use_yum
@@ -845,9 +845,9 @@ class RedHatFDGuest(oz.Guest.FDGuest):
Class for RedHat-based floppy guests.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, diskbus,
- macaddress):
+ macaddress, useuefi):
oz.Guest.FDGuest.__init__(self, tdl, config, auto, output_disk,
- nicmodel, None, None, diskbus, macaddress)
+ nicmodel, None, None, diskbus, macaddress, useuefi)
if self.tdl.arch != "i386":
raise oz.OzException.OzException("Invalid arch " + self.tdl.arch + "for " + self.tdl.distro + " guest")
--
2.20.1

43
12-fix-f29-config.patch Normal file
View File

@ -0,0 +1,43 @@
From 4f5df1e7b1081c550f846e53197277a41dd9dc88 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 13:05:13 +0000
Subject: [PATCH 12/13] Add Fedora 29 support
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/auto/Fedora29.auto | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+)
create mode 100644 oz/auto/Fedora29.auto
diff --git a/oz/auto/Fedora29.auto b/oz/auto/Fedora29.auto
new file mode 100644
index 0000000..1dae86a
--- /dev/null
+++ b/oz/auto/Fedora29.auto
@@ -0,0 +1,23 @@
+install
+text
+keyboard us
+lang en_US.UTF-8
+skipx
+network --device ens3 --bootproto dhcp
+rootpw %ROOTPW%
+firewall --disabled
+authconfig --enableshadow --enablemd5
+selinux --enforcing
+timezone --utc America/New_York
+bootloader --location=mbr --append="console=tty0 console=ttyS0,115200"
+
+zerombr
+clearpart --all --initlabel
+autopart --type=lvm
+
+reboot
+
+%packages
+@core
+
+%end
--
2.20.1

62
13-add-f30-support.patch Normal file
View File

@ -0,0 +1,62 @@
From 5369c963106f2c8d53d36787b51e4d19f8057902 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 13:07:37 +0000
Subject: [PATCH 13/13] Add Fedora 30 support
In this release, if specified, we default to UEFI support.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Fedora.py | 5 +++++
oz/auto/Fedora30.auto | 23 +++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100644 oz/auto/Fedora30.auto
diff --git a/oz/Fedora.py b/oz/Fedora.py
index 118fd84..34c4fe7 100644
--- a/oz/Fedora.py
+++ b/oz/Fedora.py
@@ -117,6 +117,11 @@ class FedoraConfiguration(object):
version_to_config = {
+ '30': FedoraConfiguration(has_virtio_channel=True, use_yum=False,
+ use_dev_cdrom_device=True, createpart=False,
+ directkernel="cpio", default_netdev='virtio',
+ default_diskbus='virtio', brokenisomethod=False,
+ haverepo=True, useuefi=True),
'29': FedoraConfiguration(has_virtio_channel=True, use_yum=False,
use_dev_cdrom_device=True, createpart=False,
directkernel="cpio", default_netdev='virtio',
diff --git a/oz/auto/Fedora30.auto b/oz/auto/Fedora30.auto
new file mode 100644
index 0000000..1dae86a
--- /dev/null
+++ b/oz/auto/Fedora30.auto
@@ -0,0 +1,23 @@
+install
+text
+keyboard us
+lang en_US.UTF-8
+skipx
+network --device ens3 --bootproto dhcp
+rootpw %ROOTPW%
+firewall --disabled
+authconfig --enableshadow --enablemd5
+selinux --enforcing
+timezone --utc America/New_York
+bootloader --location=mbr --append="console=tty0 console=ttyS0,115200"
+
+zerombr
+clearpart --all --initlabel
+autopart --type=lvm
+
+reboot
+
+%packages
+@core
+
+%end
--
2.20.1

View File

@ -1,641 +0,0 @@
From fbce72eb95ab15f5c830c542333e9007f3126487 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Jan 2019 03:00:08 +0000
Subject: [PATCH 01/13] Clarify bugzilla instance for bug references
Substitute BZ -> RHBZ to clarify BZ locations.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 4f66c2f..034749d 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -465,7 +465,7 @@ class Guest(object):
oz.ozutil.lxml_subelement(features, "pae")
# CPU
if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
- # Possibly related to BZ 1171501 - need host passthrough for aarch64 and arm with kvm
+ # Possibly related to RHBZ 1171501 - need host passthrough for aarch64 and arm with kvm
cpu = oz.ozutil.lxml_subelement(domain, "cpu", None, {'mode': 'custom', 'match': 'exact'})
oz.ozutil.lxml_subelement(cpu, "model", "host", {'fallback': 'allow'})
# os
@@ -597,7 +597,7 @@ class Guest(object):
capacity = size
if backing_filename:
- # FIXME: Revisit as BZ 958510 evolves
+ # FIXME: Revisit as RHBZ 958510 evolves
# At the moment libvirt forces us to specify a size rather than
# assuming we want to inherit the size of our backing file.
# It may be possible to avoid this inspection step if libvirt
--
2.20.1
From 9e8592849675baa11a30774550a24b34d5611b1b Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 12:41:01 +0000
Subject: [PATCH 02/13] drop ARMv7 special handling for console port
It's unnecessary and breaks grpahical output. Qemu generates a DT with all
the appropriate bits in it to setup the console.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 034749d..e346904 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -481,8 +481,6 @@ class Guest(object):
if initrd:
oz.ozutil.lxml_subelement(osNode, "initrd", initrd)
if cmdline:
- if self.tdl.arch == "armv7l":
- cmdline += " console=ttyAMA0"
oz.ozutil.lxml_subelement(osNode, "cmdline", cmdline)
if self.tdl.arch == "aarch64":
loader, nvram = oz.ozutil.find_uefi_firmware(self.tdl.arch)
--
2.20.1
From 0b32e08e5ddfd7088297d267aed71950219dad79 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 27 Feb 2019 10:54:43 +0000
Subject: [PATCH 03/13] Add appropriate arch checks for architecture specific
features
In a lot of cases qemu just ignores incorrect cmd line options when run
against a different architecture but sometimes it causes issues so lets
add the appropriate checks to ensure no issues.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index e346904..e3a5da5 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -460,9 +460,11 @@ class Guest(object):
oz.ozutil.lxml_subelement(domain, "vcpu", str(self.install_cpus))
# features
features = oz.ozutil.lxml_subelement(domain, "features")
- oz.ozutil.lxml_subelement(features, "acpi")
- oz.ozutil.lxml_subelement(features, "apic")
- oz.ozutil.lxml_subelement(features, "pae")
+ if self.tdl.arch in ["aarch64", "x86_64"]:
+ oz.ozutil.lxml_subelement(features, "acpi")
+ if self.tdl.arch in ["x86_64"]:
+ oz.ozutil.lxml_subelement(features, "apic")
+ oz.ozutil.lxml_subelement(features, "pae")
# CPU
if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
# Possibly related to RHBZ 1171501 - need host passthrough for aarch64 and arm with kvm
--
2.20.1
From 1048f98e3606781696f1a81704235960f426519d Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 27 Feb 2019 10:56:36 +0000
Subject: [PATCH 04/13] ARMv7 only supports GICv2 so we need to explicitly
define it
Add the GIC version to the cpu features list to ensure we get the right GIC
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/oz/Guest.py b/oz/Guest.py
index e3a5da5..4e74fe1 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -465,6 +465,8 @@ class Guest(object):
if self.tdl.arch in ["x86_64"]:
oz.ozutil.lxml_subelement(features, "apic")
oz.ozutil.lxml_subelement(features, "pae")
+ if self.tdl.arch in ["armv7l"]:
+ oz.ozutil.lxml_subelement(features, "gic", attributes={'version': '2'})
# CPU
if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
# Possibly related to RHBZ 1171501 - need host passthrough for aarch64 and arm with kvm
--
2.20.1
From c197d163ccbd2997d400942e14442257dd9d2285 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 27 Feb 2019 11:08:25 +0000
Subject: [PATCH 05/13] Fix input devices for ARMv7 and aarch64
The Arm architectures don't work well with the legacy ps2 bits causing
issues with graphical output. Qemu also doesn't, due to a historical
oversight, automatically setup input so we need to do it here else
graphical out and hence screenshots don't work.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 4e74fe1..418b888 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -255,7 +255,10 @@ class Guest(object):
self.clockoffset = "utc"
self.mousetype = mousetype
if self.mousetype is None:
- self.mousetype = "ps2"
+ if self.tdl.arch in ["aarch64", "armv7l"]:
+ self.mousetype = "usb"
+ else:
+ self.mousetype = "ps2"
if diskbus is None or diskbus == "ide":
self.disk_bus = "ide"
self.disk_dev = "hda"
@@ -512,6 +515,11 @@ class Guest(object):
elif self.mousetype == "usb":
mousedict['type'] = 'tablet'
oz.ozutil.lxml_subelement(devices, "input", None, mousedict)
+ if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
+ # Other arches add a keyboard by default, for historical reasons ARM doesn't
+ # so we add it here so graphical works and hence we can get debug screenshots RHBZ 1538637
+ oz.ozutil.lxml_subelement(devices, 'controller', None, {'type': 'usb', 'index': '0'})
+ oz.ozutil.lxml_subelement(devices, 'input', None, {'type': 'keyboard', 'bus': 'usb'})
# serial console pseudo TTY
console = oz.ozutil.lxml_subelement(devices, "serial", None, {'type': 'pty'})
oz.ozutil.lxml_subelement(console, "target", None, {'port': '0'})
--
2.20.1
From d4c4ea8c4ea77471fc72639d31c38d3d39bc0453 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Jan 2019 03:19:21 +0000
Subject: [PATCH 06/13] Setup graphical console on all architectures except
s390x
The graphical console is now supported on all architectures except
s390x so set it up to enable screenshot fucntionality across all
supported architectures.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 418b888..dfb63e4 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -500,8 +500,8 @@ class Guest(object):
# devices
devices = oz.ozutil.lxml_subelement(domain, "devices")
# graphics
- if self.tdl.arch not in ["aarch64", "armv7l", "s390x"]:
- # qemu for arm/aarch64/s390x does not support a graphical console - amazingly
+ if not self.tdl.arch in ["s390x"]:
+ # qemu for s390x does not support a graphical console
oz.ozutil.lxml_subelement(devices, "graphics", None, {'port': '-1', 'type': 'vnc'})
# network
interface = oz.ozutil.lxml_subelement(devices, "interface", None, {'type': 'bridge'})
--
2.20.1
From fb257ff2fbb66a732a1369445b8c580a4ec61339 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 27 Feb 2019 12:30:07 +0000
Subject: [PATCH 07/13] Default to using 2Gb on all architectures
The original 1Gb should be enough but RAM is cheap and sometimes things
like the initrd unexpectently bloat so 2Gb gives us room to move.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index dfb63e4..3bb144e 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -178,13 +178,8 @@ class Guest(object):
1)
# the memory in the configuration file is specified in megabytes, but
# libvirt expects kilobytes, so multiply by 1024
- if self.tdl.arch in ["ppc64", "ppc64le"]:
- # ppc64 needs at least 2Gb RAM
- self.install_memory = int(oz.ozutil.config_get_key(config, 'libvirt',
+ self.install_memory = int(oz.ozutil.config_get_key(config, 'libvirt',
'memory', 2048)) * 1024
- else:
- self.install_memory = int(oz.ozutil.config_get_key(config, 'libvirt',
- 'memory', 1024)) * 1024
self.image_type = oz.ozutil.config_get_key(config, 'libvirt',
'image_type', 'raw')
--
2.20.1
From e274f7bbcac0ef1ccc6ccd7e98fd645793c5a649 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Jan 2019 03:05:22 +0000
Subject: [PATCH 08/13] Add the latest location for EDK2 OVMF firmware location
The Tianocore EDK2 OVMF firmware can now often be found in the
/usr/share/edk2/ovmf location so add this as an extra option.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/ozutil.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/oz/ozutil.py b/oz/ozutil.py
index 273a028..989c9d4 100644
--- a/oz/ozutil.py
+++ b/oz/ozutil.py
@@ -1050,6 +1050,8 @@ def find_uefi_firmware(arch):
elif arch in ['x86_64']:
uefi_list = [UEFI('/usr/share/OVMF/OVMF_CODE.fd',
'/usr/share/OVMF/OVMF_VARS.fd'),
+ UEFI('/usr/share/edk2/ovmf/OVMF_CODE.fd',
+ '/usr/share/edk2/ovmf/OVMF_VARS.fd'),
UEFI('/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd',
'/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd')]
elif arch in ['aarch64']:
--
2.20.1
From c24fa91acae23bdce21595654db002521f49fef2 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Jan 2019 03:12:50 +0000
Subject: [PATCH 09/13] Add check for TianoCore EDK2 firmware for ARMv7
There's now TianoCore EDK2 firmwares for ARMv7 so add a check to
see if they're available in preparation of building UEFI enabled
ARMv7 images.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/ozutil.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/oz/ozutil.py b/oz/ozutil.py
index 989c9d4..d6a4a28 100644
--- a/oz/ozutil.py
+++ b/oz/ozutil.py
@@ -1061,6 +1061,9 @@ def find_uefi_firmware(arch):
'/usr/share/edk2/aarch64/vars-template-pflash.raw'),
UEFI('/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw',
'/usr/share/edk2.git/aarch64/vars-template-pflash.raw')]
+ elif arch in ['armv7l']:
+ uefi_list = [UEFI('/usr/share/edk2/arm/QEMU_EFI-pflash.raw',
+ '/usr/share/edk2/arm/vars-template-pflash.raw')]
else:
raise Exception("Invalid arch for UEFI firmware")
--
2.20.1
From a23d97852bd5a6693920a4f9c823f606e244f783 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 12:46:38 +0000
Subject: [PATCH 10/13] Check for UEFI EDK2 firmware on ARMv7
Checks for EDK2 firmware on ARMv7 along side aarch64 as it now also
supports UEFI now if the firmware is available.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 3bb144e..fc3ae6d 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -484,7 +484,7 @@ class Guest(object):
oz.ozutil.lxml_subelement(osNode, "initrd", initrd)
if cmdline:
oz.ozutil.lxml_subelement(osNode, "cmdline", cmdline)
- if self.tdl.arch == "aarch64":
+ if self.tdl.arch in ["aarch64", "armv7l"]:
loader, nvram = oz.ozutil.find_uefi_firmware(self.tdl.arch)
oz.ozutil.lxml_subelement(osNode, "loader", loader, {'readonly': 'yes', 'type': 'pflash'})
oz.ozutil.lxml_subelement(osNode, "nvram", None, {'template': nvram})
--
2.20.1
From 00047d25ca9b4afbcc692f36617c38e82b375591 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 13:02:47 +0000
Subject: [PATCH 11/13] Make whether we use UEFI configurable on devices that
have legacy options
This allows us to specifiy whether a OS version supports/defaults to
UEFI or legacy BIOS on x86.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Fedora.py | 15 ++++++++++++---
oz/Guest.py | 15 ++++++++++-----
oz/Linux.py | 4 ++--
oz/RedHat.py | 12 ++++++------
4 files changed, 30 insertions(+), 16 deletions(-)
diff --git a/oz/Fedora.py b/oz/Fedora.py
index 1d73ca1..9ecc744 100644
--- a/oz/Fedora.py
+++ b/oz/Fedora.py
@@ -32,7 +32,7 @@ class FedoraConfiguration(object):
"""
def __init__(self, has_virtio_channel, use_yum, use_dev_cdrom_device,
createpart, directkernel, default_netdev, default_diskbus,
- brokenisomethod, haverepo):
+ brokenisomethod, haverepo, useuefi=False):
self._has_virtio_channel = has_virtio_channel
self._use_yum = use_yum
self._use_dev_cdrom_device = use_dev_cdrom_device
@@ -42,6 +42,7 @@ class FedoraConfiguration(object):
self._default_diskbus = default_diskbus
self._brokenisomethod = brokenisomethod
self._haverepo = haverepo
+ self._useuefi = useuefi
@property
def has_virtio_channel(self):
@@ -107,6 +108,13 @@ class FedoraConfiguration(object):
"""
return self._haverepo
+ @property
+ def useuefi(self):
+ """
+ Property method for whether to default to using UEFI as firmware or legacy method.
+ """
+ return self._useuefi
+
version_to_config = {
'28': FedoraConfiguration(has_virtio_channel=True, use_yum=False,
@@ -230,7 +238,7 @@ class FedoraGuest(oz.RedHat.RedHatLinuxCDYumGuest):
# ignored now; we leave it in place for backwards API compatibility.
def __init__(self, tdl, config, auto, nicmodel, haverepo, diskbus, # pylint: disable=unused-argument
brokenisomethod, output_disk=None, macaddress=None, # pylint: disable=unused-argument
- assumed_update=None):
+ assumed_update=None, useuefi=False):
self.config = version_to_config[tdl.update]
if nicmodel is None:
nicmodel = self.config.default_netdev
@@ -242,7 +250,8 @@ class FedoraGuest(oz.RedHat.RedHatLinuxCDYumGuest):
oz.RedHat.RedHatLinuxCDYumGuest.__init__(self, tdl, config, auto,
output_disk, nicmodel, diskbus,
True, True, self.config.directkernel,
- macaddress, self.config.use_yum)
+ macaddress, self.config.use_yum,
+ self.config.useuefi)
if self.assumed_update is not None:
self.log.warning("==== WARN: TDL contains Fedora update %s, which is newer than Oz knows about; pretending this is Fedora %s, but this may fail ====", tdl.update, assumed_update)
diff --git a/oz/Guest.py b/oz/Guest.py
index fc3ae6d..c33a25e 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -129,7 +129,7 @@ class Guest(object):
self._discover_libvirt_type()
def __init__(self, tdl, config, auto, output_disk, nicmodel, clockoffset,
- mousetype, diskbus, iso_allowed, url_allowed, macaddress):
+ mousetype, diskbus, iso_allowed, url_allowed, macaddress, useuefi):
self.tdl = tdl
# for backwards compatibility
@@ -488,6 +488,11 @@ class Guest(object):
loader, nvram = oz.ozutil.find_uefi_firmware(self.tdl.arch)
oz.ozutil.lxml_subelement(osNode, "loader", loader, {'readonly': 'yes', 'type': 'pflash'})
oz.ozutil.lxml_subelement(osNode, "nvram", None, {'template': nvram})
+ # x86_64 has legacy requirements so we check for defaults as well as for edk2
+ if self.tdl.arch in ["x86_64"] and self.config.useuefi == True:
+ loader, nvram = oz.ozutil.find_uefi_firmware(self.tdl.arch)
+ oz.ozutil.lxml_subelement(osNode, "loader", loader, {'readonly': 'yes', 'type': 'pflash'})
+ oz.ozutil.lxml_subelement(osNode, "nvram", None, {'template': nvram})
# poweroff, reboot, crash
oz.ozutil.lxml_subelement(domain, "on_poweroff", "destroy")
oz.ozutil.lxml_subelement(domain, "on_reboot", "destroy")
@@ -1314,10 +1319,10 @@ class CDGuest(Guest):
self.seqnum = seqnum
def __init__(self, tdl, config, auto, output_disk, nicmodel, clockoffset,
- mousetype, diskbus, iso_allowed, url_allowed, macaddress):
+ mousetype, diskbus, iso_allowed, url_allowed, macaddress, useuefi):
Guest.__init__(self, tdl, config, auto, output_disk, nicmodel,
clockoffset, mousetype, diskbus, iso_allowed,
- url_allowed, macaddress)
+ url_allowed, macaddress, useuefi)
self.orig_iso = os.path.join(self.data_dir, "isos",
self.tdl.distro + self.tdl.update + self.tdl.arch + "-" + self.tdl.installtype + ".iso")
@@ -1782,9 +1787,9 @@ class FDGuest(Guest):
Class for guest installation via floppy disk.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, clockoffset,
- mousetype, diskbus, macaddress):
+ mousetype, diskbus, macaddress, useuefi):
Guest.__init__(self, tdl, config, auto, output_disk, nicmodel,
- clockoffset, mousetype, diskbus, False, True, macaddress)
+ clockoffset, mousetype, diskbus, False, True, macaddress, useuefi)
self.orig_floppy = os.path.join(self.data_dir, "floppies",
self.tdl.distro + self.tdl.update + self.tdl.arch + ".img")
self.modified_floppy_cache = os.path.join(self.data_dir, "floppies",
diff --git a/oz/Linux.py b/oz/Linux.py
index a9e8935..aef837f 100644
--- a/oz/Linux.py
+++ b/oz/Linux.py
@@ -33,10 +33,10 @@ class LinuxCDGuest(oz.Guest.CDGuest):
Class for Linux installation.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, diskbus,
- iso_allowed, url_allowed, macaddress):
+ iso_allowed, url_allowed, macaddress, useuefi):
oz.Guest.CDGuest.__init__(self, tdl, config, auto, output_disk,
nicmodel, None, None, diskbus, iso_allowed,
- url_allowed, macaddress)
+ url_allowed, macaddress, useuefi)
def _test_ssh_connection(self, guestaddr):
"""
diff --git a/oz/RedHat.py b/oz/RedHat.py
index fa0084a..7cb7bb6 100644
--- a/oz/RedHat.py
+++ b/oz/RedHat.py
@@ -40,10 +40,10 @@ class RedHatLinuxCDGuest(oz.Linux.LinuxCDGuest):
Class for RedHat-based CD guests.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, diskbus,
- iso_allowed, url_allowed, initrdtype, macaddress):
+ iso_allowed, url_allowed, initrdtype, macaddress, useuefi):
oz.Linux.LinuxCDGuest.__init__(self, tdl, config, auto, output_disk,
nicmodel, diskbus, iso_allowed,
- url_allowed, macaddress)
+ url_allowed, macaddress, useuefi)
self.crond_was_active = False
self.sshd_was_active = False
self.sshd_config = """\
@@ -714,11 +714,11 @@ class RedHatLinuxCDYumGuest(RedHatLinuxCDGuest):
Class for RedHat-based CD guests with yum support.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, diskbus,
- iso_allowed, url_allowed, initrdtype, macaddress, use_yum):
+ iso_allowed, url_allowed, initrdtype, macaddress, use_yum, useuefi):
oz.RedHat.RedHatLinuxCDGuest.__init__(self, tdl, config, auto,
output_disk, nicmodel, diskbus,
iso_allowed, url_allowed,
- initrdtype, macaddress)
+ initrdtype, macaddress, useuefi)
self.use_yum = use_yum
@@ -837,9 +837,9 @@ class RedHatFDGuest(oz.Guest.FDGuest):
Class for RedHat-based floppy guests.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, diskbus,
- macaddress):
+ macaddress, useuefi):
oz.Guest.FDGuest.__init__(self, tdl, config, auto, output_disk,
- nicmodel, None, None, diskbus, macaddress)
+ nicmodel, None, None, diskbus, macaddress, useuefi)
if self.tdl.arch != "i386":
raise oz.OzException.OzException("Invalid arch " + self.tdl.arch + "for " + self.tdl.distro + " guest")
--
2.20.1
From 4f5df1e7b1081c550f846e53197277a41dd9dc88 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 13:05:13 +0000
Subject: [PATCH 12/13] Add Fedora 29 support
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Fedora.py | 5 +++++
oz/auto/Fedora29.auto | 23 +++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100644 oz/auto/Fedora29.auto
diff --git a/oz/Fedora.py b/oz/Fedora.py
index 9ecc744..118fd84 100644
--- a/oz/Fedora.py
+++ b/oz/Fedora.py
@@ -117,6 +117,11 @@ class FedoraConfiguration(object):
version_to_config = {
+ '29': FedoraConfiguration(has_virtio_channel=True, use_yum=False,
+ use_dev_cdrom_device=True, createpart=False,
+ directkernel="cpio", default_netdev='virtio',
+ default_diskbus='virtio', brokenisomethod=False,
+ haverepo=True),
'28': FedoraConfiguration(has_virtio_channel=True, use_yum=False,
use_dev_cdrom_device=True, createpart=False,
directkernel="cpio", default_netdev='virtio',
diff --git a/oz/auto/Fedora29.auto b/oz/auto/Fedora29.auto
new file mode 100644
index 0000000..1dae86a
--- /dev/null
+++ b/oz/auto/Fedora29.auto
@@ -0,0 +1,23 @@
+install
+text
+keyboard us
+lang en_US.UTF-8
+skipx
+network --device ens3 --bootproto dhcp
+rootpw %ROOTPW%
+firewall --disabled
+authconfig --enableshadow --enablemd5
+selinux --enforcing
+timezone --utc America/New_York
+bootloader --location=mbr --append="console=tty0 console=ttyS0,115200"
+
+zerombr
+clearpart --all --initlabel
+autopart --type=lvm
+
+reboot
+
+%packages
+@core
+
+%end
--
2.20.1
From 5369c963106f2c8d53d36787b51e4d19f8057902 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 13:07:37 +0000
Subject: [PATCH 13/13] Add Fedora 30 support
In this release, if specified, we default to UEFI support.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Fedora.py | 5 +++++
oz/auto/Fedora30.auto | 23 +++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100644 oz/auto/Fedora30.auto
diff --git a/oz/Fedora.py b/oz/Fedora.py
index 118fd84..34c4fe7 100644
--- a/oz/Fedora.py
+++ b/oz/Fedora.py
@@ -117,6 +117,11 @@ class FedoraConfiguration(object):
version_to_config = {
+ '30': FedoraConfiguration(has_virtio_channel=True, use_yum=False,
+ use_dev_cdrom_device=True, createpart=False,
+ directkernel="cpio", default_netdev='virtio',
+ default_diskbus='virtio', brokenisomethod=False,
+ haverepo=True, useuefi=True),
'29': FedoraConfiguration(has_virtio_channel=True, use_yum=False,
use_dev_cdrom_device=True, createpart=False,
directkernel="cpio", default_netdev='virtio',
diff --git a/oz/auto/Fedora30.auto b/oz/auto/Fedora30.auto
new file mode 100644
index 0000000..1dae86a
--- /dev/null
+++ b/oz/auto/Fedora30.auto
@@ -0,0 +1,23 @@
+install
+text
+keyboard us
+lang en_US.UTF-8
+skipx
+network --device ens3 --bootproto dhcp
+rootpw %ROOTPW%
+firewall --disabled
+authconfig --enableshadow --enablemd5
+selinux --enforcing
+timezone --utc America/New_York
+bootloader --location=mbr --append="console=tty0 console=ttyS0,115200"
+
+zerombr
+clearpart --all --initlabel
+autopart --type=lvm
+
+reboot
+
+%packages
+@core
+
+%end
--
2.20.1

84
oz.spec
View File

@ -1,21 +1,51 @@
Name: oz
Version: 0.17.0
Release: 0.2%{?dist}
Release: 2%{?dist}
Summary: Library and utilities for automated guest OS installs
License: LGPLv2
URL: http://github.com/clalancette/oz
# Source0: https://github.com/clalancette/%{name}/files/1209916/%{name}-%{version}.tar.gz
# Upstream git snapshot while waiting for 0.17
Source0: %{name}-%{version}-ecadc58.tar.gz
Source0: https://github.com/clalancette/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
# https://github.com/clalancette/oz/pull/269
Patch1: fixes-and-enhancements.patch
Patch1: 01-clarify-bz-instance.patch
Patch2: 02-drop-armv7-special-console-handling.patch
Patch3: 03-add-appropriate-arch-checks.patch
Patch4: 04-armv7-define-gicv2.patch
Patch5: 05-arm-fix-input-devices.patch
Patch6: 06-setup-graphical-all-except-s390x.patch
Patch7: 07-use-2gb-ram.patch
Patch8: 08-add-latest-location-ovmf.patch
Patch9: 09-add-tianocore-check.patch
Patch10: 10-check-edk2-firmware-armv7.patch
Patch11: 11-make-uefi-configurable.patch
Patch12: 12-fix-f29-config.patch
Patch13: 13-add-f30-support.patch
BuildArch: noarch
Requires: python2 >= 2.5
Requires: python2-libguestfs >= 1.18
%if 0%{?fedora} > 30
BuildRequires: python3
BuildRequires: python3-devel
BuildRequires: python3-setuptools
Requires: python3
Requires: python3-lxml
Requires: python3-libguestfs >= 1.18
Requires: python3-libvirt
Requires: python3-m2crypto
Requires: python3-monotonic
Requires: python3-requests
%else
BuildRequires: python2
BuildRequires: python2-devel
BuildRequires: python3-setuptools
Requires: m2crypto
Requires: python2
Requires: python2-lxml
Requires: python2-libvirt >= 0.9.7
Requires: python2-libguestfs >= 1.18
Requires: python2-libvirt
Requires: python2-monotonic
Requires: python2-requests
%endif
# in theory, oz doesn't really require libvirtd to be local to operate
# properly. However, because of the libguestfs manipulations, in practice
# it really does. Make it depend on libvirt (so we get libvirtd) for now,
@ -23,16 +53,9 @@ Requires: python2-libvirt >= 0.9.7
Requires: libvirt-daemon-kvm
Requires: libvirt-daemon-qemu
Requires: libvirt-daemon-config-network
Requires: python2-requests
Requires: genisoimage
Requires: mtools
Requires: openssh-clients
Requires: m2crypto
Requires: python2-monotonic
BuildRequires: python2
BuildRequires: python2-devel
BuildRequires: python2-setuptools
%description
Oz is a set of libraries and utilities for doing automated guest OS
@ -42,10 +65,18 @@ installations, with minimal input from the user.
%autosetup -p1
%build
python2 setup.py build
%if 0%{?fedora} > 30
%py3_build
%else
%py2_build
%endif
%install
python2 setup.py install --root=$RPM_BUILD_ROOT --skip-build
%if 0%{?fedora} > 30
%py3_install
%else
%py2_install
%endif
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/oz/
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/oz/isocontent/
@ -79,15 +110,30 @@ fi
%dir %attr(0755, root, root) %{_localstatedir}/lib/oz/jeos/
%dir %attr(0755, root, root) %{_localstatedir}/lib/oz/kernels/
%dir %attr(0755, root, root) %{_localstatedir}/lib/oz/screenshots/
%{python2_sitelib}/oz
%{_bindir}/oz-install
%{_bindir}/oz-generate-icicle
%{_bindir}/oz-customize
%{_bindir}/oz-cleanup-cache
%{python2_sitelib}/oz-*.egg-info
%{_mandir}/man1/*
%if 0%{?fedora} > 30
%{python3_sitelib}/oz
%{python3_sitelib}/%{name}-%{version}-py%{python3_version}.egg-info
%else
%{python2_sitelib}/oz
%{python2_sitelib}/%{name}-%{version}-py%{python2_version}.egg-info
%endif
%changelog
* Tue Apr 2 2019 Peter Robinson <pbrobinson@fedoraproject.org> 0.17.0-2
- Fix m2crypto python2 naming
* Tue Mar 26 2019 Peter Robinson <pbrobinson@fedoraproject.org> 0.17.0-1
- Conditionalise py3 support
- 0.17.0 is releases, minor cleanups
* Sat Mar 16 2019 Chris Lalancette <clalancette@gmail.com> - 0.17.0-0.3
- Update to latest upstream changes for Python 3
* Wed Mar 13 2019 Peter Robinson <pbrobinson@fedoraproject.org> 0.17.0-0.2
- Rebase to latest PR for ARMv7/aarch64 UEFI

View File

@ -1 +1 @@
SHA512 (oz-0.17.0-ecadc58.tar.gz) = 8d9210c68f23ed78817df05da5796fd96ee8064e4c6900db57b1686b604d53921ae0491bf93b850404eb2c0f83ec5274c938881d056c6d0c9cce317011e6f159
SHA512 (oz-0.17.0.tar.gz) = cb7d43bef0e6ae6f962988afbda96532c16983ace2bb0d36082495664c61637f467faa3d8ecbef0938786b8150b5910063c05b5d844ff98729c251550a850409