Set up metalink earlier, to avoid calling _hack_mirrorlist_for_anaconda() at four different places. --- yum/__init__.py | 9 +++++++++ yum/yumRepo.py | 19 ------------------- 2 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/yum/__init__.py b/yum/__init__.py index 5fb7c00..45130e9 100644 --- a/yum/__init__.py +++ b/yum/__init__.py @@ -539,6 +539,15 @@ class YumBase(depsolve.Depsolve): repo.yumvar.update(self.conf.yumvar) repo.cfg = parser + # Anaconda doesn't like having mirrorlist and metalink, so we allow + # mirrorlist to act like metalink. Except we'd really like to know which + # we have without parsing it ... and want to store it in the right + # place etc. + # So here is #1 hack: see if the metalink is unset and the mirrorlist + # URL contains the string "metalink", if it does we copy it over. + if not repo.metalink and 'metalink' in (repo.mirrorlist or ''): + repo.metalink = repo.mirrorlist + return repo def disablePlugins(self): diff --git a/yum/yumRepo.py b/yum/yumRepo.py index 91b7dde..6042a51 100644 --- a/yum/yumRepo.py +++ b/yum/yumRepo.py @@ -621,21 +621,6 @@ class YumRepository(Repository, config.RepoConf): Errors.YumFutureDeprecationWarning, stacklevel=2) self._baseurlSetup() - def _hack_mirrorlist_for_anaconda(self): - # Anaconda doesn't like having mirrorlist and metalink, so we allow - # mirrorlist to act like metalink. Except we'd really like to know which - # we have without parsing it ... and want to store it in the right - # place etc. - # So here is #1 hack: see if the metalin kis unset and the mirrorlist - # URL contains the string "metalink", if it does we copy it over. - if self.metalink: - return - if not self.mirrorlist: - return - if self.mirrorlist.find("metalink") == -1: - return - self.metalink = self.mirrorlist - def _baseurlSetup(self): """go through the baseurls and mirrorlists and populate self.urls with valid ones, run self.check() at the end to make sure it worked""" @@ -647,7 +632,6 @@ class YumRepository(Repository, config.RepoConf): self._orig_baseurl = self.baseurl mirrorurls = [] - self._hack_mirrorlist_for_anaconda() if self.metalink and not self.mirrorlistparsed: # FIXME: This is kind of lying to API callers mirrorurls.extend(list(self.metalink_data.urls())) @@ -916,7 +900,6 @@ Insufficient space in download directory %s self._metadataCurrent = False return False - self._hack_mirrorlist_for_anaconda() mlfn = self.cachedir + '/' + 'metalink.xml' if self.metalink and not os.path.exists(mlfn): self._metadataCurrent = False @@ -1216,7 +1199,6 @@ Insufficient space in download directory %s if not oxml: # No old repomd.xml data return False - self._hack_mirrorlist_for_anaconda() if not self.metalink: # Nothing to check it against return False @@ -1516,7 +1498,6 @@ Insufficient space in download directory %s except Errors.RepoMDError, e: raise URLGrabError(-1, 'Error importing repomd.xml for %s: %s' % (self, e)) - self._hack_mirrorlist_for_anaconda() if self.metalink and not self._checkRepoMetalink(repoXML): raise URLGrabError(-1, 'repomd.xml does not match metalink for %s' % self) -- 1.7.4.4 _______________________________________________ Yum-devel mailing list Yum-devel@lists.baseurl.org http://lists.baseurl.org/mailman/listinfo/yum-devel