diff --git a/wlauto/common/android/device.py b/wlauto/common/android/device.py index 9e86b55d..979000d7 100644 --- a/wlauto/common/android/device.py +++ b/wlauto/common/android/device.py @@ -96,10 +96,6 @@ class AndroidDevice(BaseLinuxDevice): # pylint: disable=W0223 self._is_rooted = False return self._is_rooted - @property - def abi(self): - return self.getprop()['ro.product.cpu.abi'].split('-')[0] - @property def supported_eabi(self): props = self.getprop() diff --git a/wlauto/common/linux/device.py b/wlauto/common/linux/device.py index ff355190..35a3dc6f 100644 --- a/wlauto/common/linux/device.py +++ b/wlauto/common/linux/device.py @@ -27,7 +27,7 @@ from wlauto.core.resource import NO_ONE from wlauto.exceptions import ConfigError, DeviceError, TimeoutError, DeviceNotRespondingError from wlauto.common.resources import Executable from wlauto.utils.cpuinfo import Cpuinfo -from wlauto.utils.misc import convert_new_lines, escape_double_quotes, ranges_to_list +from wlauto.utils.misc import convert_new_lines, escape_double_quotes, ranges_to_list, ABI_MAP from wlauto.utils.ssh import SshShell from wlauto.utils.types import boolean, list_of_strings @@ -110,6 +110,18 @@ class BaseLinuxDevice(Device): # pylint: disable=abstract-method value_name='tunables'), ] + @property + def abi(self): + if not self._abi: + val = self.execute('uname -m').strip() + for abi, architectures in ABI_MAP.iteritems(): + if val in architectures: + self._abi = abi + break + else: + self._abi = val + return self._abi + @property def online_cpus(self): val = self.get_sysfile_value('/sys/devices/system/cpu/online') @@ -158,6 +170,7 @@ class BaseLinuxDevice(Device): # pylint: disable=abstract-method self._number_of_cores = None self._written_sysfiles = [] self._cpuinfo = None + self._abi = None def validate(self): if len(self.core_names) != len(self.core_clusters): @@ -879,10 +892,6 @@ class LinuxDevice(BaseLinuxDevice): self._is_rooted = False return self._is_rooted - @property - def abi(self): - return self.execute('uname -m') - def __init__(self, *args, **kwargs): super(LinuxDevice, self).__init__(*args, **kwargs) self.shell = None diff --git a/wlauto/utils/misc.py b/wlauto/utils/misc.py index 6b02992a..b6360917 100644 --- a/wlauto/utils/misc.py +++ b/wlauto/utils/misc.py @@ -43,6 +43,13 @@ import yaml from dateutil import tz +# ABI --> architectures list +ABI_MAP = { + 'armeabi': ['armeabi', 'armv7', 'armv7l', 'armv7el', 'armv7lh'], + 'arm64': ['arm64', 'armv8'], +} + + def preexec_function(): # Ignore the SIGINT signal by setting the handler to the standard # signal handler SIG_IGN.