Discussion:
2 commits - createrepo/merge.py mergerepo.py
s***@osuosl.org
2011-07-28 18:57:26 UTC
Permalink
createrepo/merge.py | 23 +++++++++++++++++------
mergerepo.py | 12 ++++++++----
2 files changed, 25 insertions(+), 10 deletions(-)

New commits:
commit 75d9ababe7055530f9770a0bb00c26540edb5600
Merge: 04ea860 377318a
Author: Seth Vidal <***@fedoraproject.org>
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 <***@fedoraproject.org>
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:])

Loading...