diff --git a/SOURCES/9800-rpmostreepayload-Rework-remote-add-handling.patch b/SOURCES/9800-rpmostreepayload-Rework-remote-add-handling.patch new file mode 100644 index 0000000..c6de637 --- /dev/null +++ b/SOURCES/9800-rpmostreepayload-Rework-remote-add-handling.patch @@ -0,0 +1,98 @@ +diff -uNrp anaconda-21.48.22.121.orig/pyanaconda/packaging/rpmostreepayload.py anaconda-21.48.22.121/pyanaconda/packaging/rpmostreepayload.py +--- anaconda-21.48.22.121.orig/pyanaconda/packaging/rpmostreepayload.py 2017-10-24 15:03:35.813712324 +0000 ++++ anaconda-21.48.22.121/pyanaconda/packaging/rpmostreepayload.py 2017-10-24 15:07:25.964706993 +0000 +@@ -142,24 +142,25 @@ class RPMOSTreePayload(ArchivePayload): + ["admin", "--sysroot=" + iutil.getTargetPhysicalRoot(), + "init-fs", iutil.getTargetPhysicalRoot()]) + +- repo_arg = "--repo=" + iutil.getTargetPhysicalRoot() + '/ostree/repo' ++ self._sysroot_path = Gio.File.new_for_path(iutil.getTargetPhysicalRoot()) ++ sysroot = OSTree.Sysroot.new(self._sysroot_path) ++ sysroot.load(cancellable) ++ repo = sysroot.get_repo(None)[1] ++ # We don't support resuming from interrupted installs ++ repo.set_disable_fsync(True) ++ ++ self._remoteOptions = {} + +- # Store this for use in postInstall too, where we need to +- # undo/redo this step. +- self._base_remote_args = ["remote", "add"] ++ # Handle variations in pykickstart + if ((hasattr(ostreesetup, 'noGpg') and ostreesetup.noGpg) or + (hasattr(ostreesetup, 'nogpg') and ostreesetup.nogpg)): +- self._base_remote_args.append("--set=gpg-verify=false") +- self._base_remote_args.extend([ostreesetup.remote, +- ostreesetup.url]) +- self._safeExecWithRedirect("ostree", [repo_arg] + self._base_remote_args) ++ self._remoteOptions['gpg-verify'] = GLib.Variant('b', False) + +- self._sysroot_path = sysroot_path = Gio.File.new_for_path(iutil.getTargetPhysicalRoot()) +- sysroot = OSTree.Sysroot.new(sysroot_path) +- sysroot.load(cancellable) ++ repo.remote_change(None, OSTree.RepoRemoteChange.ADD_IF_NOT_EXISTS, ++ ostreesetup.remote, ostreesetup.url, ++ GLib.Variant('a{sv}', self._remoteOptions), ++ cancellable) + +- repo = sysroot.get_repo(None)[1] +- repo.set_disable_fsync(True) + progressQ.send_message(_("Starting pull of %(branchName)s from %(source)s") % \ + {"branchName": ostreesetup.ref, "source": ostreesetup.remote}) + +@@ -192,6 +193,14 @@ class RPMOSTreePayload(ArchivePayload): + log.info("ostree pull: " + (progress.get_status() or "")) + progressQ.send_message(_("Preparing deployment of %s") % (ostreesetup.ref, )) + ++ # Now that we have the data pulled, delete the remote for now. ++ # This will allow a remote configuration defined in the tree ++ # (if any) to override what's in the kickstart. Otherwise, ++ # we'll re-add it in post. Ideally, ostree would support a ++ # pull without adding a remote, but that would get quite ++ # complex. ++ repo.remote_delete(self.data.ostreesetup.remote, None) ++ + self._safeExecWithRedirect("ostree", + ["admin", "--sysroot=" + iutil.getTargetPhysicalRoot(), + "os-init", ostreesetup.osname]) +@@ -348,20 +357,30 @@ class RPMOSTreePayload(ArchivePayload): + from gi.repository import OSTree + cancellable = None + +- # Reload this data - we couldn't keep it open across +- # the remounts happening. + sysroot = OSTree.Sysroot.new(self._sysroot_path) + sysroot.load(cancellable) + repo = sysroot.get_repo(None)[1] + +- # This is an ugly hack - we didn't have /etc/ostree/remotes.d, +- # so the remote went into /ostree/repo/config. But we want it +- # in /etc, so delete that remote, then re-add it to +- # /etc/ostree/remotes.d, executing ostree inside the sysroot +- # so that it understands it's a "system repository" and should +- # modify /etc. +- repo.remote_delete(self.data.ostreesetup.remote, None) +- self._safeExecWithRedirect("ostree", self._base_remote_args, root=iutil.getSysroot()) ++ # CentOS specific patch (for now) - pull the remote config from usr/etc if it exists. ++ # The OSTree handling here was buggy in that it wasn't looking in the sysroot ++ # for existing remotes. ++ default_remote_path = iutil.getSysroot() + '/usr/etc/ostree/remotes.d/' + self.data.ostreesetup.osname + '.conf' ++ if os.path.isfile(default_remote_path): ++ destpath = iutil.getSysroot() + '/etc/ostree/remotes.d/' + os.path.basename(default_remote_path) ++ self._safeExecWithRedirect('cp', ['-r', '-p', default_remote_path, destpath]) ++ else: ++ # Following up on the "remote delete" above, we removed the ++ # remote from /ostree/repo/config. But we want it in /etc, so ++ # re-add it to /etc/ostree/remotes.d, using the sysroot path. ++ # ++ # However, we ignore the case where the remote already exists, ++ # which occurs when the content itself provides the remote ++ # config file. ++ repo.remote_change(Gio.File.new_for_path(iutil.getSysroot()), ++ OSTree.RepoRemoteChange.ADD_IF_NOT_EXISTS, ++ self.data.ostreesetup.remote, self.data.ostreesetup.url, ++ GLib.Variant('a{sv}', self._remoteOptions), ++ cancellable) + + boot = iutil.getSysroot() + '/boot' + diff --git a/SOURCES/CentOS-atomic-branding.patch b/SOURCES/CentOS-atomic-branding.patch deleted file mode 100644 index 9d51cf2..0000000 --- a/SOURCES/CentOS-atomic-branding.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 6b70a1867fef732cd75ef79782f71c13241622b7 Mon Sep 17 00:00:00 2001 -From: Colin Walters -Date: Fri, 12 Jun 2015 13:59:05 -0400 -Subject: [PATCH] Use CentOS branding, increase install priority for Atomic - -This is similar to the patch CentOS normally applies to Anaconda, -but updated for Atomic. ---- - pyanaconda/installclasses/rhel.py | 17 +++++++++++------ - 1 file changed, 11 insertions(+), 6 deletions(-) - -diff --git a/pyanaconda/installclasses/rhel.py b/pyanaconda/installclasses/rhel.py -index a9a99f6..b924cd2 100644 ---- a/pyanaconda/installclasses/rhel.py -+++ b/pyanaconda/installclasses/rhel.py -@@ -30,9 +30,9 @@ from blivet.platform import platform - from blivet.devicelibs import swap - - class RHELBaseInstallClass(BaseInstallClass): -- name = "Red Hat Enterprise Linux" -+ name = "CentOS Linux" - sortPriority = 20000 -- if not productName.startswith("Red Hat "): -+ if not productName.startswith("CentOS "): - hidden = True - defaultFS = "xfs" - -@@ -45,7 +45,7 @@ class RHELBaseInstallClass(BaseInstallClass): - - _l10n_domain = "comps" - -- efi_dir = "redhat" -+ efi_dir = "centos" - - def configure(self, anaconda): - BaseInstallClass.configure(self, anaconda) -@@ -90,9 +90,14 @@ class RHELBaseInstallClass(BaseInstallClass): - BaseInstallClass.__init__(self) - - class RHELAtomicInstallClass(RHELBaseInstallClass): -- name = "RHEL Atomic Host" -- if productName.startswith("RHEL Atomic"): -- hidden = False -+ name = "CentOS Atomic Host" -+ # We have to bump priority because RHEL upstream is relying on a -+ # side effect of the OS name starting with "RHEL" instead of "Red -+ # Hat" and thus the normal RHELBaseInstallClass above not -+ # matching. -+ sortPriority = 20001 -+ if not productName.startswith("CentOS "): -+ hidden = True - - def setDefaultPartitioning(self, storage): - autorequests = [PartSpec(mountpoint="/", fstype=storage.defaultFSType, --- -1.8.3.1 - diff --git a/SOURCES/anaconda-centos-add-centos-install-class.patch b/SOURCES/anaconda-centos-add-centos-install-class.patch new file mode 100644 index 0000000..208a851 --- /dev/null +++ b/SOURCES/anaconda-centos-add-centos-install-class.patch @@ -0,0 +1,113 @@ +diff -uNr anaconda-21.48.22.56__orig/pyanaconda/installclasses/fedora.py anaconda-21.48.22.56/pyanaconda/installclasses/fedora.py +--- anaconda-21.48.22.56__orig/pyanaconda/installclasses/fedora.py 2015-10-22 17:34:02.000000000 +0100 ++++ anaconda-21.48.22.56/pyanaconda/installclasses/fedora.py 2015-12-07 16:40:33.122000000 +0000 +@@ -25,7 +25,7 @@ + class FedoraBaseInstallClass(BaseInstallClass): + name = "Fedora" + sortPriority = 10000 +- if productName.startswith("Red Hat "): ++ if productName.startswith("Red Hat ") or productName.startswith("CentOS"): + hidden = True + + _l10n_domain = "anaconda" +diff -uNr anaconda-21.48.22.56__orig/pyanaconda/installclasses/centos.py anaconda-21.48.22.56/pyanaconda/installclasses/centos.py +--- anaconda-21.48.22.56__orig/pyanaconda/installclasses/centos.py 1970-01-01 01:00:00.000000000 +0100 ++++ anaconda-21.48.22.56/pyanaconda/installclasses/centos.py 2015-12-07 16:52:11.157000000 +0000 +@@ -0,0 +1,97 @@ ++# ++# rhel.py ++# ++# Copyright (C) 2010 Red Hat, Inc. All rights reserved. ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++# ++ ++from pyanaconda.installclass import BaseInstallClass ++from pyanaconda.product import productName ++from pyanaconda import network ++from pyanaconda import nm ++from pyanaconda.kickstart import getAvailableDiskSpace ++from blivet.partspec import PartSpec ++from blivet.platform import platform ++from blivet.devicelibs import swap ++from blivet.size import Size ++ ++class RHELBaseInstallClass(BaseInstallClass): ++ name = "CentOS Linux" ++ sortPriority = 20001 ++ if not productName.startswith("CentOS"): ++ hidden = True ++ defaultFS = "xfs" ++ ++ bootloaderTimeoutDefault = 5 ++ ++ ignoredPackages = ["ntfsprogs", "reiserfs-utils", "hfsplus-tools"] ++ ++ installUpdates = False ++ ++ _l10n_domain = "comps" ++ ++ efi_dir = "centos" ++ ++ help_placeholder = "CentOSPlaceholder.html" ++ help_placeholder_with_links = "CentOSPlaceholderWithLinks.html" ++ ++ def configure(self, anaconda): ++ BaseInstallClass.configure(self, anaconda) ++ self.setDefaultPartitioning(anaconda.storage) ++ ++ def setNetworkOnbootDefault(self, ksdata): ++ if any(nd.onboot for nd in ksdata.network.network if nd.device): ++ return ++ # choose the device used during installation ++ # (ie for majority of cases the one having the default route) ++ dev = network.default_route_device() \ ++ or network.default_route_device(family="inet6") ++ if not dev: ++ return ++ # ignore wireless (its ifcfgs would need to be handled differently) ++ if nm.nm_device_type_is_wifi(dev): ++ return ++ network.update_onboot_value(dev, "yes", ksdata) ++ ++ def __init__(self): ++ BaseInstallClass.__init__(self) ++ ++class RHELAtomicInstallClass(RHELBaseInstallClass): ++ name = "CentOS Atomic Host" ++ sortPriority=21001 ++ hidden = not productName.startswith(("CentOS Atomic Host", "CentOS Linux Atomic")) ++ ++ def setDefaultPartitioning(self, storage): ++ autorequests = [PartSpec(mountpoint="/", fstype=storage.defaultFSType, ++ size=Size("1GiB"), maxSize=Size("3GiB"), grow=True, lv=True)] ++ ++ bootreqs = platform.setDefaultPartitioning() ++ if bootreqs: ++ autorequests.extend(bootreqs) ++ ++ disk_space = getAvailableDiskSpace(storage) ++ swp = swap.swapSuggestion(disk_space=disk_space) ++ autorequests.append(PartSpec(fstype="swap", size=swp, grow=False, ++ lv=True, encrypted=True)) ++ ++ for autoreq in autorequests: ++ if autoreq.fstype is None: ++ if autoreq.mountpoint == "/boot": ++ autoreq.fstype = storage.defaultBootFSType ++ autoreq.size = Size("300MiB") ++ else: ++ autoreq.fstype = storage.defaultFSType ++ ++ storage.autoPartitionRequests = autorequests diff --git a/SOURCES/anaconda-centos-bootfs-default-to-xfs.patch b/SOURCES/anaconda-centos-bootfs-default-to-xfs.patch new file mode 100644 index 0000000..b03ef3a --- /dev/null +++ b/SOURCES/anaconda-centos-bootfs-default-to-xfs.patch @@ -0,0 +1,21 @@ +diff -uNr anaconda-21.48.22.56__orig/pyanaconda/bootloader.py anaconda-21.48.22.56/pyanaconda/bootloader.py +--- anaconda-21.48.22.56__orig/pyanaconda/bootloader.py 2015-10-29 14:23:19.000000000 +0000 ++++ anaconda-21.48.22.56/pyanaconda/bootloader.py 2015-12-07 17:23:41.013000000 +0000 +@@ -1411,7 +1411,7 @@ + + @property + def stage2_format_types(self): +- if productName.startswith("Red Hat "): ++ if productName.startswith("Red Hat ") or productName.startswith("CentOS"): + return ["xfs", "ext4", "ext3", "ext2", "btrfs"] + else: + return ["ext4", "ext3", "ext2", "btrfs", "xfs"] +@@ -2105,7 +2105,7 @@ + + @property + def stage2_format_types(self): +- if productName.startswith("Red Hat "): ++ if productName.startswith("Red Hat ") or productName.startswith("CentOS"): + return ["xfs", "ext4", "ext3", "ext2"] + else: + return ["ext4", "ext3", "ext2", "xfs"] diff --git a/SOURCES/anaconda-centos-disable-mirrors.patch b/SOURCES/anaconda-centos-disable-mirrors.patch new file mode 100644 index 0000000..f0d58ae --- /dev/null +++ b/SOURCES/anaconda-centos-disable-mirrors.patch @@ -0,0 +1,33 @@ +diff -uNrp anaconda-21.48.22.121.orig/pyanaconda/packaging/yumpayload.py anaconda-21.48.22.121/pyanaconda/packaging/yumpayload.py +--- anaconda-21.48.22.121.orig/pyananconda/packaging/yumpayload.py 2017-08-31 16:28:06.672265889 +0000 ++++ anaconda-21.48.22.121/pyanaconda/packaging/yumpayload.py 2017-08-31 16:28:38.812826778 +0000 +@@ -41,6 +41,7 @@ import sys + import time + import hashlib + from pyanaconda.iutil import execReadlines, ipmi_abort ++from pyanaconda.product import productName + from pyanaconda.simpleconfig import simple_replace + from functools import wraps + from urlgrabber.grabber import URLGrabber, URLGrabError +@@ -519,12 +519,16 @@ reposdir=%s + @property + def mirrorEnabled(self): + with _yum_lock: +- # yum initializes with plugins disabled, and when plugins are disabled +- # _yum.plugins is a DummyYumPlugins object, which has no useful attributes. +- if hasattr(self._yum.plugins, "_plugins"): +- return "fastestmirror" in self._yum.plugins._plugins ++ # we just skip this on CentOS since we cant support it yet ++ if productName.startswith("CentOS"): ++ return False + else: +- return False ++ # yum initializes with plugins disabled, and when plugins are disabled ++ # _yum.plugins is a DummyYumPlugins object, which has no useful attributes. ++ if hasattr(self._yum.plugins, "_plugins"): ++ return "fastestmirror" in self._yum.plugins._plugins ++ else: ++ return False + + def getRepo(self, repo_id): + """Return the yum repo object.""" diff --git a/SOURCES/anaconda-centos-help-text.patch b/SOURCES/anaconda-centos-help-text.patch new file mode 100644 index 0000000..329bfe9 --- /dev/null +++ b/SOURCES/anaconda-centos-help-text.patch @@ -0,0 +1,18 @@ +diff -uNr anaconda-21.48.22.56__orig/data/help/en-US/CentOSPlaceholder.html anaconda-21.48.22.56/data/help/en-US/CentOSPlaceholder.html +--- anaconda-21.48.22.56__orig/data/help/en-US/CentOSPlaceholder.html 1970-01-01 01:00:00.000000000 +0100 ++++ anaconda-21.48.22.56/data/help/en-US/CentOSPlaceholder.html 2015-12-07 17:07:05.017000000 +0000 +@@ -0,0 +1,5 @@ ++ ++

