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

Unified Diff: build/android/gyp/create_device_library_links.py

Issue 13537006: Add input md5 check to create_device_library_links.py (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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
« no previous file with comments | « no previous file | build/java_apk.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/gyp/create_device_library_links.py
diff --git a/build/android/gyp/create_device_library_links.py b/build/android/gyp/create_device_library_links.py
index b6b6742426448c512b289fa18b15aa80819b1b93..e71f72729cb90bf2eee3498bb27c2b79c170756a 100755
--- a/build/android/gyp/create_device_library_links.py
+++ b/build/android/gyp/create_device_library_links.py
@@ -17,6 +17,7 @@ import os
import sys
from util import build_utils
+from util import md5_check
BUILD_ANDROID_DIR = os.path.join(os.path.dirname(__file__), '..')
sys.path.append(BUILD_ANDROID_DIR)
@@ -25,23 +26,11 @@ from pylib import android_commands
from pylib.utils import apk_helper
-def CreateLinks(options):
- libraries = build_utils.ReadJson(options.libraries_json)
- apk_package = apk_helper.GetPackageName(options.apk)
-
- # There is a large (~100ms) overhead for each call to adb.RunShellCommand. To
- # avoid this overhead, craft a single command that creates all the links.
- link = '/data/data/' + apk_package + '/lib/$f'
- target = options.target_dir + '/$f'
- names = ' '.join(libraries)
+def RunLinkCommand(adb, target, link):
cmd = (
- 'for f in ' + names + '; do \n' +
- 'rm ' + link + ' > /dev/null 2>&1 \n' +
- 'ln -s ' + target + ' ' + link + '\n' +
- 'done'
+ 'rm ' + link + ' > /dev/null 2>&1 \n'
+ 'ln -s ' + target + ' ' + link + '\n'
)
-
- adb = android_commands.AndroidCommands()
result = adb.RunShellCommand(cmd)
if result:
@@ -50,6 +39,24 @@ def CreateLinks(options):
'\n'.join(result))
+def CreateLinks(options):
+ libraries = build_utils.ReadJson(options.libraries_json)
+ apk_package = apk_helper.GetPackageName(options.apk)
+
+ adb = android_commands.AndroidCommands()
+ serial_number = adb.Adb().GetSerialNumber()
+ for lib in libraries:
+ host_path = os.path.join(options.libraries_dir, lib)
+
+ md5_stamp = '%s.%s.link.md5' % (host_path, serial_number)
+ md5_checker = md5_check.Md5Checker(stamp=md5_stamp, inputs=[host_path])
+ if md5_checker.IsStale():
+ link = '/data/data/' + apk_package + '/lib/' + lib
+ target = options.target_dir + '/' + lib
+ RunLinkCommand(adb, target, link)
+ md5_checker.Write()
+
+
def main(argv):
parser = optparse.OptionParser()
parser.add_option('--apk', help='Path to the apk.')
@@ -57,10 +64,13 @@ def main(argv):
help='Path to the json list of native libraries.')
parser.add_option('--target-dir',
help='Device directory that contains the target libraries for symlinks.')
+ parser.add_option('--libraries-dir',
+ help='Directory that contains stripped libraries '
+ '(used to determine if a library has changed since last push).')
parser.add_option('--stamp', help='Path to touch on success.')
options, _ = parser.parse_args()
- required_options = ['apk', 'libraries_json', 'target_dir']
+ required_options = ['apk', 'libraries_json', 'target_dir', 'libraries_dir']
build_utils.CheckOptions(options, parser, required=required_options)
CreateLinks(options)
« no previous file with comments | « no previous file | build/java_apk.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698