| Index: testing/android/generate_native_test.py
|
| diff --git a/testing/android/generate_native_test.py b/testing/android/generate_native_test.py
|
| index f65c841bc8e88fc217644538ed9531679cf824cf..6a6173d67f3908d2df4f0fa675ec35bc08181202 100755
|
| --- a/testing/android/generate_native_test.py
|
| +++ b/testing/android/generate_native_test.py
|
| @@ -22,9 +22,9 @@ import subprocess
|
| import sys
|
|
|
| # cmd_helper.py is under ../../build/android/
|
| -sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)), '..',
|
| - '..', 'build', 'android'))
|
| -import cmd_helper # pylint: disable=F0401
|
| +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..',
|
| + '..', 'build', 'android')))
|
| +import cmd_helper # pylint: disable=F0401
|
|
|
|
|
| class NativeTestApkGenerator(object):
|
| @@ -39,9 +39,9 @@ class NativeTestApkGenerator(object):
|
| # Files or directories we need to copy to create a complete apk test shell.
|
| _SOURCE_FILES = ['AndroidManifest.xml',
|
| 'native_test_apk.xml',
|
| - 'res', # res/values/strings.xml
|
| - 'java', # .../ChromeNativeTestActivity.java
|
| - ]
|
| + 'res', # res/values/strings.xml
|
| + 'java', # .../ChromeNativeTestActivity.java
|
| + ]
|
|
|
| # Files in the destion directory that have a "replaceme" string
|
| # which should be replaced by the basename of the shared library.
|
| @@ -54,13 +54,12 @@ class NativeTestApkGenerator(object):
|
| def __init__(self, native_library, jars, output_directory, target_abi):
|
| self._native_library = native_library
|
| self._jars = jars
|
| - self._output_directory = output_directory
|
| + self._output_directory = os.path.abspath(output_directory)
|
| self._target_abi = target_abi
|
| self._root_name = None
|
| if self._native_library:
|
| self._root_name = self._LibraryRoot()
|
| - logging.warn('root name: %s' % self._root_name)
|
| -
|
| + logging.warn('root name: %s', self._root_name)
|
|
|
| def _LibraryRoot(self):
|
| """Return a root name for a shared library.
|
| @@ -76,31 +75,22 @@ class NativeTestApkGenerator(object):
|
| else:
|
| return None
|
|
|
| - def _CopyTemplateFiles(self):
|
| + def _CopyTemplateFilesAndClearDir(self):
|
| """Copy files needed to build a new apk.
|
|
|
| - TODO(jrg): add more smarts so we don't change file timestamps if
|
| - the files don't change?
|
| + Uses rsync to avoid unnecessary io. This call also clears outstanding
|
| + files in the directory.
|
| """
|
| - srcdir = os.path.dirname(os.path.realpath( __file__))
|
| - if not os.path.exists(self._output_directory):
|
| - os.makedirs(self._output_directory)
|
| - for f in self._SOURCE_FILES:
|
| - src = os.path.join(srcdir, f)
|
| - dest = os.path.join(self._output_directory, f)
|
| - if os.path.isfile(src):
|
| - if os.path.exists(dest):
|
| - os.remove(dest)
|
| - logging.warn('%s --> %s' % (src, dest))
|
| - shutil.copyfile(src, dest)
|
| - else: # directory
|
| - if os.path.exists(dest):
|
| - # One more sanity check since we're deleting a directory...
|
| - if not '/out/' in dest:
|
| - raise Exception('Unbelievable output directory; bailing for safety')
|
| - shutil.rmtree(dest)
|
| - logging.warn('%s --> %s' % (src, dest))
|
| - shutil.copytree(src, dest)
|
| + srcdir = os.path.abspath(os.path.dirname(__file__))
|
| + destdir = self._output_directory
|
| + if not os.path.exists(destdir):
|
| + os.makedirs(destdir)
|
| + elif not '/out/' in destdir:
|
| + raise Exception('Unbelievable output directory; bailing for safety')
|
| + logging.warning('rsync %s --> %s', self._SOURCE_FILES, destdir)
|
| + logging.info(cmd_helper.GetCmdOutput(
|
| + ['rsync', '-aRv', '--delete', '--exclude', '.svn'] +
|
| + self._SOURCE_FILES + [destdir], cwd=srcdir))
|
|
|
| def _ReplaceStrings(self):
|
| """Replace 'replaceme' strings in generated files with a root libname.
|
| @@ -114,17 +104,17 @@ class NativeTestApkGenerator(object):
|
| dest = os.path.join(self._output_directory, f)
|
| contents = open(dest).read()
|
| contents = contents.replace('replaceme', self._root_name)
|
| - dest = dest.replace('replaceme', self._root_name) # update the filename!
|
| - open(dest, "w").write(contents)
|
| + dest = dest.replace('replaceme', self._root_name) # update the filename!
|
| + open(dest, 'w').write(contents)
|
|
|
| def _CopyLibraryAndJars(self):
|
| - """Copy the shlib and jars into the apk source tree (if relevant)"""
|
| + """Copy the shlib and jars into the apk source tree (if relevant)."""
|
| if self._native_library:
|
| destdir = os.path.join(self._output_directory, 'libs/' + self._target_abi)
|
| if not os.path.exists(destdir):
|
| os.makedirs(destdir)
|
| dest = os.path.join(destdir, os.path.basename(self._native_library))
|
| - logging.warn('strip %s --> %s' % (self._native_library, dest))
|
| + logging.warn('strip %s --> %s', self._native_library, dest)
|
| strip = os.environ['STRIP']
|
| cmd_helper.RunCmd(
|
| [strip, '--strip-unneeded', self._native_library, '-o', dest])
|
| @@ -134,7 +124,7 @@ class NativeTestApkGenerator(object):
|
| os.makedirs(destdir)
|
| for jar in self._jars:
|
| dest = os.path.join(destdir, os.path.basename(jar))
|
| - logging.warn('%s --> %s' % (jar, dest))
|
| + logging.warn('%s --> %s', jar, dest)
|
| shutil.copyfile(jar, dest)
|
|
|
| def CreateBundle(self, ant_compile):
|
| @@ -142,7 +132,7 @@ class NativeTestApkGenerator(object):
|
| if not ant_compile:
|
| self._SOURCE_FILES.append('Android.mk')
|
| self._REPLACEME_FILES.append('Android.mk')
|
| - self._CopyTemplateFiles()
|
| + self._CopyTemplateFilesAndClearDir()
|
| self._ReplaceStrings()
|
| self._CopyLibraryAndJars()
|
|
|
| @@ -162,7 +152,7 @@ class NativeTestApkGenerator(object):
|
| (stdout, _) = p.communicate()
|
| logging.warn(stdout)
|
| if p.returncode != 0:
|
| - logging.error('Ant return code %d' % p.returncode)
|
| + logging.error('Ant return code %d', p.returncode)
|
| sys.exit(p.returncode)
|
|
|
| def CompileAndroidMk(self):
|
| @@ -189,9 +179,9 @@ def main(argv):
|
| parser.add_option('--app_abi', default='armeabi',
|
| help='ABI for native shared library')
|
| parser.add_option('--ant-compile', action='store_true',
|
| - help='If specified, build the generated apk with ant. '
|
| - 'Otherwise assume compiling within the Android '
|
| - 'source tree using Android.mk.')
|
| + help=('If specified, build the generated apk with ant. '
|
| + 'Otherwise assume compiling within the Android '
|
| + 'source tree using Android.mk.'))
|
| parser.add_option('--ant-args',
|
| help='extra args for ant')
|
|
|
|
|