[Rpm-metadata] 2 commits - createrepo/merge.py mergerepo.py

skvidal at osuosl.org skvidal at osuosl.org
Thu Jul 28 18:57:26 UTC 2011


 createrepo/merge.py |   23 +++++++++++++++++------
 mergerepo.py        |   12 ++++++++----
 2 files changed, 25 insertions(+), 10 deletions(-)

New commits:
commit 75d9ababe7055530f9770a0bb00c26540edb5600
Merge: 04ea860 377318a
Author: Seth Vidal <skvidal at 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 <skvidal at 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:])


More information about the Rpm-metadata mailing list