MCPcopy Create free account
hub / github.com/aboutcode-org/scancode-toolkit / parse

Method parse

src/packagedcode/rpm.py:292–385  ·  view source on GitHub ↗
(cls, location, package_only=False)

Source from the content-addressed store, hash-verified

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:

Callers

nothing calls this directly

Calls 7

build_descriptionFunction · 0.90
get_rpm_tagsFunction · 0.85
EVRClass · 0.85
to_stringMethod · 0.80
from_dataMethod · 0.80
logger_debugFunction · 0.70
appendMethod · 0.45

Tested by

no test coverage detected