mirror of
https://github.com/ARM-software/devlib.git
synced 2025-01-31 02:00:45 +00:00
target: resolve default paths eariler during the connection
Default paths for working_directory and exectuables_directory used to be resolved at the end of the connect (because for Linux targets, the default changes depending on the connection). This is now offloaded to a separate internal method that is invoked earlier during connect() (after the connection is established but before other connection actions are resolved, as some of those actions rely on the directories being set).
This commit is contained in:
parent
d4c8b0f222
commit
961f9576e5
@ -176,6 +176,7 @@ class Target(object):
|
|||||||
self.platform.init_target_connection(self)
|
self.platform.init_target_connection(self)
|
||||||
tid = id(threading.current_thread())
|
tid = id(threading.current_thread())
|
||||||
self._connections[tid] = self.get_connection(timeout=timeout)
|
self._connections[tid] = self.get_connection(timeout=timeout)
|
||||||
|
self._resolve_paths()
|
||||||
self.busybox = self.get_installed('busybox')
|
self.busybox = self.get_installed('busybox')
|
||||||
self.platform.update_from_target(self)
|
self.platform.update_from_target(self)
|
||||||
self._update_modules('connected')
|
self._update_modules('connected')
|
||||||
@ -437,6 +438,9 @@ class Target(object):
|
|||||||
else:
|
else:
|
||||||
self.logger.debug('Module {} is already installed.'.format(mod.name))
|
self.logger.debug('Module {} is already installed.'.format(mod.name))
|
||||||
|
|
||||||
|
def _resolve_paths(self):
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
|
||||||
class LinuxTarget(Target):
|
class LinuxTarget(Target):
|
||||||
|
|
||||||
@ -473,13 +477,6 @@ class LinuxTarget(Target):
|
|||||||
|
|
||||||
def connect(self, timeout=None):
|
def connect(self, timeout=None):
|
||||||
super(LinuxTarget, self).connect(timeout=timeout)
|
super(LinuxTarget, self).connect(timeout=timeout)
|
||||||
if self.working_directory is None:
|
|
||||||
if self.connected_as_root:
|
|
||||||
self.working_directory = '/root/devlib-target'
|
|
||||||
else:
|
|
||||||
self.working_directory = '/home/{}/devlib-target'.format(self.user)
|
|
||||||
if self.executables_directory is None:
|
|
||||||
self.executables_directory = self.path.join(self.working_directory, 'bin')
|
|
||||||
|
|
||||||
def kick_off(self, command, as_root=False):
|
def kick_off(self, command, as_root=False):
|
||||||
command = 'sh -c "{}" 1>/dev/null 2>/dev/null &'.format(escape_double_quotes(command))
|
command = 'sh -c "{}" 1>/dev/null 2>/dev/null &'.format(escape_double_quotes(command))
|
||||||
@ -547,6 +544,15 @@ class LinuxTarget(Target):
|
|||||||
message = e.message.split('OUTPUT:', 1)[1].strip() # pylint: disable=no-member
|
message = e.message.split('OUTPUT:', 1)[1].strip() # pylint: disable=no-member
|
||||||
self.logger.debug('Could not take screenshot: {}'.format(message))
|
self.logger.debug('Could not take screenshot: {}'.format(message))
|
||||||
|
|
||||||
|
def _resolve_paths(self):
|
||||||
|
if self.working_directory is None:
|
||||||
|
if self.connected_as_root:
|
||||||
|
self.working_directory = '/root/devlib-target'
|
||||||
|
else:
|
||||||
|
self.working_directory = '/home/{}/devlib-target'.format(self.user)
|
||||||
|
if self.executables_directory is None:
|
||||||
|
self.executables_directory = self.path.join(self.working_directory, 'bin')
|
||||||
|
|
||||||
|
|
||||||
class AndroidTarget(Target):
|
class AndroidTarget(Target):
|
||||||
|
|
||||||
@ -585,10 +591,6 @@ class AndroidTarget(Target):
|
|||||||
return (0, 0)
|
return (0, 0)
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
super(AndroidTarget, self).__init__(*args, **kwargs)
|
|
||||||
self._file_transfer_cache = None
|
|
||||||
|
|
||||||
def reset(self, fastboot=False): # pylint: disable=arguments-differ
|
def reset(self, fastboot=False): # pylint: disable=arguments-differ
|
||||||
try:
|
try:
|
||||||
self.execute('reboot {}'.format(fastboot and 'fastboot' or ''),
|
self.execute('reboot {}'.format(fastboot and 'fastboot' or ''),
|
||||||
@ -608,11 +610,6 @@ class AndroidTarget(Target):
|
|||||||
# always disconnect first.
|
# always disconnect first.
|
||||||
adb_disconnect(device)
|
adb_disconnect(device)
|
||||||
super(AndroidTarget, self).connect(timeout=timeout)
|
super(AndroidTarget, self).connect(timeout=timeout)
|
||||||
if self.working_directory is None:
|
|
||||||
self.working_directory = '/data/local/tmp/devlib-target'
|
|
||||||
self._file_transfer_cache = self.path.join(self.working_directory, '.file-cache')
|
|
||||||
if self.executables_directory is None:
|
|
||||||
self.executables_directory = self.path.join(self.working_directory, 'bin')
|
|
||||||
|
|
||||||
if check_boot_completed:
|
if check_boot_completed:
|
||||||
boot_completed = boolean(self.getprop('sys.boot_completed'))
|
boot_completed = boolean(self.getprop('sys.boot_completed'))
|
||||||
@ -793,6 +790,13 @@ class AndroidTarget(Target):
|
|||||||
if not self.is_screen_on():
|
if not self.is_screen_on():
|
||||||
self.execute('input keyevent 26')
|
self.execute('input keyevent 26')
|
||||||
|
|
||||||
|
def _resolve_paths(self):
|
||||||
|
if self.working_directory is None:
|
||||||
|
self.working_directory = '/data/local/tmp/devlib-target'
|
||||||
|
self._file_transfer_cache = self.path.join(self.working_directory, '.file-cache')
|
||||||
|
if self.executables_directory is None:
|
||||||
|
self.executables_directory = self.path.join(self.working_directory, 'bin')
|
||||||
|
|
||||||
def _ensure_executables_directory_is_writable(self):
|
def _ensure_executables_directory_is_writable(self):
|
||||||
matched = []
|
matched = []
|
||||||
for entry in self.list_file_systems():
|
for entry in self.list_file_systems():
|
||||||
@ -954,12 +958,11 @@ class LocalLinuxTarget(LinuxTarget):
|
|||||||
|
|
||||||
conn_cls = LocalConnection
|
conn_cls = LocalConnection
|
||||||
|
|
||||||
def connect(self, timeout=None):
|
def _resolve_paths(self):
|
||||||
if self.working_directory is None:
|
if self.working_directory is None:
|
||||||
self.working_directory = '/tmp'
|
self.working_directory = '/tmp'
|
||||||
if self.executables_directory is None:
|
if self.executables_directory is None:
|
||||||
self.executables_directory = '/tmp'
|
self.executables_directory = '/tmp'
|
||||||
super(LocalLinuxTarget, self).connect(timeout)
|
|
||||||
|
|
||||||
|
|
||||||
def _get_model_name(section):
|
def _get_model_name(section):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user