primaryfilepath = os.path.join(self.conf.outputdir, self.conf.tempdir, self.conf.primaryfile)
fo = _gzipOpen(primaryfilepath, 'w')
fo.write('<?xml version="1.0" encoding="UTF-8"?>\n')
- fo.write('<metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="%s">\n' %
+ fo.write('<metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="%s">' %
self.pkgcount)
return fo
filelistpath = os.path.join(self.conf.outputdir, self.conf.tempdir, self.conf.filelistsfile)
fo = _gzipOpen(filelistpath, 'w')
fo.write('<?xml version="1.0" encoding="UTF-8"?>\n')
- fo.write('<filelists xmlns="http://linux.duke.edu/metadata/filelists" packages="%s">\n' %
+ fo.write('<filelists xmlns="http://linux.duke.edu/metadata/filelists" packages="%s">' %
self.pkgcount)
return fo
otherfilepath = os.path.join(self.conf.outputdir, self.conf.tempdir, self.conf.otherfile)
fo = _gzipOpen(otherfilepath, 'w')
fo.write('<?xml version="1.0" encoding="UTF-8"?>\n')
- fo.write('<otherdata xmlns="http://linux.duke.edu/metadata/other" packages="%s">\n' %
+ fo.write('<otherdata xmlns="http://linux.duke.edu/metadata/other" packages="%s">' %
self.pkgcount)
return fo
current+=1
recycled = False
sep = '-'
-
+ print pkg
# look to see if we can get the data from the old repodata
# if so write this one out that way
if self.conf.update:
self.flfile.write(po.do_filelists_xml_dump())
self.otherfile.write(po.do_other_xml_dump())
else:
+ if self.conf.verbose:
+ print "Using data from old metadata for %s" % pkg
sep = '*'
- primarynode, filenode, othernode = nodes
+ (primarynode, filenode, othernode) = nodes
for node, outfile in ((primarynode,self.primaryfile),
(filenode,self.flfile),
if node is None:
break
output = node.serialize('UTF-8', self.conf.pretty)
- outfile.write(output)
+ if output:
+ outfile.write(output)
+ else:
+ if self.conf.verbose:
+ print "empty serialize on write to %s in %s" % (outfile, pkg)
outfile.write('\n')
-
- self.oldData.freeNodes(pkg)
+
+ self.oldData.freeNodes(pkg)
if not self.conf.quiet:
if self.conf.verbose:
self.pkg_ids = {}
if self.opts.get('verbose'):
print _("Scanning old repo data")
- for file in self.files.values():
- if not os.path.exists(file):
+ for fn in self.files.values():
+ if not os.path.exists(fn):
#cannot scan
- errorprint(_("Previous repo file missing: %s") % file)
+ errorprint(_("Previous repo file missing: %s") % fn)
return
root = libxml2.parseFile(self.files['base']).getRootElement()
self._scanPackageNodes(root, self._handleBase)
if __name__ == "__main__":
- #test code - attempts to read a repo in working directory
- idx = MetadataIndex(".", "repodata/primary.xml.gz", "repodata/filelists.xml.gz",
- "repodata/other.xml.gz", {'verbose':1})
+ 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)
+ for fn in idx.basenodes.keys():
+ a,b,c, = idx.getNodes(fn)
+ a.serialize()
+ b.serialize()
+ c.serialize()
+ idx.freeNodes(fn)
+
+
<packager>%s</packager>
<url>%s</url>
<time file="%s" build="%s"/>
- <size package="%s" installed="%s" archive="%s"/>
-
- """ % (self.name, self.arch, self.epoch, self.ver, self.rel, self.checksum,
+ <size package="%s" installed="%s" archive="%s"/>""" % (self.name,
+ self.arch, self.epoch, self.ver, self.rel, self.checksum,
self._xml(self.summary), self._xml(self.description), packager,
url, self.filetime, self.buildtime, self.packagesize, self.size,
self.archivesize)
if baseurl:
- msg += """<location xml:base="%s" href="%s"/>\n""" % (self._xml(baseurl), relpath)
+ msg += """<location xml:base="%s" href="%s"/>""" % (self._xml(baseurl), relpath)
else:
- msg += """<location href="%s"/>\n""" % relpath
+ msg += """<location href="%s"/>""" % relpath
return msg
msg += self._dump_pco('conflicts')
msg += self._dump_pco('obsoletes')
msg += self._dump_files(True)
- msg += """\n </format>\n"""
+ msg += """\n </format>"""
return msg
def _dump_pco(self, pcotype):
def _dump_files(self, primary=False):
- msg ="\n"
+ msg =""
if not primary:
files = self.returnFileEntries('file')
dirs = self.returnFileEntries('dir')
msg = """\n<package type="rpm">"""
msg += self._dump_base_items(basedir, baseurl)
msg += self._dump_format_items()
- msg += """\n</package>\n"""
+ msg += """\n</package>"""
return msg
def do_filelists_xml_dump(self):
<version epoch="%s" ver="%s" rel="%s"/>\n""" % (self.checksum, self.name,
self.arch, self.epoch, self.ver, self.rel)
msg += self._dump_files()
- msg += "\n</package>\n"
+ msg += "</package>\n"
return msg
def do_other_xml_dump(self):