#!/usr/bin/env python # # Copyright 2016 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import argparse import os import shutil import sys import tempfile from util import build_utils _SRC_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..')) _RETROLAMBDA_JAR_PATH = os.path.normpath(os.path.join( _SRC_ROOT, 'third_party', 'retrolambda', 'retrolambda-2.5.1.jar')) def _OnStaleMd5(input_jar, output_jar, classpath, android_sdk_jar): with build_utils.TempDir() as temp_dir: build_utils.ExtractAll(input_jar, path=temp_dir) cmd = [ 'java', '-Dretrolambda.inputDir=' + temp_dir, '-Dretrolambda.classpath=' + ':'.join([temp_dir] + classpath + [android_sdk_jar]), '-javaagent:' + _RETROLAMBDA_JAR_PATH, '-jar', _RETROLAMBDA_JAR_PATH, ] build_utils.CheckOutput(cmd, print_stdout=False) build_utils.ZipDir(output_jar + '.tmp', temp_dir) shutil.move(output_jar + '.tmp', output_jar) def main(): args = build_utils.ExpandFileArgs(sys.argv[1:]) parser = argparse.ArgumentParser() build_utils.AddDepfileOption(parser) parser.add_argument('--input-jar', required=True, help='Jar input path to include .class files from.') parser.add_argument('--output-jar', required=True, help='Jar output path.') parser.add_argument('--classpath', required=True, help='Classpath.') parser.add_argument('--android-sdk-jar', required=True, help='Android sdk jar path.') options = parser.parse_args(args) options.classpath = build_utils.ParseGnList(options.classpath) input_paths = options.classpath + [options.input_jar] output_paths = [options.output_jar] build_utils.CallAndWriteDepfileIfStale( lambda: _OnStaleMd5(options.input_jar, options.output_jar, options.classpath, options.android_sdk_jar), options, input_paths=input_paths, input_strings=[], output_paths=output_paths) if __name__ == '__main__': sys.exit(main())