[yum-commits] reposync.py

skvidal at osuosl.org skvidal at osuosl.org
Fri Oct 3 15:07:16 UTC 2008


 reposync.py |   28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

New commits:
commit ccb7b0081c411f5d44dae53e03d48e6db5520c73
Author: Seth Vidal <skvidal at fedoraproject.org>
Date:   Fri Oct 3 11:05:48 2008 -0400

    add option --download-metadata to grab all metadata that is not
      primary*, filelist*, other*
    useful for syncing over updateinfo, comps, etc.

diff --git a/reposync.py b/reposync.py
index 2719d35..421e61f 100755
--- a/reposync.py
+++ b/reposync.py
@@ -116,7 +116,9 @@ def parseArgs():
         help="enable yum plugin support")
     parser.add_option("-m", "--downloadcomps", default=False, action="store_true",
         help="also download comps.xml")
-        
+    parser.add_option("","--download-metadata", dest="downloadmd", 
+        default=False, action="store_true", 
+        help="download all the non-default metadata")
     (opts, args) = parser.parse_args()
     return (opts, args)
 
@@ -203,9 +205,8 @@ def main():
                     my.logger.info("Removing obsolete %s", pkg)
                 os.unlink(current_pkgs[pkg]['path'])
 
-        if opts.downloadcomps:
-            try: # download comps.xml
-                compsfile = repo.getGroups()
+        if opts.downloadcomps or opts.downloadmd:
+            try: # download random other metadata
                 if not os.path.exists(local_repo_path):
                     try:
                         os.makedirs(local_repo_path)
@@ -213,11 +214,22 @@ def main():
                         my.logger.error("Could not make repo subdir: %s" % e)
                         my.closeRpmDB()
                         sys.exit(1)
-
-                shutil.copyfile(compsfile,"%s/%s" % (local_repo_path,'comps.xml'))
-            except yum.Errors.RepoMDError:
+                if opts.downloadcomps:
+                    compsfile = repo.getGroups()
+                    shutil.copyfile(compsfile,"%s/%s" % (local_repo_path,'comps.xml'))
+                if opts.downloadmd:
+                    for ftype in repo.repoXML.fileTypes():
+                        if ftype in ['primary', 'primary_db', 'filelists',
+                                     'filelists_db', 'other', 'other_db']:
+                            continue
+                        if opts.downloadcomps and ftype == 'group':
+                            continue
+                        resultfile = repo.retrieveMD(ftype)
+                        basename  = os.path.basename(resultfile)
+                        shutil.copyfile(resultfile, "%s/%s" % (local_repo_path, basename))
+            except yum.Errors.RepoMDError,e :
                 if not opts.quiet:
-                    my.logger.error("Unable to fetch comps.xml")
+                    my.logger.error("Unable to fetch metadata: %s" % e)
 
         download_list.sort(sortPkgObj)
         n = 0


More information about the Yum-commits mailing list