2 commits - createrepo/merge.py mergerepo.py
[email protected] Thu, 28 Jul 2011 18:57:26 +0000 (UTC)
| Newsgroups | gmane.linux.rpm.metadata |
|---|---|
| Message-ID | <[email protected]> |
createrepo/merge.py | 23 +++++++++++++++++------ mergerepo.py | 12 ++++++++---- 2 files changed, 25 insertions(+), 10 deletions(-) New commits: commit 75d9ababe7055530f9770a0bb00c26540edb5600 Merge: 04ea860 377318a Author: Seth Vidal <[email protected]> Date: Thu Jul 28 14:57:18 2011 -0400 Merge branch 'master' of ssh://createrepo.baseurl.org/srv/projects/createrepo/git/createrepo * 'master' of ssh://createrepo.baseurl.org/srv/projects/createrepo/git/createrepo: Add --retain-old-md bash completion. commit 04ea860373f2e20e8532b83b1947e460b930c725 Author: Seth Vidal <[email protected]> Date: Thu Jul 28 14:55:01 2011 -0400 - make sure common uses of mergerepo do not fail (file-based-repos w/o file://) - catch errors about groups not existing - generally behave. diff --git a/createrepo/merge.py b/createrepo/merge.py index b3b2ea1..1ac43bb 100644 --- a/createrepo/merge.py +++ b/createrepo/merge.py @@ -24,6 +24,7 @@ from yum.misc import unique, getCacheDir import yum.update_md import rpmUtils.arch import operator +from utils import MDError import createrepo import tempfile @@ -84,6 +85,8 @@ class RepoMergeBase: # in the repolist count = 0 for r in self.repolist: + if r[0] == '/': + r = 'file://' + r # just fix the file repos, this is silly. count +=1 rid = 'repo%s' % count n = self.yumbase.add_enable_repo(rid, baseurls=[r], @@ -92,7 +95,10 @@ class RepoMergeBase: n._merge_rank = count #setup our sacks - self.yumbase._getSacks(archlist=self.archlist) + try: + self.yumbase._getSacks(archlist=self.archlist) + except yum.Errors.RepoError, e: + raise MDError, "Could not setup merge repo pkgsack: %s" % e myrepos = self.yumbase.repos.listEnabled() @@ -102,11 +108,16 @@ class RepoMergeBase: def write_metadata(self, outputdir=None): mytempdir = tempfile.mkdtemp() if self.groups: - comps_fn = mytempdir + '/groups.xml' - compsfile = open(comps_fn, 'w') - compsfile.write(self.yumbase.comps.xml()) - compsfile.close() - self.mdconf.groupfile=comps_fn + try: + comps_fn = mytempdir + '/groups.xml' + compsfile = open(comps_fn, 'w') + compsfile.write(self.yumbase.comps.xml()) + compsfile.close() + except yum.Errors.GroupsError, e: + # groups not being available shouldn't be a fatal error + pass + else: + self.mdconf.groupfile=comps_fn if self.updateinfo: ui_fn = mytempdir + '/updateinfo.xml' diff --git a/mergerepo.py b/mergerepo.py index 05e5f5e..069a70b 100755 --- a/mergerepo.py +++ b/mergerepo.py @@ -18,6 +18,7 @@ import sys import createrepo.merge +from createrepo.utils import MDError from optparse import OptionParser #TODO: @@ -77,9 +78,12 @@ def main(args): rmbase.groups = False if opts.noupdateinfo: rmbase.updateinfo = False - - rmbase.merge_repos() - rmbase.write_metadata() - + try: + rmbase.merge_repos() + rmbase.write_metadata() + except MDError, e: + print >> sys.stderr, "Could not merge repos: %s" % e + sys.exit(1) + if __name__ == "__main__": main(sys.argv[1:])