Trees | Indices | Help |
---|
|
1 # 2 # Copyright (c) 2008--2018 Red Hat, Inc. 3 # 4 # This software is licensed to you under the GNU General Public License, 5 # version 2 (GPLv2). There is NO WARRANTY for this software, express or 6 # implied, including the implied warranties of MERCHANTABILITY or FITNESS 7 # FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 8 # along with this software; if not, see 9 # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 10 # 11 # Red Hat trademarks are not licensed under GPLv2. No permission is 12 # granted to use or replicate Red Hat trademarks that are incorporated 13 # in this software or its documentation. 14 # 15 import re 16 17 XML_ENCODING = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 18 192188 8922 - def __init__(self, primary, filelists, other, updateinfo, groups, modules, fileobj, 23 checksum_type):24 self.primary = primary 25 self.filelists = filelists 26 self.other = other 27 self.updateinfo = updateinfo 28 self.groups = groups 29 self.modules = modules 30 31 self.fileobj = fileobj 32 if checksum_type == 'sha1': 33 self.checksum_type = 'sha' 34 else: 35 self.checksum_type = checksum_type3638 output = [] 39 output.append(" <data type=\"%s\">" % (data_type)) 40 output.append(" <location href=\"repodata/%s.xml.gz\"/>" 41 % (data_type)) 42 output.append(" <checksum type=\"%s\">%s</checksum>" 43 % (self.checksum_type, data_obj['gzip_checksum'])) 44 output.append(" <timestamp>%d</timestamp>" % (data_obj['timestamp'])) 45 output.append(" <open-checksum type=\"%s\">%s</open-checksum>" 46 % (self.checksum_type, data_obj['open_checksum'])) 47 output.append(" </data>") 48 return output4951 output = [] 52 if self.groups: 53 output.append(" <data type=\"group\">") 54 output.append(" <location href=\"repodata/comps.xml\"/>") 55 output.append(" <checksum type=\"%s\">%s</checksum>" 56 % (self.checksum_type, self.groups['open_checksum'])) 57 output.append(" <timestamp>%d</timestamp>" 58 % (self.groups['timestamp'])) 59 output.append(" </data>") 60 61 return output6264 output = [] 65 if self.modules: 66 output.append(" <data type=\"group\">") 67 output.append(" <location href=\"repodata/modules.yaml\"/>") 68 output.append(" <checksum type=\"%s\">%s</checksum>" 69 % (self.checksum_type, self.modules['open_checksum'])) 70 output.append(" <timestamp>%d</timestamp>" 71 % (self.groups['timestamp'])) 72 output.append(" </data>") 73 74 return output7577 output = [] 78 output.append(XML_ENCODING) 79 output.append("<repomd xmlns=\"http://linux.duke.edu/metadata/repo\">") 80 output.extend(self._get_data('primary', self.primary)) 81 output.extend(self._get_data('filelists', self.filelists)) 82 output.extend(self._get_data('other', self.other)) 83 output.extend(self._get_data('updateinfo', self.updateinfo)) 84 output.extend(self._get_comps_data()) 85 output.extend(self._get_modules_data()) 86 output.append("</repomd>") 87 self.fileobj.write('\n'.join(output))91 95210 21197 output = [] 98 for dep in deps: 99 if dep['flag']: 100 line = " <rpm:entry name=\"%s\" flags=\"%s\" \ 101 epoch=\"%s\" ver=\"%s\" " % (dep['name'], dep['flag'], 102 dep['epoch'], dep['version']) 103 if dep['release']: 104 line += "rel=\"%s\" " % dep['release'] 105 line += "/>" 106 output.append(line) 107 else: 108 output.append(" <rpm:entry name=\"%s\" />" 109 % (text_filter(dep['name']))) 110 return output111113 output = [] 114 filere = re.compile('.*bin\/.*|^\/etc\/.*|^\/usr\/lib\.sendmail$') 115 for pkg_file in files: 116 if filere.match(pkg_file): 117 output.append(" <file>%s</file>" 118 % (text_filter(pkg_file))) 119 return output120122 output = [] 123 output.append(" <package type=\"rpm\">") 124 output.append(" <name>%s</name>" % (package.name)) 125 output.append(" <arch>%s</arch>" % (package.arch)) 126 output.append(" <version epoch=\"%s\" ver=\"%s\" rel=\"%s\" />" 127 % (package.epoch, package.version, package.release)) 128 output.append(" <checksum type=\"%s\" pkgid=\"YES\">%s</checksum>" 129 % (package.checksum_type, package.checksum)) 130 output.append(" <summary>%s</summary>" 131 % (text_filter(package.summary))) 132 output.append(" <description>%s</description>" 133 % (text_filter(package.description))) 134 output.append(" <packager></packager>") 135 output.append(" <url></url>") 136 output.append(" <time file=\"%d\" build=\"%d\" />" 137 % (package.build_time, package.build_time)) 138 output.append(" <size package=\"%d\" installed=\"%d\" " 139 "archive=\"%d\" />" 140 % (package.package_size, package.installed_size, 141 package.payload_size)) 142 output.append(" <location href=\"getPackage/%s\" />" 143 % (package.filename)) 144 output.append(" <format>") 145 output.append(" <rpm:license>%s</rpm:license>" 146 % (text_filter(package.copyright))) 147 output.append(" <rpm:vendor>%s</rpm:vendor>" 148 % (text_filter(package.vendor))) 149 output.append(" <rpm:group>%s</rpm:group>" 150 % (text_filter(package.package_group))) 151 output.append(" <rpm:buildhost>%s</rpm:buildhost>" 152 % (text_filter(package.build_host))) 153 output.append(" <rpm:sourcerpm>%s</rpm:sourcerpm>" 154 % (text_filter(package.source_rpm))) 155 output.append(" <rpm:header-range start=\"%d\" end=\"%d\" />" 156 % (package.header_start, package.header_end)) 157 158 output.append(" <rpm:provides>") 159 output.extend(self._get_deps(package.provides)) 160 output.append(" </rpm:provides>") 161 162 output.append(" <rpm:requires>") 163 output.extend(self._get_deps(package.requires)) 164 output.append(" </rpm:requires>") 165 166 output.append(" <rpm:recommends>") 167 output.extend(self._get_deps(package.recommends)) 168 output.append(" </rpm:recommends>") 169 170 output.append(" <rpm:suggests>") 171 output.extend(self._get_deps(package.suggests)) 172 output.append(" </rpm:suggests>") 173 174 output.append(" <rpm:supplements>") 175 output.extend(self._get_deps(package.supplements)) 176 output.append(" </rpm:supplements>") 177 178 output.append(" <rpm:enhances>") 179 output.extend(self._get_deps(package.enhances)) 180 output.append(" </rpm:enhances>") 181 182 output.append(" <rpm:conflicts>") 183 output.extend(self._get_deps(package.conflicts)) 184 output.append(" </rpm:conflicts>") 185 186 output.append(" <rpm:obsoletes>") 187 output.extend(self._get_deps(package.obsoletes)) 188 output.append(" </rpm:obsoletes>") 189 190 output.extend(self._get_files(package.files)) 191 192 output.append(" </format>") 193 output.append(" </package>") 194 195 return output196198 output = XML_ENCODING + "\n" + \ 199 "<metadata xmlns=\"http://linux.duke.edu/metadata/common\" " + \ 200 "xmlns:rpm=\"http://linux.duke.edu/metadata/rpm\" " + \ 201 "packages=\"%d\">" % self.channel.num_packages 202 203 self.fileobj.write(output)204 207209 self.fileobj.write("</metadata>")213 217242 243219 output = [] 220 output.append(" <package pkgid=\"%s\" name=\"%s\" arch=\"%s\">" 221 % (package.checksum, package.name, package.arch)) 222 output.append(" <version epoch=\"%s\" ver=\"%s\" rel=\"%s\" />" 223 % (package.epoch, package.version, package.release)) 224 225 for file_name in package.files: 226 output.append(" <file>%s</file>" % (text_filter(file_name))) 227 output.append(" </package>") 228 return output229231 output = XML_ENCODING + "\n" + \ 232 "<filelists xmlns=\"http://linux.duke.edu/metadata/filelists\" " + \ 233 "packages=\"%d\">" % self.channel.num_packages 234 235 self.fileobj.write(output)236 239241 self.fileobj.write("</filelists>")245 249278 279251 output = [] 252 output.append(" <package pkgid=\"%s\" name=\"%s\" arch=\"%s\">" 253 % (package.checksum, package.name, package.arch)) 254 output.append(" <version epoch=\"%s\" ver=\"%s\" rel=\"%s\" />" 255 % (package.epoch, package.version, package.release)) 256 257 for changelog in package.changelog: 258 output.append(" <changelog author=\"%s\" date=\"%d\">" 259 % (text_filter_attribute(changelog['author']), 260 changelog['date'])) 261 output.append(" " + text_filter(changelog['text'])) 262 output.append(" </changelog>") 263 output.append(" </package>") 264 return output265267 output = XML_ENCODING + "\n" + \ 268 "<otherdata xmlns=\"http://linux.duke.edu/metadata/other\" " + \ 269 "packages=\"%d\">" % self.channel.num_packages 270 271 self.fileobj.write(output)272 275277 self.fileobj.write("</otherdata>")281 285360 361 370 371 378 379 384287 output = [] 288 output.append(" <references>") 289 290 ref_string = " <reference href=\"%s%s\" id=\"%s\" type=\"%s\">" 291 for cve_ref in erratum.cve_references: 292 output.append(ref_string 293 % ("http://cve.mitre.org/cgi-bin/cvename.cgi?name=", 294 cve_ref, cve_ref, "cve")) 295 output.append(" </reference>") 296 297 for bz_ref in erratum.bz_references: 298 output.append(ref_string 299 % ("http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=", 300 bz_ref['bug_id'], bz_ref['bug_id'], "bugzilla")) 301 output.append(" " + text_filter(bz_ref['summary'])) 302 output.append(" </reference>") 303 304 output.append(" </references>") 305 return output306308 output = [] 309 310 output.append(" <pkglist>") 311 output.append(" <collection short=\"%s\">" 312 % text_filter_attribute(self.channel.label)) 313 output.append(" <name>%s</name>" 314 % text_filter(self.channel.name)) 315 316 for package in erratum.packages: 317 output.append(" <package name=\"%s\" version=\"%s\" " 318 "release=\"%s\" epoch=\"%s\" arch=\"%s\" src=\"%s\">" 319 % (package.name, package.version, package.release, 320 package.epoch, package.arch, text_filter(package.source_rpm))) 321 output.append(" <filename>%s</filename>" 322 % text_filter(package.filename)) 323 output.append(" <sum type=\"%s\">%s</sum>" 324 % (package.checksum_type, package.checksum)) 325 output.append(" </package>") 326 327 output.append(" </collection>") 328 output.append(" </pkglist>") 329 return output330332 output = [] 333 334 output.append(" <update from=\"security@redhat.com\" " + 335 "status=\"final\" type=\"%s\" version=\"%s\">" 336 % (erratum.advisory_type, erratum.version)) 337 output.append(" <id>%s</id>" % erratum.readable_id) 338 output.append(" <title>%s</title>" % text_filter(erratum.title)) 339 output.append(" <issued date=\"%s\"/>" % erratum.issued) 340 output.append(" <updated date=\"%s\"/>" % erratum.updated) 341 output.append(" <description>%s</description>" 342 % text_filter("%s\n\n\%s" % (erratum.synopsis, erratum.description))) 343 344 output.extend(self._get_references(erratum)) 345 output.extend(self._get_packages(erratum)) 346 347 output.append(" </update>") 348 349 return output350352 output = XML_ENCODING + "\n" + "<updates>\n" 353 354 self.fileobj.write(output) 355 356 for erratum in self.channel.errata: 357 self.fileobj.write('\n'.join(self._get_erratum(erratum))) 358 359 self.fileobj.write("\n</updates>")
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Wed Mar 4 07:37:51 2020 | http://epydoc.sourceforge.net |