summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Maw <jonathan.maw@codethink.co.uk>2017-03-13 15:43:50 +0000
committerJonathan Maw <jonathan.maw@codethink.co.uk>2017-03-13 16:25:10 +0000
commit6e9fc17692f88b92cd5cf66a324cc9e99dc70583 (patch)
treee8cf0e26e8f1c2e2e3196ecaa6d78cbb89b6a014
parentd07154f02c372d14971391434367f9d2c6ab6673 (diff)
downloadybd-jonathan/fix-rpm-export-provides.tar.gz
rpm: Fix Provides lines being absorbed into descriptionsjonathan/fix-rpm-export-provides
-rw-r--r--ybd/rpm.py35
1 files changed, 18 insertions, 17 deletions
diff --git a/ybd/rpm.py b/ybd/rpm.py
index 32a9af4..a76b054 100644
--- a/ybd/rpm.py
+++ b/ybd/rpm.py
@@ -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]: