mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
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:
|
else:
|
||||||
os.environ['PYTHONPATH'] = modlib_path
|
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)
|
(stdout, stderr) = p.communicate(json_params)
|
||||||
|
|
||||||
if not isinstance(stderr, (bytes, unicode)):
|
if not isinstance(stderr, (bytes, unicode)):
|
||||||
|
@ -215,7 +215,7 @@ def debug(command, zipped_mod, json_params):
|
||||||
else:
|
else:
|
||||||
os.environ['PYTHONPATH'] = basedir
|
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()
|
(stdout, stderr) = p.communicate()
|
||||||
|
|
||||||
if not isinstance(stderr, (bytes, unicode)):
|
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
|
file rather than trust that we reformatted what they already have
|
||||||
correctly.
|
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:
|
if interpreter_config not in task_vars:
|
||||||
return (None, interpreter)
|
return (None, interpreter)
|
||||||
|
|
||||||
interpreter = task_vars[interpreter_config]
|
interpreter = task_vars[interpreter_config].strip()
|
||||||
shebang = u'#!' + interpreter
|
shebang = u'#!' + interpreter
|
||||||
|
|
||||||
if args:
|
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)
|
shebang, interpreter = _get_shebang(u'/usr/bin/python', task_vars)
|
||||||
if shebang is None:
|
if shebang is None:
|
||||||
shebang = u'#!/usr/bin/python'
|
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(
|
output.write(to_bytes(ACTIVE_ZIPLOADER_TEMPLATE % dict(
|
||||||
zipdata=zipdata,
|
zipdata=zipdata,
|
||||||
ansible_module=module_name,
|
ansible_module=module_name,
|
||||||
|
|
Loading…
Reference in a new issue