mirror of
https://github.com/ARM-software/devlib.git
synced 2025-01-31 02:00:45 +00:00
Merge pull request #46 from JaviMerino/needs_su
devlib: don't use sudo/su if you are root
This commit is contained in:
commit
17692891ef
@ -79,6 +79,11 @@ class Target(object):
|
||||
except (TargetError, TimeoutError):
|
||||
return False
|
||||
|
||||
@property
|
||||
@memoized
|
||||
def needs_su(self):
|
||||
return not self.connected_as_root and self.is_rooted
|
||||
|
||||
@property
|
||||
@memoized
|
||||
def kernel_version(self):
|
||||
@ -302,7 +307,7 @@ class Target(object):
|
||||
# sysfs interaction
|
||||
|
||||
def read_value(self, path, kind=None):
|
||||
output = self.execute('cat \'{}\''.format(path), as_root=self.is_rooted).strip() # pylint: disable=E1103
|
||||
output = self.execute('cat \'{}\''.format(path), as_root=self.needs_su).strip() # pylint: disable=E1103
|
||||
if kind:
|
||||
return kind(output)
|
||||
else:
|
||||
@ -325,7 +330,7 @@ class Target(object):
|
||||
|
||||
def reset(self):
|
||||
try:
|
||||
self.execute('reboot', as_root=self.is_rooted, timeout=2)
|
||||
self.execute('reboot', as_root=self.needs_su, timeout=2)
|
||||
except (TargetError, TimeoutError, subprocess.CalledProcessError):
|
||||
# on some targets "reboot" doesn't return gracefully
|
||||
pass
|
||||
@ -723,7 +728,7 @@ class AndroidTarget(Target):
|
||||
def reset(self, fastboot=False): # pylint: disable=arguments-differ
|
||||
try:
|
||||
self.execute('reboot {}'.format(fastboot and 'fastboot' or ''),
|
||||
as_root=self.is_rooted, timeout=2)
|
||||
as_root=self.needs_su, timeout=2)
|
||||
except (TargetError, TimeoutError, subprocess.CalledProcessError):
|
||||
# on some targets "reboot" doesn't return gracefully
|
||||
pass
|
||||
@ -759,7 +764,7 @@ class AndroidTarget(Target):
|
||||
a subprocess object).
|
||||
"""
|
||||
if as_root is None:
|
||||
as_root = self.is_rooted
|
||||
as_root = self.needs_su
|
||||
try:
|
||||
command = 'cd {} && {} nohup {}'.format(self.working_directory, self.busybox, command)
|
||||
output = self.execute(command, timeout=1, as_root=as_root)
|
||||
@ -888,9 +893,9 @@ class AndroidTarget(Target):
|
||||
on_device_executable = self.path.join(self.executables_directory, executable_name)
|
||||
self.push(filepath, on_device_file)
|
||||
if on_device_file != on_device_executable:
|
||||
self.execute('cp {} {}'.format(on_device_file, on_device_executable), as_root=self.is_rooted)
|
||||
self.remove(on_device_file, as_root=self.is_rooted)
|
||||
self.execute("chmod 0777 '{}'".format(on_device_executable), as_root=self.is_rooted)
|
||||
self.execute('cp {} {}'.format(on_device_file, on_device_executable), as_root=self.needs_su)
|
||||
self.remove(on_device_file, as_root=self.needs_su)
|
||||
self.execute("chmod 0777 '{}'".format(on_device_executable), as_root=self.needs_su)
|
||||
self._installed_binaries[executable_name] = on_device_executable
|
||||
return on_device_executable
|
||||
|
||||
@ -900,7 +905,7 @@ class AndroidTarget(Target):
|
||||
def uninstall_executable(self, executable_name):
|
||||
on_device_executable = self.path.join(self.executables_directory, executable_name)
|
||||
self._ensure_executables_directory_is_writable()
|
||||
self.remove(on_device_executable, as_root=self.is_rooted)
|
||||
self.remove(on_device_executable, as_root=self.needs_su)
|
||||
|
||||
def dump_logcat(self, filepath, filter=None, append=False, timeout=30): # pylint: disable=redefined-builtin
|
||||
op = '>>' if append else '>'
|
||||
|
Loading…
x
Reference in New Issue
Block a user