diff --git a/src/packagedcode/pyrpm.py b/src/packagedcode/pyrpm.py index 09c5b91be4..fa63416ee7 100644 --- a/src/packagedcode/pyrpm.py +++ b/src/packagedcode/pyrpm.py @@ -586,7 +586,22 @@ def source_rpm(self): @property def package(self): - return '-'.join([self.name, self.version]) + """ + Return the full RPM package identifier: name-version-release if release exists. + Example: bash-4.4.20-4.el8_6 + """ + parts = [self.name, self.version] + if self.release: + parts.append(self.release) + return '-'.join(parts) + + + @property + def full_version(self): + """Return version + release, similar to package property""" + if self.release: + return f"{self.version}-{self.release}" + return self.version @property def files_digest_algo(self): @@ -594,12 +609,12 @@ def files_digest_algo(self): @property def filename(self): - name = '-'.join([self.package, self.release]) + name = self.package arch = self.arch if self.is_binary: - ext = 'rpm' + ext = 'rpm' else: - ext = 'src.rpm' + ext = 'src.rpm' return '.'.join([name, arch, ext]) def get_tags(self): diff --git a/tests/packagedcode/test_pyrpm.py b/tests/packagedcode/test_pyrpm.py index 119666cb91..7a560034cd 100644 --- a/tests/packagedcode/test_pyrpm.py +++ b/tests/packagedcode/test_pyrpm.py @@ -60,7 +60,8 @@ def test_rpm(self): assert rpm[pyrpm.RPMTAG_COPYRIGHT] == 'BSD' assert rpm[pyrpm.RPMTAG_DESCRIPTION] == description assert rpm.is_binary is True - assert rpm.package == 'Eterm-0.9.3' + assert rpm.package == 'Eterm-0.9.3-5mdv2007.0' + assert rpm.full_version == '0.9.3-5mdv2007.0' assert rpm.filename == 'Eterm-0.9.3-5mdv2007.0.i586.rpm' expected = {