The Anaconda built-in help

++

...is not yet available for this screen.

++

You can check out the CentOS Linux resouces online at https://wiki.centos.org/InstallerHelp.

++ +diff -uNr anaconda-21.48.22.56__orig/data/help/en-US/CentOSPlaceholderWithLinks.html anaconda-21.48.22.56/data/help/en-US/CentOSPlaceholderWithLinks.html +--- anaconda-21.48.22.56__orig/data/help/en-US/CentOSPlaceholderWithLinks.html 1970-01-01 01:00:00.000000000 +0100 ++++ anaconda-21.48.22.56/data/help/en-US/CentOSPlaceholderWithLinks.html 2015-12-07 17:09:47.845000000 +0000 +@@ -0,0 +1,5 @@ ++ ++

The Anaconda built-in help

++

...is not yet available for this screen.

++

You can check out the CentOS Linux resouces online at https://wiki.centos.org/InstallerHelp.

++ diff --git a/SOURCES/anaconda-centos-set-right-eula-location.patch b/SOURCES/anaconda-centos-set-right-eula-location.patch new file mode 100644 index 0000000..e33eb4e --- /dev/null +++ b/SOURCES/anaconda-centos-set-right-eula-location.patch @@ -0,0 +1,12 @@ +diff -uNr anaconda-19.31.79__orig/pyanaconda/constants.py anaconda-19.31.79/pyanaconda/constants.py +--- anaconda-19.31.79__orig/pyanaconda/constants.py 2014-04-29 01:45:59.000000000 +0100 ++++ anaconda-19.31.79/pyanaconda/constants.py 2014-06-18 23:42:35.944668381 +0100 +@@ -50,7 +50,7 @@ + productArch = product.productArch + bugzillaUrl = product.bugUrl + isFinal = product.isFinal +-eulaLocation = "/usr/share/redhat-release/EULA" ++eulaLocation = "/usr/share/centos-release/EULA" + + # for use in device names, eg: "fedora", "rhel" + shortProductName = productName.lower() diff --git a/SOURCES/anaconda-centos-skip-retry-if-not-connected.patch b/SOURCES/anaconda-centos-skip-retry-if-not-connected.patch new file mode 100644 index 0000000..2e51bc2 --- /dev/null +++ b/SOURCES/anaconda-centos-skip-retry-if-not-connected.patch @@ -0,0 +1,14 @@ +diff -uNr anaconda-21.48.22.56__orig/pyanaconda/packaging/yumpayload.py anaconda-21.48.22.56/pyanaconda/packaging/yumpayload.py +--- anaconda-21.48.22.56__orig/pyanaconda/packaging/yumpayload.py 2015-12-08 14:36:52.533000000 +0000 ++++ anaconda-21.48.22.56/pyanaconda/packaging/yumpayload.py 2015-12-08 14:38:51.464000000 +0000 +@@ -648,6 +648,10 @@ + # so that unattended installations on unreliable networks have + # a higher chance of finishing successfully + xdelay = xprogressive_delay() ++ if not nm_is_connected(): ++ MAX_METADATA_DOWNLOAD_RETRIES = 1 ++ else: ++ MAX_METADATA_DOWNLOAD_RETRIES = 10 + for retry_count in xrange(0, MAX_METADATA_DOWNLOAD_RETRIES + 1): + if retry_count > 0: + # introduce a retry delay diff --git a/SOURCES/rpmostreepayload-Rework-remote-add-handling.patch b/SOURCES/rpmostreepayload-Rework-remote-add-handling.patch deleted file mode 100644 index 16b0660..0000000 --- a/SOURCES/rpmostreepayload-Rework-remote-add-handling.patch +++ /dev/null @@ -1,116 +0,0 @@ -From c72f979499f5af3091ad8f2017442b3728cdff2f Mon Sep 17 00:00:00 2001 -From: Colin Walters -Date: Tue, 16 Jun 2015 11:24:20 -0400 -Subject: [PATCH] Rebase - ---- - pyanaconda/packaging/rpmostreepayload.py | 67 ++++++++++++++++++++------------ - 1 file changed, 43 insertions(+), 24 deletions(-) - -diff --git a/pyanaconda/packaging/rpmostreepayload.py b/pyanaconda/packaging/rpmostreepayload.py -index 5eacd9f..f979c3e 100644 ---- a/pyanaconda/packaging/rpmostreepayload.py -+++ b/pyanaconda/packaging/rpmostreepayload.py -@@ -138,24 +138,25 @@ class RPMOSTreePayload(ArchivePayload): - ["admin", "--sysroot=" + iutil.getTargetPhysicalRoot(), - "init-fs", iutil.getTargetPhysicalRoot()]) - -- repo_arg = "--repo=" + iutil.getTargetPhysicalRoot() + '/ostree/repo' -+ self._sysroot_path = Gio.File.new_for_path(iutil.getTargetPhysicalRoot()) -+ sysroot = OSTree.Sysroot.new(self._sysroot_path) -+ sysroot.load(cancellable) -+ repo = sysroot.get_repo(None)[1] -+ # We don't support resuming from interrupted installs -+ repo.set_disable_fsync(True) - -- # Store this for use in postInstall too, where we need to -- # undo/redo this step. -- self._base_remote_args = ["remote", "add"] -+ self._remoteOptions = {} -+ -+ # Handle variations in pykickstart - if ((hasattr(ostreesetup, 'noGpg') and ostreesetup.noGpg) or - (hasattr(ostreesetup, 'nogpg') and ostreesetup.nogpg)): -- self._base_remote_args.append("--set=gpg-verify=false") -- self._base_remote_args.extend([ostreesetup.remote, -- ostreesetup.url]) -- self._safeExecWithRedirect("ostree", [repo_arg] + self._base_remote_args) -+ self._remoteOptions['gpg-verify'] = GLib.Variant('b', False) - -- self._sysroot_path = sysroot_path = Gio.File.new_for_path(iutil.getTargetPhysicalRoot()) -- sysroot = OSTree.Sysroot.new(sysroot_path) -- sysroot.load(cancellable) -+ repo.remote_change(None, OSTree.RepoRemoteChange.ADD_IF_NOT_EXISTS, -+ ostreesetup.remote, ostreesetup.url, -+ GLib.Variant('a{sv}', self._remoteOptions), -+ cancellable) - -- repo = sysroot.get_repo(None)[1] -- repo.set_disable_fsync(True) - progressQ.send_message(_("Starting pull of %(branchName)s from %(source)s") % \ - {"branchName": ostreesetup.ref, "source": ostreesetup.remote}) - -@@ -174,6 +175,14 @@ class RPMOSTreePayload(ArchivePayload): - - progressQ.send_message(_("Preparing deployment of %s") % (ostreesetup.ref, )) - -+ # Now that we have the data pulled, delete the remote for now. -+ # This will allow a remote configuration defined in the tree -+ # (if any) to override what's in the kickstart. Otherwise, -+ # we'll re-add it in post. Ideally, ostree would support a -+ # pull without adding a remote, but that would get quite -+ # complex. -+ repo.remote_delete(self.data.ostreesetup.remote, None) -+ - self._safeExecWithRedirect("ostree", - ["admin", "--sysroot=" + iutil.getTargetPhysicalRoot(), - "os-init", ostreesetup.osname]) -@@ -250,24 +259,34 @@ class RPMOSTreePayload(ArchivePayload): - - def postInstall(self): - super(RPMOSTreePayload, self).postInstall() -- -+ - from gi.repository import OSTree - cancellable = None - -- # Reload this data - we couldn't keep it open across -- # the remounts happening. - sysroot = OSTree.Sysroot.new(self._sysroot_path) - sysroot.load(cancellable) - repo = sysroot.get_repo(None)[1] - -- # This is an ugly hack - we didn't have /etc/ostree/remotes.d, -- # so the remote went into /ostree/repo/config. But we want it -- # in /etc, so delete that remote, then re-add it to -- # /etc/ostree/remotes.d, executing ostree inside the sysroot -- # so that it understands it's a "system repository" and should -- # modify /etc. -- repo.remote_delete(self.data.ostreesetup.remote, None) -- self._safeExecWithRedirect("ostree", self._base_remote_args, root=iutil.getSysroot()) -+ # CentOS specific patch (for now) - pull the remote config from usr/etc if it exists. -+ # The OSTree handling here was buggy in that it wasn't looking in the sysroot -+ # for existing remotes. -+ default_remote_path = iutil.getSysroot() + '/usr/etc/ostree/remotes.d/' + self.data.ostreesetup.osname + '.conf' -+ if os.path.isfile(default_remote_path): -+ destpath = iutil.getSysroot() + '/etc/ostree/remotes.d/' + os.path.basename(default_remote_path) -+ self._safeExecWithRedirect('cp', ['-r', '-p', default_remote_path, destpath]) -+ else: -+ # Following up on the "remote delete" above, we removed the -+ # remote from /ostree/repo/config. But we want it in /etc, so -+ # re-add it to /etc/ostree/remotes.d, using the sysroot path. -+ # -+ # However, we ignore the case where the remote already exists, -+ # which occurs when the content itself provides the remote -+ # config file. -+ repo.remote_change(Gio.File.new_for_path(iutil.getSysroot()), -+ OSTree.RepoRemoteChange.ADD_IF_NOT_EXISTS, -+ self.data.ostreesetup.remote, self.data.ostreesetup.url, -+ GLib.Variant('a{sv}', self._remoteOptions), -+ cancellable) - - boot = iutil.getSysroot() + '/boot' - --- -1.8.3.1 - diff --git a/SOURCES/yumpayload-dont-verify-disabled-repos.patch b/SOURCES/yumpayload-dont-verify-disabled-repos.patch new file mode 100644 index 0000000..d985391 --- /dev/null +++ b/SOURCES/yumpayload-dont-verify-disabled-repos.patch @@ -0,0 +1,14 @@ +diff -uNrp anaconda-21.48.22.121.orig/pyanaconda/packaging/yumpayload.py anaconda-21.48.22.121/pyanaconda/packaging/yumpayload.py +--- anaconda-21.48.22.121.orig/pyanaconda/packaging/yumpayload.py 2017-04-27 08:09:33.000000000 -0500 ++++ anaconda-21.48.22.121/pyanaconda/packaging/yumpayload.py 2017-09-04 00:21:23.617491857 -0500 +@@ -206,6 +206,10 @@ class YumPayload(PackagePayload): + """Save repomd.xml files for later test for availability.""" + self._repoMD_list = [] + for repoID in self.repos: ++ if not self.isRepoEnabled(repoID): ++ log.info("Not checking metadata for disabled repo %s", repoID) ++ continue ++ + repo = self.getRepo(repoID) + with _yum_lock: + repoMD = RepoMDMetaHash(self, repo) diff --git a/SPECS/anaconda.spec b/SPECS/anaconda.spec index b69b765..15b8c3e 100644 --- a/SPECS/anaconda.spec +++ b/SPECS/anaconda.spec @@ -17,8 +17,15 @@ Source0: %{name}-%{version}.tar.bz2 # backported for RHELAH 7.4.2 Patch0: 0001-rpmostreepayload-Rollup-backport-of-Fedora-patches.patch Patch1: 0001-installclasses-rhelah-Bump-default-to-15GB-max.patch -Patch2: rpmostreepayload-Rework-remote-add-handling.patch -Patch3: CentOS-atomic-branding.patch +Patch101: anaconda-centos-add-centos-install-class.patch +Patch102: anaconda-centos-set-right-eula-location.patch +Patch103: anaconda-centos-disable-mirrors.patch +Patch104: anaconda-centos-bootfs-default-to-xfs.patch +Patch105: anaconda-centos-help-text.patch +Patch106: anaconda-centos-skip-retry-if-not-connected.patch +Patch107: 9800-rpmostreepayload-Rework-remote-add-handling.patch +Patch108: yumpayload-dont-verify-disabled-repos.patch + # Versions of required components (done so we make sure the buildrequires # match the requires versions of things). @@ -182,7 +189,7 @@ Requires: keybinder3 Requires: NetworkManager-wifi %endif Requires: yelp -Requires: anaconda-user-help >= %{helpver} +#Requires: anaconda-user-help >= %{helpver} # Needed to compile the gsettings files BuildRequires: gsettings-desktop-schemas @@ -233,8 +240,14 @@ runtime on NFS/HTTP/FTP servers or local disks. %setup -q %patch0 -p1 %patch1 -p1 -%patch2 -p1 -%patch3 -p1 +%patch101 -p1 +%patch102 -p1 +%patch103 -p1 +%patch104 -p1 +%patch105 -p1 +%patch106 -p1 +%patch107 -p1 +%patch108 -p1 %build %configure --disable-static \ @@ -328,8 +341,7 @@ update-desktop-database &> /dev/null || : %changelog * Thu Oct 19 2017 CentOS Sources - 21.48.22.121-3.rhelah.0.el7.centos -- ostree remote repo url changes -- Add CentOS branding for installclass +- Manual CentOS Debranding * Mon Aug 21 2017 Colin Walters - 21.48.22.121-3.rhelah.0 - Backport patches for RHELAH /var and ISO default storage increase