diff options
author | Jonathan Maw <jonathan.maw@codethink.co.uk> | 2017-03-13 15:43:50 +0000 |
---|---|---|
committer | Jonathan Maw <jonathan.maw@codethink.co.uk> | 2017-03-13 16:25:10 +0000 |
commit | 6e9fc17692f88b92cd5cf66a324cc9e99dc70583 (patch) | |
tree | e8cf0e26e8f1c2e2e3196ecaa6d78cbb89b6a014 | |
parent | d07154f02c372d14971391434367f9d2c6ab6673 (diff) | |
download | ybd-jonathan/fix-rpm-export-provides.tar.gz |
rpm: Fix Provides lines being absorbed into descriptionsjonathan/fix-rpm-export-provides
-rw-r--r-- | ybd/rpm.py | 35 |
1 files changed, 18 insertions, 17 deletions
@@ -84,6 +84,16 @@ def generate_spec(dn, stage_dir, metafile, output, name, time): metadata = yaml.safe_load(metafile_f) with open(output, "w") as output_f: + # Support two formats of 'rpm-metadata', the older + # format specifies 'rpm-metadata' as a list of packages, + # the new format specifies 'rpm-metadata' as a dictionary + # and the package list is found in it's 'packages' member. + rpm_metadata = dn['rpm-metadata'] + if isinstance(rpm_metadata, Mapping): + package_list = rpm_metadata.get('packages', []) + else: + package_list = rpm_metadata + description = 'No Description' if metadata.get('description') is not None: @@ -95,39 +105,30 @@ def generate_spec(dn, stage_dir, metafile, output, name, time): output_f.write('Version: %s\n' % time) output_f.write('Release: %s\n' % dn['sha']) output_f.write('License: %s\n' % 'Undetermined') + # Add all the main package Provides: + for package in package_list: + if package['name'] == name and 'provides' in package: + for provide in package['provides']: + output_f.write('Provides: %s\n' % provide) output_f.write('\n') output_f.write('%%description\n') output_f.write('%s\n' % description) output_f.write('\n') - # Support two formats of 'rpm-metadata', the older - # format specifies 'rpm-metadata' as a list of packages, - # the new format specifies 'rpm-metadata' as a dictionary - # and the package list is found in it's 'packages' member. - # - rpm_metadata = dn['rpm-metadata'] - if isinstance(rpm_metadata, Mapping): - package_list = rpm_metadata.get('packages', []) - else: - package_list = rpm_metadata - for package in package_list: if package['name'] != name: # Sub-Package header output_f.write('%%package -n %s\n' % package['name']) output_f.write('Summary: %s\n' % description) output_f.write('\n') - + if 'provides' in package: + for provide in package['provides']: + output_f.write('Provides: %s\n' % provide) output_f.write('%%description -n %s\n' % package['name']) output_f.write('%s\n' % description) output_f.write('\n') - if 'provides' in package: - for provide in package['provides']: - output_f.write('Provides: %s\n' % provide) - output_f.write('\n') - for cmd in ['pre', 'preun', 'post', 'postun']: if cmd in package: if 'interpreter' in package[cmd]: |