Merge pull request #15638 from abadger/fix-env-in-ansible_python_interpreter
Handle "/usr/bin/env python" style ansible_*interpreter settings.
This commit is contained in:
commit
48d01f63ca
1 changed files with 15 additions and 4 deletions
|
@ -118,7 +118,7 @@ def invoke_module(module, modlib_path, json_params):
|
|||
else:
|
||||
os.environ['PYTHONPATH'] = modlib_path
|
||||
|
||||
p = subprocess.Popen(['%(interpreter)s', module], env=os.environ, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||
p = subprocess.Popen([%(interpreter)s, module], env=os.environ, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||
(stdout, stderr) = p.communicate(json_params)
|
||||
|
||||
if not isinstance(stderr, (bytes, unicode)):
|
||||
|
@ -215,7 +215,7 @@ def debug(command, zipped_mod, json_params):
|
|||
else:
|
||||
os.environ['PYTHONPATH'] = basedir
|
||||
|
||||
p = subprocess.Popen(['%(interpreter)s', script_path, args_path], env=os.environ, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||
p = subprocess.Popen([%(interpreter)s, script_path, args_path], env=os.environ, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||
(stdout, stderr) = p.communicate()
|
||||
|
||||
if not isinstance(stderr, (bytes, unicode)):
|
||||
|
@ -372,12 +372,12 @@ def _get_shebang(interpreter, task_vars, args=tuple()):
|
|||
file rather than trust that we reformatted what they already have
|
||||
correctly.
|
||||
"""
|
||||
interpreter_config = u'ansible_%s_interpreter' % os.path.basename(interpreter)
|
||||
interpreter_config = u'ansible_%s_interpreter' % os.path.basename(interpreter).strip()
|
||||
|
||||
if interpreter_config not in task_vars:
|
||||
return (None, interpreter)
|
||||
|
||||
interpreter = task_vars[interpreter_config]
|
||||
interpreter = task_vars[interpreter_config].strip()
|
||||
shebang = u'#!' + interpreter
|
||||
|
||||
if args:
|
||||
|
@ -601,6 +601,17 @@ def _find_snippet_imports(module_name, module_data, module_path, module_args, ta
|
|||
shebang, interpreter = _get_shebang(u'/usr/bin/python', task_vars)
|
||||
if shebang is None:
|
||||
shebang = u'#!/usr/bin/python'
|
||||
|
||||
executable = interpreter.split(u' ', 1)
|
||||
if len(executable) == 2 and executable[0].endswith(u'env'):
|
||||
# Handle /usr/bin/env python style interpreter settings
|
||||
interpreter = u"'{0}', '{1}'".format(*executable)
|
||||
else:
|
||||
# Still have to enclose the parts of the interpreter in quotes
|
||||
# because we're substituting it into the template as a python
|
||||
# string
|
||||
interpreter = u"'{0}'".format(interpreter)
|
||||
|
||||
output.write(to_bytes(ACTIVE_ZIPLOADER_TEMPLATE % dict(
|
||||
zipdata=zipdata,
|
||||
ansible_module=module_name,
|
||||
|
|
Loading…
Reference in a new issue