[Rpm-metadata] createrepo/__init__.py createrepo/readMetadata.py

Seth Vidal skvidal at linux.duke.edu
Tue Jan 29 02:31:45 UTC 2008


 createrepo/__init__.py     |    6 +-----
 createrepo/readMetadata.py |   18 +++++++++++++-----
 2 files changed, 14 insertions(+), 10 deletions(-)

New commits:
commit 05d2efbadbbeb3cc9957a8bc0c41b05ceda08d57
Author: Seth Vidal <skvidal at fedoraproject.org>
Date:   Mon Jan 28 21:28:17 2008 -0500

    make readMetadata.py take its metadata file locations from
    repomd.xml using the yum parser for it.
    complete --unique-md-filenames implementation

diff --git a/createrepo/__init__.py b/createrepo/__init__.py
index 429bb07..e26961f 100644
--- a/createrepo/__init__.py
+++ b/createrepo/__init__.py
@@ -297,9 +297,6 @@ class MetaDataGenerator:
         # the files WERE to pass in the right fns.
         if self.conf.update:
             #build the paths
-            primaryfile = os.path.join(self.conf.outputdir, self.conf.finaldir, self.conf.primaryfile)
-            flfile = os.path.join(self.conf.outputdir, self.conf.finaldir, self.conf.filelistsfile)
-            otherfile = os.path.join(self.conf.outputdir, self.conf.finaldir, self.conf.otherfile)
             opts = {
                 'verbose' : self.conf.verbose,
                 'pkgdir'  : os.path.normpath(self.package_dir)
@@ -308,8 +305,7 @@ class MetaDataGenerator:
                 opts['do_stat'] = False
                 
             #and scan the old repo
-            self.oldData = readMetadata.MetadataIndex(self.conf.outputdir,
-                                                      primaryfile, flfile, otherfile, opts)
+            self.oldData = readMetadata.MetadataIndex(self.conf.outputdir, opts)
            
     def doPkgMetadata(self):
         """all the heavy lifting for the package metadata"""
diff --git a/createrepo/readMetadata.py b/createrepo/readMetadata.py
index 72ac845..ea2c400 100644
--- a/createrepo/readMetadata.py
+++ b/createrepo/readMetadata.py
@@ -21,14 +21,25 @@ import libxml2
 import stat
 from utils import errorprint, _
 
+from yum import repoMDObject
+
 
 class MetadataIndex(object):
 
-    def __init__(self, outputdir, basefile, filelistfile, otherfile, opts=None):
+    def __init__(self, outputdir, opts=None):
         if opts is None:
             opts = {}
         self.opts = opts
         self.outputdir = outputdir
+        repodatadir = self.outputdir + '/repodata'
+        myrepomdxml = repodatadir + '/repomd.xml'
+        repomd = repoMDObject.RepoMD('garbageid', myrepomdxml)
+        b = repomd.getData('primary').location[1]
+        f = repomd.getData('filelists').location[1]
+        o = repomd.getData('other').location[1]
+        basefile = os.path.join(self.outputdir, b)
+        filelistfile = os.path.join(self.outputdir, f)
+        otherfile = os.path.join(self.outputdir, o)
         self.files = {'base' : basefile,
                       'filelist' : filelistfile,
                       'other' : otherfile}
@@ -191,13 +202,10 @@ class MetadataIndex(object):
 
 if __name__ == "__main__":
     cwd = os.getcwd()
-    p = os.path.join(cwd, "repodata/primary.xml.gz")     
-    f = os.path.join(cwd, "repodata/filelists.xml.gz")
-    o = os.path.join(cwd, "repodata/other.xml.gz")
     opts = {'verbose':1, 
             'pkgdir': cwd}
             
-    idx = MetadataIndex(".", p, f, o, opts)
+    idx = MetadataIndex(cwd, opts)
     for fn in idx.basenodes.keys():
        a,b,c, = idx.getNodes(fn)
        a.serialize()



More information about the Rpm-metadata mailing list