summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Brown <ben.brown@codethink.co.uk>2018-02-02 15:32:03 +0000
committerBen Brown <ben.brown@codethink.co.uk>2018-02-15 10:32:16 +0000
commit726a45e4ba6a6f93aa9de332828f9247bf3cd5b4 (patch)
treecf8aa77a3a70d6c31280160f13fc5f60c65f40b2
parentfae89cfea25882ca5ad5910a475c6b39d3c60446 (diff)
downloadybd-726a45e4ba6a6f93aa9de332828f9247bf3cd5b4.tar.gz
Extract manifests from the root directory into the metadir prior to packaging
-rw-r--r--ybd/rpm.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/ybd/rpm.py b/ybd/rpm.py
index d9a17bb..912c748 100644
--- a/ybd/rpm.py
+++ b/ybd/rpm.py
@@ -229,7 +229,8 @@ def generate_spec(dn, stage_dir, metafile, output, name, system):
output_f.write('%%files -n %s%s\n' %
(package['name'], metafile))
for filename in package['files']:
- output_f.write(filename + "\n")
+ output_f.write(
+ filename.replace('%manifest /', '%manifest ') + "\n")
output_f.write('\n')
return True
@@ -263,6 +264,17 @@ def extract_metafiles(system, dn, instdir, metadir):
shutil.move(os.path.join(instdir, metafile), metadir)
+def extract_manifests(system, dn, instdir, metadir):
+ packages = dn['rpm-metadata'].get('packages', [])
+ manifests = {line.split()[1].lstrip(os.sep)
+ for package in packages
+ for line in package.get('files', [])
+ if line.startswith('%manifest')}
+ for manifest in manifests:
+ manifest = expand_macro(system, dn, manifest)
+ shutil.move(os.path.join(instdir, manifest), metadir)
+
+
def get_package_names_with_fields(system, dn, fields):
# Ignores subpackages without files sections as those aren't generated.
if 'rpm-metadata' not in dn:
@@ -462,6 +474,7 @@ def package_one_rpm(dn, userdata):
name, system):
defines = extract_defines(dn)
extract_metafiles(system, dn, fulldir, metadir)
+ extract_manifests(system, dn, fulldir, metadir)
# XXX Now we gonna run rpmbuild in the sandbox !!!
command = ('rpmbuild ' + common_rpm_args +