[Rpm-metadata] 2 commits - createrepo/__init__.py genpkgmetadata.py

skvidal at osuosl.org skvidal at osuosl.org
Wed Feb 10 19:33:53 UTC 2010


 createrepo/__init__.py |   26 ++++++++++++++++++++++----
 genpkgmetadata.py      |    3 ++-
 2 files changed, 24 insertions(+), 5 deletions(-)

New commits:
commit 08c74e12b25d4dc6758afa4b8aa2779875a23bea
Merge: 566f6b3... 900caa2...
Author: Seth Vidal <skvidal at fedoraproject.org>
Date:   Wed Feb 10 14:34:09 2010 -0500

    Merge branch 'master' of ssh://createrepo.baseurl.org/srv/projects/createrepo/git/createrepo
    
    * 'master' of ssh://createrepo.baseurl.org/srv/projects/createrepo/git/createrepo:
      Make *Emacs unsuspicious about trailing whitespace.
      Fix --exclude -> --excludes typo.
      Add missing spaces in various help strings.

commit 566f6b3056901f2d20f37bac4292565fd055b60a
Author: Seth Vidal <skvidal at fedoraproject.org>
Date:   Wed Feb 10 14:31:58 2010 -0500

    add --read-pkgs-list option to output list of pkgs actually read.
    
    completely optional and only really useful with --update or a --cachedir for what
    pkgs DID get read/parsed.

diff --git a/createrepo/__init__.py b/createrepo/__init__.py
index 4ec2d51..0c0c7d8 100644
--- a/createrepo/__init__.py
+++ b/createrepo/__init__.py
@@ -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"""
diff --git a/genpkgmetadata.py b/genpkgmetadata.py
index 9d755af..1be769e 100755
--- a/genpkgmetadata.py
+++ b/genpkgmetadata.py
@@ -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:


More information about the Rpm-metadata mailing list