1
0
mirror of https://github.com/ARM-software/devlib.git synced 2025-01-30 17:50:46 +00:00

devlib: Remove sudo prompt

Since the prompt is added to stdout, remove the one-space-prompt that
currently corrupts stdout when a command is ran with sudo.

That non-empty prompt was added as Windows Subsystem for Linux version 1
(WSL1) has a broken sudo implementation that chokes on an empty prompt.
Considering this is not a platform that is normally suported by devlib,
we re-introduce that empty prompt.
This commit is contained in:
Douglas Raillard 2024-09-24 10:50:57 +01:00 committed by Marc Bonnici
parent 6a6d9f30dd
commit dabee29350
2 changed files with 8 additions and 5 deletions

View File

@ -112,7 +112,9 @@ class LocalConnection(ConnectionBase):
if self.unrooted:
raise TargetStableError('unrooted')
password = self._get_password()
command = "echo {} | sudo -k -p ' ' -S -- sh -c {}".format(quote(password), quote(command))
# Empty prompt with -p '' to avoid adding a leading space to the
# output.
command = "echo {} | sudo -k -p '' -S -- sh -c {}".format(quote(password), quote(command))
ignore = None if check_exit_code else 'all'
try:
stdout, stderr = check_output(command, shell=True, timeout=timeout, ignore=ignore)
@ -136,9 +138,9 @@ class LocalConnection(ConnectionBase):
if self.unrooted:
raise TargetStableError('unrooted')
password = self._get_password()
# The sudo prompt will add a space on stderr, but we cannot filter
# it out here
command = "echo {} | sudo -k -p ' ' -S -- sh -c {}".format(quote(password), quote(command))
# Empty prompt with -p '' to avoid adding a leading space to the
# output.
command = "echo {} | sudo -k -p '' -S -- sh -c {}".format(quote(password), quote(command))
# Make sure to get a new PGID so PopenBackgroundCommand() can kill
# all sub processes that could be started without troubles.

View File

@ -61,7 +61,8 @@ from devlib.utils.types import boolean
from devlib.connection import ConnectionBase, ParamikoBackgroundCommand, SSHTransferHandle
DEFAULT_SSH_SUDO_COMMAND = "sudo -k -p ' ' -S -- sh -c {}"
# Empty prompt with -p '' to avoid adding a leading space to the output.
DEFAULT_SSH_SUDO_COMMAND = "sudo -k -p '' -S -- sh -c {}"
class _SSHEnv: