Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(602)

Unified Diff: build/android/gyp/util/build_device.py

Issue 2069113002: [build/android] Switch hand-rolled 'ls' to StatDirectory (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« build/android/gyp/apk_install.py ('K') | « build/android/gyp/apk_install.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/gyp/util/build_device.py
diff --git a/build/android/gyp/util/build_device.py b/build/android/gyp/util/build_device.py
index 83aa0d542f5bb00d3fbc0cd056cec871c50183e7..6a703c64e6f07f391c5b505ddad63cc16b9a1af6 100644
--- a/build/android/gyp/util/build_device.py
+++ b/build/android/gyp/util/build_device.py
@@ -28,6 +28,8 @@ class BuildDevice(object):
self.id = configuration['id']
self.description = configuration['description']
self.install_metadata = configuration['install_metadata']
+ assert all(isinstance(entry, dict) for entry in self.install_metadata), (
+ 'Invalid BuildDevice configuration')
perezju 2016/06/15 14:54:45 This will break hard if there are old config files
self.device = device_utils.DeviceUtils(self.id)
def RunShellCommand(self, *args, **kwargs):
@@ -45,16 +47,23 @@ class BuildDevice(object):
def InstallSplitApk(self, *args, **kwargs):
return self.device.InstallSplitApk(*args, **kwargs)
- def GetInstallMetadata(self, apk_package):
- """Gets the metadata on the device for the apk_package apk."""
- # Matches lines like:
- # -rw-r--r-- system system 7376582 2013-04-19 16:34 \
- # org.chromium.chrome.apk
- # -rw-r--r-- system system 7376582 2013-04-19 16:34 \
- # org.chromium.chrome-1.apk
- apk_matcher = lambda s: re.match('.*%s(-[0-9]*)?.apk$' % apk_package, s)
- matches = filter(apk_matcher, self.install_metadata)
- return matches[0] if matches else None
+ def GetInstallMetadata(self, apk_package, refresh=False):
+ """Gets the metadata on the device for a given apk.
+
+ Args:
+ apk_package: A string with the package name for which to get metadata.
+ refresh: A boolean indicating whether to re-read package metadata from
+ the device, or use the values from the current configuration.
+ """
+ if refresh:
+ self.install_metadata = self.device.StatDirectory(
+ '/data/app/', as_root=True)
+ # Matches names like: org.chromium.chrome.apk, org.chromium.chrome-1.apk
+ apk_pattern = re.compile('%s(-[0-9]*)?(.apk)?$' % re.escape(apk_package))
perezju 2016/06/15 14:54:45 Wondering when/if this is actually being run. Note
jbudorick 2016/06/15 20:47:36 Good (?) news -- apk_install.py was only used in g
+ return next(
+ (entry for entry in self.install_metadata
+ if apk_pattern.match(entry['filename'])),
+ None)
def GetConfigurationForDevice(device_id):
@@ -63,25 +72,11 @@ def GetConfigurationForDevice(device_id):
has_root = False
is_online = device.IsOnline()
if is_online:
- cmd = 'ls -l /data/app; getprop ro.build.description'
- cmd_output = device.RunShellCommand(cmd)
- has_root = not 'Permission denied' in cmd_output[0]
- if not has_root:
- # Disable warning log messages from EnableRoot()
- logging.getLogger().disabled = True
- try:
- device.EnableRoot()
- has_root = True
- except device_errors.CommandFailedError:
- has_root = False
- finally:
- logging.getLogger().disabled = False
- cmd_output = device.RunShellCommand(cmd)
-
+ has_root = device.HasRoot()
configuration = {
'id': device_id,
- 'description': cmd_output[-1],
- 'install_metadata': cmd_output[:-1],
+ 'description': device.build_description,
+ 'install_metadata': device.StatDirectory('/data/app/', as_root=True),
}
return configuration, is_online, has_root
@@ -105,4 +100,3 @@ def GetBuildDeviceFromPath(path):
if len(configurations) > 0:
return GetBuildDevice(ReadConfigurations(path))
return None
-
« build/android/gyp/apk_install.py ('K') | « build/android/gyp/apk_install.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698