diff options
author | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2017-02-28 14:01:49 +0900 |
---|---|---|
committer | Javier Jardón <jjardon@gnome.org> | 2017-05-11 08:24:26 +0000 |
commit | ae66c4763ff9eb6acf285794ecd728693e762035 (patch) | |
tree | bae514608c57cbd6364512de940aada3e2362cf2 | |
parent | eee0d563b6542a8923b9dc83f314272c079b5525 (diff) | |
download | ybd-ae66c4763ff9eb6acf285794ecd728693e762035.tar.gz |
rpm.py: Support a whitelist of chunks for which to generate rpms
-rw-r--r-- | ybd/rpm.py | 20 |
1 files changed, 13 insertions, 7 deletions
@@ -33,7 +33,9 @@ common_rpm_args = ( # in the target @dn in order of dependency, the passed # @dn definition will be the last one called. # -def foreach_def(dn, callback, user_data, traversed={}): +def foreach_def(dn, callback, user_data, traversed=None, whitelist=None): + if traversed is None: + traversed = {} if type(dn) is not dict: dn = app.defs.get(dn) @@ -54,8 +56,8 @@ def foreach_def(dn, callback, user_data, traversed={}): for system in systems: for s in system.get('subsystems', []): subsystem = app.defs.get(s['path']) - foreach_def(subsystem, callback, user_data, traversed) - foreach_def(system['path'], callback, user_data, traversed) + foreach_def(subsystem, callback, user_data, traversed, whitelist) + foreach_def(system['path'], callback, user_data, traversed, whitelist) contents = dn.get('contents', []) for it in contents: @@ -67,9 +69,11 @@ def foreach_def(dn, callback, user_data, traversed={}): if item.get('build-mode', 'staging') != 'bootstrap': if not traversed.get(item.get('name')): - foreach_def(item, callback, user_data, traversed) + foreach_def(item, callback, user_data, traversed, whitelist) + + if whitelist is None or dn.get('name') in whitelist: + callback(dn, user_data) - callback(dn, user_data) traversed[dn.get('name')] = True @@ -210,6 +214,7 @@ def package_one_rpm(dn, userdata): # package_rpms # @system: The system to package rpms for # @time: The number of whole seconds since the epoch +# @whitelist: A whitelist of chunk names to package rpms for # # This function will first stage the given @system, which # must have an rpm installation, and then it will use the @@ -225,7 +230,7 @@ def package_one_rpm(dn, userdata): # as the @time argument because package_rpms might be called for # multiple systems, if a cluster was specified on the command-line. # -def package_rpms(system, time): +def package_rpms(system, time, whitelist=None): if type(system) is not dict: system = app.defs.get(system) @@ -249,7 +254,8 @@ def package_rpms(system, time): sandbox.run_sandboxed(system, command, env_vars) # Package each rpm in order of build dependency - foreach_def(system, package_one_rpm, {'system': system, 'time': time}) + foreach_def(system, package_one_rpm, {'system': system, 'time': time}, + whitelist=whitelist) # Move the resulting RPMS directory into the deployment area rpm_destdir = os.path.join(app.config['deployment'], 'RPMs', |