| Index: build/android/gyp/proguard.py
|
| diff --git a/build/android/gyp/proguard.py b/build/android/gyp/proguard.py
|
| index cb547fb97043a091b41370762830618c8dacc33b..5127100a890ce5545f6b3c89c02a43651c6767e3 100755
|
| --- a/build/android/gyp/proguard.py
|
| +++ b/build/android/gyp/proguard.py
|
| @@ -5,54 +5,32 @@
|
| # found in the LICENSE file.
|
|
|
| import optparse
|
| -import os
|
| import sys
|
|
|
| from util import build_utils
|
| +from util import proguard_util
|
|
|
| def DoProguard(options):
|
| - injars = options.input_path
|
| - outjars = options.output_path
|
| + proguard = proguard_util.ProguardCmdBuilder(options.proguard_path)
|
| + proguard.injars(build_utils.ParseGypList(options.input_paths))
|
| + proguard.configs(build_utils.ParseGypList(options.proguard_configs))
|
| + proguard.outjar(options.output_path)
|
| +
|
| + if options.mapping:
|
| + proguard.mapping(options.mapping)
|
| +
|
| + if options.is_test:
|
| + proguard.is_test(True)
|
| +
|
| classpath = []
|
| for arg in options.classpath:
|
| classpath += build_utils.ParseGypList(arg)
|
| classpath = list(set(classpath))
|
| - libraryjars = ':'.join(classpath)
|
| - # proguard does its own dependency checking, which can be avoided by deleting
|
| - # the output.
|
| - if os.path.exists(options.output_path):
|
| - os.remove(options.output_path)
|
| - proguard_cmd = ['java', '-jar',
|
| - options.proguard_path,
|
| - '-injars', injars,
|
| - '-outjars', outjars,
|
| - '-libraryjars', libraryjars,
|
| - '@' + options.proguard_config]
|
| - build_utils.CheckOutput(proguard_cmd, print_stdout=True,
|
| - stdout_filter=FilterProguardOutput)
|
| -
|
| -
|
| -def FilterProguardOutput(output):
|
| - '''ProGuard outputs boring stuff to stdout (proguard version, jar path, etc)
|
| - as well as interesting stuff (notes, warnings, etc). If stdout is entirely
|
| - boring, this method suppresses the output.
|
| - '''
|
| - ignore_patterns = [
|
| - 'ProGuard, version ',
|
| - 'Reading program jar [',
|
| - 'Reading library jar [',
|
| - 'Preparing output jar [',
|
| - ' Copying resources from program jar [',
|
| - ]
|
| - for line in output.splitlines():
|
| - for pattern in ignore_patterns:
|
| - if line.startswith(pattern):
|
| - break
|
| - else:
|
| - # line doesn't match any of the patterns; it's probably something worth
|
| - # printing out.
|
| - return output
|
| - return ''
|
| + proguard.libraryjars(classpath)
|
| +
|
| + proguard.CheckOutput()
|
| +
|
| + return proguard.GetInputs()
|
|
|
|
|
| def main(args):
|
| @@ -61,23 +39,27 @@ def main(args):
|
| build_utils.AddDepfileOption(parser)
|
| parser.add_option('--proguard-path',
|
| help='Path to the proguard executable.')
|
| - parser.add_option('--input-path',
|
| - help='Path to the .jar file proguard should run on.')
|
| + parser.add_option('--input-paths',
|
| + help='Paths to the .jar files proguard should run on.')
|
| parser.add_option('--output-path', help='Path to the generated .jar file.')
|
| - parser.add_option('--proguard-config',
|
| - help='Path to the proguard configuration file.')
|
| + parser.add_option('--proguard-configs',
|
| + help='Paths to proguard configuration files.')
|
| + parser.add_option('--mapping', help='Path to proguard mapping to apply.')
|
| + parser.add_option('--is-test', action='store_true',
|
| + help='If true, extra proguard options for instrumentation tests will be '
|
| + 'added.')
|
| parser.add_option('--classpath', action='append',
|
| - help="Classpath for proguard.")
|
| + help='Classpath for proguard.')
|
| parser.add_option('--stamp', help='Path to touch on success.')
|
|
|
| options, _ = parser.parse_args(args)
|
|
|
| - DoProguard(options)
|
| + inputs = DoProguard(options)
|
|
|
| if options.depfile:
|
| build_utils.WriteDepfile(
|
| options.depfile,
|
| - build_utils.GetPythonDependencies())
|
| + inputs + build_utils.GetPythonDependencies())
|
|
|
| if options.stamp:
|
| build_utils.Touch(options.stamp)
|
|
|