From ea89245352b0246d58b3c519feb1f48a8b84acf4 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Sep 18 2017 20:26:55 +0000 Subject: allow profiles to request a specific python version --- diff --git a/cli/koji b/cli/koji index 4757b51..c88a0fb 100755 --- a/cli/koji +++ b/cli/koji @@ -230,6 +230,29 @@ def handle_help(options, session, args): list_commands(chosen) +def fix_pyver(options, logger): + '''Attempt to run under the correct python version, if requested''' + pyver = getattr(options, 'pyver', None) + if not pyver: + return + if pyver not in [2,3]: + logger.warning('Invalid python version requested: %s', pyver) + if sys.version_info[0] == pyver: + return + py_exec = '/usr/bin/python%i' % pyver + if not os.path.exists(py_exec): + logger.error('No such file: %s', py_exec) + return + args = list(sys.argv) + args.insert(0, py_exec) + logger.debug('Executing via %s', py_exec) + logger.debug('args = %r', args) + try: + os.execvp(py_exec, args) + except Exception: + logger.exception('Unable to execute with requested python version') + + def list_commands(categories_chosen=None): if categories_chosen is None or "all" in categories_chosen: categories_chosen = list(categories.keys()) @@ -278,6 +301,8 @@ if __name__ == "__main__": else: logger.setLevel(logging.WARN) + fix_pyver(options, logger) + session_opts = koji.grab_session_options(options) session = koji.ClientSession(options.server, session_opts) rv = 0 diff --git a/koji/__init__.py b/koji/__init__.py index e071a13..73a3f9e 100644 --- a/koji/__init__.py +++ b/koji/__init__.py @@ -1650,6 +1650,7 @@ def read_config(profile_name, user_config=None): 'authtype': None, 'debug': False, 'debug_xmlrpc': False, + 'pyver' : None, } result = config_defaults.copy() @@ -1706,7 +1707,7 @@ def read_config(profile_name, user_config=None): result[name] = config.getboolean(profile_name, name) elif name in ('max_retries', 'retry_interval', 'offline_retry_interval', 'poll_interval', 'timeout', - 'upload_blocksize'): + 'upload_blocksize', 'pyver'): try: result[name] = int(value) except ValueError: