(cls, location, package_only=False)
| 290 | |
| 291 | @classmethod |
| 292 | def parse(cls, location, package_only=False): |
| 293 | rpm_tags = get_rpm_tags(location, include_desc=True) |
| 294 | |
| 295 | if TRACE: logger_debug('recognize: rpm_tags', rpm_tags) |
| 296 | if not rpm_tags: |
| 297 | return |
| 298 | |
| 299 | name = rpm_tags.name |
| 300 | |
| 301 | try: |
| 302 | epoch = rpm_tags.epoch and int(rpm_tags.epoch) or None |
| 303 | except ValueError: |
| 304 | epoch = None |
| 305 | |
| 306 | evr = EVR( |
| 307 | version=rpm_tags.version or None, |
| 308 | release=rpm_tags.release or None, |
| 309 | epoch=epoch).to_string() |
| 310 | |
| 311 | qualifiers = {} |
| 312 | os = rpm_tags.os |
| 313 | if os and os.lower() != 'linux': |
| 314 | qualifiers['os'] = os |
| 315 | |
| 316 | arch = rpm_tags.arch |
| 317 | if arch: |
| 318 | qualifiers['arch'] = arch |
| 319 | |
| 320 | source_packages = [] |
| 321 | if rpm_tags.source_rpm: |
| 322 | sepoch, sname, sversion, srel, sarch = nevra.from_name(rpm_tags.source_rpm) |
| 323 | src_evr = EVR(sversion, srel, sepoch).to_string() |
| 324 | src_qualifiers = {} |
| 325 | if sarch: |
| 326 | src_qualifiers['arch'] = sarch |
| 327 | |
| 328 | src_purl = models.PackageURL( |
| 329 | type=cls.default_package_type, |
| 330 | # TODO: namespace=cls.default_package_namespace, |
| 331 | name=sname, |
| 332 | version=src_evr, |
| 333 | qualifiers=src_qualifiers |
| 334 | ).to_string() |
| 335 | |
| 336 | if TRACE: logger_debug('recognize: source_rpm', src_purl) |
| 337 | source_packages = [src_purl] |
| 338 | |
| 339 | parties = [] |
| 340 | |
| 341 | # TODO: also use me to craft a namespace!!! |
| 342 | # TODO: assign a namespace to Package URL based on distro names. |
| 343 | # CentOS |
| 344 | # Fedora Project |
| 345 | # OpenMandriva Lx |
| 346 | # openSUSE Tumbleweed |
| 347 | # Red Hat |
| 348 | |
| 349 | if rpm_tags.distribution: |
nothing calls this directly
no test coverage detected