Add reset_lang argument to everything in executils.
Running anaconda from lmc needs to override the language reset, otherwise libuser crashes because it cannot support "C".
This commit is contained in:
parent
7fc78d7ba7
commit
11b8eb8b97
@ -122,7 +122,8 @@ def startProgram(argv, root='/', stdin=None, stdout=subprocess.PIPE, stderr=subp
|
|||||||
preexec_fn=preexec, cwd=root, env=env, **kwargs)
|
preexec_fn=preexec, cwd=root, env=env, **kwargs)
|
||||||
|
|
||||||
def _run_program(argv, root='/', stdin=None, stdout=None, env_prune=None, log_output=True,
|
def _run_program(argv, root='/', stdin=None, stdout=None, env_prune=None, log_output=True,
|
||||||
binary_output=False, filter_stderr=False, raise_err=False, callback=None):
|
binary_output=False, filter_stderr=False, raise_err=False, callback=None,
|
||||||
|
env_add=None, reset_handlers=True, reset_lang=True):
|
||||||
""" Run an external program, log the output and return it to the caller
|
""" Run an external program, log the output and return it to the caller
|
||||||
|
|
||||||
:param argv: The command to run and argument
|
:param argv: The command to run and argument
|
||||||
@ -145,7 +146,8 @@ def _run_program(argv, root='/', stdin=None, stdout=None, env_prune=None, log_ou
|
|||||||
stderr = subprocess.STDOUT
|
stderr = subprocess.STDOUT
|
||||||
|
|
||||||
proc = startProgram(argv, root=root, stdin=stdin, stdout=subprocess.PIPE, stderr=stderr,
|
proc = startProgram(argv, root=root, stdin=stdin, stdout=subprocess.PIPE, stderr=stderr,
|
||||||
env_prune=env_prune, universal_newlines=not binary_output)
|
env_prune=env_prune, universal_newlines=not binary_output,
|
||||||
|
env_add=env_add, reset_handlers=reset_handlers, reset_lang=reset_lang)
|
||||||
|
|
||||||
if callback:
|
if callback:
|
||||||
while callback(proc) and proc.poll() is None:
|
while callback(proc) and proc.poll() is None:
|
||||||
@ -190,7 +192,8 @@ def _run_program(argv, root='/', stdin=None, stdout=None, env_prune=None, log_ou
|
|||||||
return (proc.returncode, output_string)
|
return (proc.returncode, output_string)
|
||||||
|
|
||||||
def execWithRedirect(command, argv, stdin=None, stdout=None, root='/', env_prune=None,
|
def execWithRedirect(command, argv, stdin=None, stdout=None, root='/', env_prune=None,
|
||||||
log_output=True, binary_output=False, raise_err=False, callback=None):
|
log_output=True, binary_output=False, raise_err=False, callback=None,
|
||||||
|
env_add=None, reset_handlers=True, reset_lang=True):
|
||||||
""" Run an external program and redirect the output to a file.
|
""" Run an external program and redirect the output to a file.
|
||||||
|
|
||||||
:param command: The command to run
|
:param command: The command to run
|
||||||
@ -207,10 +210,11 @@ def execWithRedirect(command, argv, stdin=None, stdout=None, root='/', env_prune
|
|||||||
"""
|
"""
|
||||||
argv = [command] + list(argv)
|
argv = [command] + list(argv)
|
||||||
return _run_program(argv, stdin=stdin, stdout=stdout, root=root, env_prune=env_prune,
|
return _run_program(argv, stdin=stdin, stdout=stdout, root=root, env_prune=env_prune,
|
||||||
log_output=log_output, binary_output=binary_output, raise_err=raise_err, callback=callback)[0]
|
log_output=log_output, binary_output=binary_output, raise_err=raise_err, callback=callback,
|
||||||
|
env_add=env_add, reset_handlers=reset_handlers, reset_lang=reset_lang)[0]
|
||||||
|
|
||||||
def execWithCapture(command, argv, stdin=None, root='/', log_output=True, filter_stderr=False,
|
def execWithCapture(command, argv, stdin=None, root='/', log_output=True, filter_stderr=False,
|
||||||
raise_err=False, callback=None):
|
raise_err=False, callback=None, env_add=None, reset_handlers=True, reset_lang=True):
|
||||||
""" Run an external program and capture standard out and err.
|
""" Run an external program and capture standard out and err.
|
||||||
|
|
||||||
:param command: The command to run
|
:param command: The command to run
|
||||||
@ -224,7 +228,8 @@ def execWithCapture(command, argv, stdin=None, root='/', log_output=True, filter
|
|||||||
"""
|
"""
|
||||||
argv = [command] + list(argv)
|
argv = [command] + list(argv)
|
||||||
return _run_program(argv, stdin=stdin, root=root, log_output=log_output, filter_stderr=filter_stderr,
|
return _run_program(argv, stdin=stdin, root=root, log_output=log_output, filter_stderr=filter_stderr,
|
||||||
raise_err=raise_err, callback=callback)[1]
|
raise_err=raise_err, callback=callback, env_add=env_add,
|
||||||
|
reset_handlers=reset_handlers, reset_lang=reset_lang)[1]
|
||||||
|
|
||||||
def runcmd(cmd, **kwargs):
|
def runcmd(cmd, **kwargs):
|
||||||
""" run execWithRedirect with raise_err=True
|
""" run execWithRedirect with raise_err=True
|
||||||
|
@ -614,7 +614,8 @@ def novirt_install(opts, disk_img, disk_size, repo_url):
|
|||||||
os.environ["ANACONDA_PRODUCTVERSION"] = opts.releasever
|
os.environ["ANACONDA_PRODUCTVERSION"] = opts.releasever
|
||||||
log.info("Running anaconda.")
|
log.info("Running anaconda.")
|
||||||
try:
|
try:
|
||||||
execWithRedirect("anaconda", args, raise_err=True,
|
execWithRedirect("anaconda", args, raise_err=True, reset_lang=False,
|
||||||
|
env_add={"ANACONDA_PRODUCTNAME": opts.project, "ANACONDA_PRODUCTVERSION": opts.releasever},
|
||||||
callback=lambda p: not novirt_log_check(log_monitor.server.log_check, p))
|
callback=lambda p: not novirt_log_check(log_monitor.server.log_check, p))
|
||||||
|
|
||||||
# Make sure the new filesystem is correctly labeled
|
# Make sure the new filesystem is correctly labeled
|
||||||
|
Loading…
Reference in New Issue
Block a user