diff options
author | devcurmudgeon <paul.sherwood@codethink.co.uk> | 2017-03-27 09:09:23 +0000 |
---|---|---|
committer | devcurmudgeon <paul.sherwood@codethink.co.uk> | 2017-03-27 09:09:23 +0000 |
commit | 2e7b4e72763a794ba426c9fce7ff3171d7bcda73 (patch) | |
tree | 338cb4207e5eb992e359290772fb7d4770e57303 | |
parent | 1ec3222cca51f0d0350a3a80d279f83e1d45d112 (diff) | |
parent | bfefae4bfb99811f0a0b8d23e20359cf6a383592 (diff) | |
download | ybd-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.py | 22 | ||||
-rw-r--r-- | ybd/sandbox.py | 6 |
2 files changed, 22 insertions, 6 deletions
@@ -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): |