- include xmlns:rpm in main metadata tag rather than per-format node
authorSeth Vidal <skvidal@linux.duke.edu>
Wed, 30 Jun 2004 07:08:22 +0000 (07:08 +0000)
committerSeth Vidal <skvidal@linux.duke.edu>
Wed, 30 Jun 2004 07:08:22 +0000 (07:08 +0000)
- fix output for sorta-list, sorta-string rpm header tags

dumpMetadata.py
genpkgmetadata.py

index 9ee2bad4afc9a009ffbab6add1e0ec2b9a3880e5..446faa8897e457da14694d326c2f2b8e8de5eadf 100644 (file)
@@ -338,7 +338,14 @@ class RpmMetaData:
         return u
 
     def tagByName(self, tag):
-        return self.hdr[tag]
+        data = self.hdr[tag]
+        if type(data) is types.ListType:
+            if len(data) > 0:
+                return data[0]
+            else:
+                return ''
+        else:
+            return data
     
     def listTagByName(self, tag):
         """take a tag that should be a list and make sure it is one"""
@@ -456,7 +463,7 @@ class RpmMetaData:
         return lst
     
     
-def generateXML(doc, node, rpmObj, sumtype):
+def generateXML(doc, node, formatns, rpmObj, sumtype):
     """takes an xml doc object and a package metadata entry node, populates a 
        package node with the md information"""
     ns = node.ns()
@@ -490,8 +497,9 @@ def generateXML(doc, node, rpmObj, sumtype):
     if rpmObj.localurl is not None:
         location.newProp('xml:base', rpmObj.localurl)
     location.newProp('href', rpmObj.relativepath)
-    format = pkgNode.newChild(None, 'format', None)
-    formatns = format.newNs('http://linux.duke.edu/metadata/rpm', 'rpm')
+    format = pkgNode.newChild(ns, 'format', None)
+    #formatns = format.newNs('http://linux.duke.edu/metadata/rpm', 'rpm')
+    #format.setNs(ns)
     for tag in ['license', 'vendor', 'group', 'buildhost', 'sourcerpm']:
         value = rpmObj.tagByName(tag)
         value = utf8String(value)
index a9d0ddb7859f41abc0019e8aba2bfaf7882acb81..cc847fadcb4d3133f4aef9dcd78d969ed1ec8e7d 100755 (executable)
@@ -231,11 +231,12 @@ def doPkgMetadata(cmds, ts):
     basedoc = libxml2.newDoc("1.0")
     baseroot =  basedoc.newChild(None, "metadata", None)
     basens = baseroot.newNs('http://linux.duke.edu/metadata/common', None)
+    formatns = baseroot.newNs('http://linux.duke.edu/metadata/rpm', 'rpm')
     baseroot.setNs(basens)
     basefilepath = os.path.join(cmds['tempdir'], cmds['primaryfile'])
     basefile = _gzipOpen(basefilepath, 'w')
     basefile.write('<?xml version="1.0" encoding="UTF-8"?>\n')
-    basefile.write('<metadata xmlns="http://linux.duke.edu/metadata/common" packages="%s">\n' % 
+    basefile.write('<metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="%s">\n' % 
                    pkgcount)
 
     # setup the file list doc
@@ -279,7 +280,7 @@ def doPkgMetadata(cmds, ts):
             continue
         else:
             try:
-                node = dumpMetadata.generateXML(basedoc, baseroot, mdobj, cmds['sumtype'])
+                node = dumpMetadata.generateXML(basedoc, baseroot, formatns, mdobj, cmds['sumtype'])
             except dumpMetadata.MDError, e:
                 errorprint(_('\nAn error occurred creating primary metadata: %s') % e)
                 continue