add --read-pkgs-list option to output list of pkgs actually read.
authorSeth Vidal <skvidal@fedoraproject.org>
Wed, 10 Feb 2010 19:31:58 +0000 (14:31 -0500)
committerSeth Vidal <skvidal@fedoraproject.org>
Wed, 10 Feb 2010 19:31:58 +0000 (14:31 -0500)
completely optional and only really useful with --update or a --cachedir for what
pkgs DID get read/parsed.

createrepo/__init__.py
genpkgmetadata.py

index 4ec2d51e75547acf16ae51bfb6288d865abc661b..0c0c7d83081014356d4ced71b6853bd855feffe9 100644 (file)
@@ -100,7 +100,9 @@ class MetaDataConfig(object):
         self.revision = str(int(time.time()))
         self.content_tags = [] # flat list of strings (like web 2.0 tags)
         self.distro_tags = []# [(cpeid(None allowed), human-readable-string)]
-
+        self.read_pkgs_list = None # filepath/name to write out list of pkgs
+                                   # read in this run of createrepo
+        
 class SimpleMDCallBack(object):
     def errorlog(self, thing):
         print >> sys.stderr, thing
@@ -130,6 +132,7 @@ class MetaDataGenerator:
         self.current_pkg = 0
         self.files = []
         self.rpmlib_reqs = {}
+        self.read_pkgs = []
                 
         if not self.conf.directory and not self.conf.directories:
             raise MDError, "No directory given on which to run."
@@ -368,7 +371,8 @@ class MetaDataGenerator:
             self.closeMetadataDocs()
         except (IOError, OSError), e:
             raise MDError, _('Cannot access/write repodata files: %s') % e
-
+        
+        
     def openMetadataDocs(self):
         if self.conf.database_only:
             self.setup_sqlite_dbs()
@@ -520,10 +524,12 @@ class MetaDataGenerator:
                     # we can use deltas:
                     if self.conf.deltas:
                         self._do_delta_rpm_package(po)
-
+                    self.read_pkgs.append(pkg)
+                    
                 else:
                     po = pkg
-
+                    self.read_pkgs.append(po.localpath)
+                    
                 if self.conf.database_only:
                     pass # disabled right now for sanity reasons (mine)
                     #po.do_sqlite_dump(self.md_sqlite)
@@ -1075,6 +1081,18 @@ class MetaDataGenerator:
                           % self.conf.olddir)
             self.errorlog(_('Error was %s') % e)
             self.errorlog(_('Please clean up this directory manually.'))
+        
+        # write out the read_pkgs_list file with self.read_pkgs
+        if self.conf.read_pkgs_list:
+            try:
+                fo = open(self.conf.read_pkgs_list, 'w')
+                fo.write('\n'.join(self.read_pkgs))
+                fo.flush()
+                fo.close()
+            except (OSError, IOError), e:
+                self.errorlog(_('Could not write out readpkgs list: %s') 
+                              % self.conf.read_pkgs_list)
+                self.errorlog(_('Error was %s') % e)
 
     def setup_sqlite_dbs(self, initdb=True):
         """sets up the sqlite dbs w/table schemas and db_infos"""
index 9d755af64ac47ccfaee956e40ddea773bb17e2dc..1be769eb30a0fc236e9d9c8425e39cb8b653c7d9 100755 (executable)
@@ -110,7 +110,8 @@ def parse_args(args, conf):
         action="append", help="paths to look for older pkgs to delta against")
     parser.add_option("--num-deltas", default=1, dest='num_deltas', type='int',
         help="the number of older versions to make deltas against")
-
+    parser.add_option("--read-pkgs-list", default=None, dest='read_pkgs_list',
+        help="output the paths to the pkgs actually read useful with --update")
 
     (opts, argsleft) = parser.parse_args(args)
     if len(argsleft) > 1 and not opts.split: