summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Brown <ben.brown@codethink.co.uk>2017-07-19 13:56:18 +0100
committerBen Brown <ben.brown@codethink.co.uk>2017-07-19 17:20:24 +0100
commitf81c24bda1228f86cfa3c96ab18b6ea52138bd05 (patch)
tree1d5a75edf4ea988171a1bd6b500e5f20f12a49c0
parente48b216e362c43a32f5c688757550364f4ca338d (diff)
downloadybd-f81c24bda1228f86cfa3c96ab18b6ea52138bd05.tar.gz
Extract metafiles into the metadir
When generating rpms by specifying a chunk or stratum as the target to build, metafiles were not being found. Leading '/' characters caused rpmbuild to look in the root of the sandbox, rather than being limited to %buildroot. Strip leading '/'s and move the metafiles into the metadir for rpmbuild to pick up.
-rw-r--r--ybd/rpm.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/ybd/rpm.py b/ybd/rpm.py
index ebc085b..1e262b5 100644
--- a/ybd/rpm.py
+++ b/ybd/rpm.py
@@ -214,7 +214,7 @@ def generate_spec(dn, stage_dir, metafile, output, name, system):
if type(package.get('files')) is not list:
continue
- metafile = package.get('metafile', '')
+ metafile = package.get('metafile', '').lstrip(os.sep)
if metafile:
metafile = " -f " + metafile
@@ -250,6 +250,18 @@ def extract_defines(dn):
return ''.join(strings)
+def extract_metafiles(metadata, instdir, metadir):
+ if isinstance(metadata, Mapping):
+ packages = metadata.get('packages', [])
+ else:
+ packages = metadata
+
+ for package in packages:
+ metafile = package.get('metafile', '').lstrip(os.sep)
+ if metafile:
+ shutil.move(os.path.join(instdir, metafile), 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:
@@ -445,10 +457,12 @@ def package_one_rpm(dn, userdata):
if generate_spec(dn, fulldir, metafile, specfile,
name, system):
defines = extract_defines(dn)
+ extract_metafiles(dn['rpm-metadata'], fulldir, metadir)
# XXX Now we gonna run rpmbuild in the sandbox !!!
command = ('rpmbuild ' + common_rpm_args +
' --buildroot=/%s.inst' % name +
+ ' --define "_builddir /%s.meta"' % name +
' --define "_rpmdir /RPMS"' + defines +
' --target %s' % app.config['cpu'] +
' -bb /%s.meta/%s.spec' % (name, name))