Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions src/packagedcode/rpm_installed.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,28 @@ def build_package(rpm_tags, datasource_id, package_type, package_namespace=None,
except Exception as e:
raise Exception(value, converted) from e
converted.update(handled)

version = converted.get('version')
release = converted.get('release')
epoch = converted.get('epoch')

if version:
if release:
vr = f'{version}-{release}'
else:
vr = version

if epoch:
try:
epoch_int = int(epoch)
if epoch_int:
vr = f'{epoch}:{vr}'
except (ValueError, TypeError):
pass

converted['version'] = vr
converted.pop('release', None)
converted.pop('epoch', None)

current_filerefs = converted.get("current_filerefs", None)
if current_filerefs:
Expand Down Expand Up @@ -301,6 +323,8 @@ def dirname_handler(value, **kwargs):
# TODO: add these
# 'Epoch'
# 'Release' 11.3.2
'Epoch': name_value_str_handler('epoch'),
'Release': name_value_str_handler('release'),
'Version': name_value_str_handler('version'),
'Description': name_value_str_handler('description'),
'Sha1header': name_value_str_handler('sha1'),
Expand Down
20 changes: 20 additions & 0 deletions tests/packagedcode/test_rpm_installed.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,3 +142,23 @@ def test_scan_system_package_end_to_end_installed_rpms_fedora_bdb(self):
result_file = self.get_temp_file('results.json')
run_scan_click(['--system-package', test_dir, '--json-pp', result_file])
check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES)


def test_rpm_version_includes_release_field_issue_4684():

from packagedcode import rpm_installed

test_tags = [
('Name', 'string', 'test-package'),
('Version', 'string', '1.2.3'),
('Release', 'string', '4.el8'),
]

result = rpm_installed.build_package(
rpm_tags=test_tags,
datasource_id='test',
package_type='rpm'
)

assert result.version == '1.2.3-4.el8', f"Expected '1.2.3-4.el8', got '{result.version}'"

Loading