summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordevcurmudgeon <paul.sherwood@codethink.co.uk>2017-03-27 09:09:23 +0000
committerdevcurmudgeon <paul.sherwood@codethink.co.uk>2017-03-27 09:09:23 +0000
commit2e7b4e72763a794ba426c9fce7ff3171d7bcda73 (patch)
tree338cb4207e5eb992e359290772fb7d4770e57303
parent1ec3222cca51f0d0350a3a80d279f83e1d45d112 (diff)
parentbfefae4bfb99811f0a0b8d23e20359cf6a383592 (diff)
downloadybd-2e7b4e72763a794ba426c9fce7ff3171d7bcda73.tar.gz
Merge branch 'jonathan/rpm-export-expand-name' into 'tristan/rpm-export'
Jonathan/rpm export expand name See merge request !329
-rw-r--r--ybd/rpm.py22
-rw-r--r--ybd/sandbox.py6
2 files changed, 22 insertions, 6 deletions
diff --git a/ybd/rpm.py b/ybd/rpm.py
index 1046433..f85f566 100644
--- a/ybd/rpm.py
+++ b/ybd/rpm.py
@@ -77,7 +77,22 @@ def foreach_def(dn, callback, user_data, traversed=None, whitelist=None):
traversed[dn.get('name')] = True
-def generate_spec(dn, stage_dir, metafile, output, name, time):
+def expand_macro(system, dn, text):
+
+ defines = ['--define "{} {}"'.format(ent['key'], ent['value'])
+ for ent in dn['rpm-metadata'].get('defines', [])]
+ defines.append('--define "{} {}"'.format('name', dn['name']))
+ command = 'rpm ' + common_rpm_args + ' '.join(defines) + '--eval=%s' % text
+ env_vars = sandbox.env_vars_for_build(system)
+ _, output, _ = sandbox.run_sandboxed(system, command, env_vars)
+ return output
+
+
+def is_main_package(system, dn, package):
+ return expand_macro(system, dn, package) == dn['name']
+
+
+def generate_spec(dn, stage_dir, metafile, output, name, time, system):
if 'rpm-metadata' not in dn:
return False
with open(metafile, "r") as metafile_f:
@@ -118,7 +133,7 @@ def generate_spec(dn, stage_dir, metafile, output, name, time):
output_f.write('\n')
for package in package_list:
- if package['name'] != name:
+ if is_main_package(system, dn, package['name']):
# Sub-Package header
output_f.write('%%package -n %s\n' % package['name'])
output_f.write('Summary: %s\n' % description)
@@ -214,7 +229,8 @@ def package_one_rpm(dn, userdata):
specfile = os.path.join(metadir, '%s.spec' % name)
success = True
- if generate_spec(dn, fulldir, metafile, specfile, name, time):
+ if generate_spec(dn, fulldir, metafile, specfile,
+ name, time, system):
defines = extract_defines(dn)
# XXX Now we gonna run rpmbuild in the sandbox !!!
diff --git a/ybd/sandbox.py b/ybd/sandbox.py
index 6301159..170de25 100644
--- a/ybd/sandbox.py
+++ b/ybd/sandbox.py
@@ -181,13 +181,13 @@ def run_sandboxed(dn, command, env=None, allow_parallel=False,
with open(dn['log'], "a") as logfile:
exit_code = 99
try:
- exit_code = executor.run_sandbox_with_redirection(
+ exit_code, out, err = executor.run_sandbox(
argv, stdout=logfile, stderr=sandboxlib.STDOUT,
env=env, **config)
except:
import traceback
traceback.print_exc()
- app.log('SANDBOX', 'ERROR: in run_sandbox_with_redirection',
+ app.log('SANDBOX', 'ERROR: in run_sandbox',
exit_code)
if exit_code != 0:
@@ -203,7 +203,7 @@ def run_sandboxed(dn, command, env=None, allow_parallel=False,
env['MAKEFLAGS'] = cur_makeflags
# Return success status (meaningful if not exit_on_error)
- return True
+ return True, out, err
def run_logged(dn, cmd_list):