diff options
author | Ben Brown <ben.brown@codethink.co.uk> | 2018-02-02 15:32:03 +0000 |
---|---|---|
committer | Ben Brown <ben.brown@codethink.co.uk> | 2018-02-15 10:32:16 +0000 |
commit | 726a45e4ba6a6f93aa9de332828f9247bf3cd5b4 (patch) | |
tree | cf8aa77a3a70d6c31280160f13fc5f60c65f40b2 | |
parent | fae89cfea25882ca5ad5910a475c6b39d3c60446 (diff) | |
download | ybd-726a45e4ba6a6f93aa9de332828f9247bf3cd5b4.tar.gz |
Extract manifests from the root directory into the metadir prior to packaging
-rw-r--r-- | ybd/rpm.py | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -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 + |