| OLD | NEW |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import os | 5 import os |
| 6 import re | 6 import re |
| 7 from util import build_utils | 7 from util import build_utils |
| 8 | 8 |
| 9 | 9 |
| 10 class _ProguardOutputFilter(object): | 10 class _ProguardOutputFilter(object): |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 assert os.path.exists(proguard_jar) | 37 assert os.path.exists(proguard_jar) |
| 38 self._proguard_jar_path = proguard_jar | 38 self._proguard_jar_path = proguard_jar |
| 39 self._tested_apk_info_path = None | 39 self._tested_apk_info_path = None |
| 40 self._tested_apk_info = None | 40 self._tested_apk_info = None |
| 41 self._mapping = None | 41 self._mapping = None |
| 42 self._libraries = None | 42 self._libraries = None |
| 43 self._injars = None | 43 self._injars = None |
| 44 self._configs = None | 44 self._configs = None |
| 45 self._outjar = None | 45 self._outjar = None |
| 46 self._cmd = None | 46 self._cmd = None |
| 47 self._verbose = False |
| 47 | 48 |
| 48 def outjar(self, path): | 49 def outjar(self, path): |
| 49 assert self._cmd is None | 50 assert self._cmd is None |
| 50 assert self._outjar is None | 51 assert self._outjar is None |
| 51 self._outjar = path | 52 self._outjar = path |
| 52 | 53 |
| 53 def tested_apk_info(self, tested_apk_info_path): | 54 def tested_apk_info(self, tested_apk_info_path): |
| 54 assert self._cmd is None | 55 assert self._cmd is None |
| 55 assert self._tested_apk_info is None | 56 assert self._tested_apk_info is None |
| 56 self._tested_apk_info_path = tested_apk_info_path | 57 self._tested_apk_info_path = tested_apk_info_path |
| (...skipping 18 matching lines...) Expand all Loading... |
| 75 assert os.path.exists(p), p | 76 assert os.path.exists(p), p |
| 76 self._injars = paths | 77 self._injars = paths |
| 77 | 78 |
| 78 def configs(self, paths): | 79 def configs(self, paths): |
| 79 assert self._cmd is None | 80 assert self._cmd is None |
| 80 assert self._configs is None | 81 assert self._configs is None |
| 81 for p in paths: | 82 for p in paths: |
| 82 assert os.path.exists(p), p | 83 assert os.path.exists(p), p |
| 83 self._configs = paths | 84 self._configs = paths |
| 84 | 85 |
| 86 def verbose(self, verbose): |
| 87 assert self._cmd is None |
| 88 self._verbose = verbose |
| 89 |
| 85 def build(self): | 90 def build(self): |
| 86 if self._cmd: | 91 if self._cmd: |
| 87 return self._cmd | 92 return self._cmd |
| 88 assert self._injars is not None | 93 assert self._injars is not None |
| 89 assert self._outjar is not None | 94 assert self._outjar is not None |
| 90 assert self._configs is not None | 95 assert self._configs is not None |
| 91 cmd = [ | 96 cmd = [ |
| 92 'java', '-jar', self._proguard_jar_path, | 97 'java', '-jar', self._proguard_jar_path, |
| 93 '-forceprocessing', | 98 '-forceprocessing', |
| 94 ] | 99 ] |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 cmd += ['-include', config_file] | 132 cmd += ['-include', config_file] |
| 128 | 133 |
| 129 # The output jar must be specified after inputs. | 134 # The output jar must be specified after inputs. |
| 130 cmd += [ | 135 cmd += [ |
| 131 '-outjars', self._outjar, | 136 '-outjars', self._outjar, |
| 132 '-dump', self._outjar + '.dump', | 137 '-dump', self._outjar + '.dump', |
| 133 '-printseeds', self._outjar + '.seeds', | 138 '-printseeds', self._outjar + '.seeds', |
| 134 '-printusage', self._outjar + '.usage', | 139 '-printusage', self._outjar + '.usage', |
| 135 '-printmapping', self._outjar + '.mapping', | 140 '-printmapping', self._outjar + '.mapping', |
| 136 ] | 141 ] |
| 142 |
| 143 if self._verbose: |
| 144 cmd.append('-verbose') |
| 145 |
| 137 self._cmd = cmd | 146 self._cmd = cmd |
| 138 return self._cmd | 147 return self._cmd |
| 139 | 148 |
| 140 def GetInputs(self): | 149 def GetInputs(self): |
| 141 self.build() | 150 self.build() |
| 142 inputs = [self._proguard_jar_path] + self._configs + self._injars | 151 inputs = [self._proguard_jar_path] + self._configs + self._injars |
| 143 if self._mapping: | 152 if self._mapping: |
| 144 inputs.append(self._mapping) | 153 inputs.append(self._mapping) |
| 145 if self._libraries: | 154 if self._libraries: |
| 146 inputs += self._libraries | 155 inputs += self._libraries |
| 147 if self._tested_apk_info_path: | 156 if self._tested_apk_info_path: |
| 148 inputs += [self._tested_apk_info_path] | 157 inputs += [self._tested_apk_info_path] |
| 149 return inputs | 158 return inputs |
| 150 | 159 |
| 151 | 160 |
| 152 def CheckOutput(self, verbose=False): | 161 def CheckOutput(self): |
| 153 self.build() | 162 self.build() |
| 154 # Proguard will skip writing these files if they would be empty. Create | 163 # Proguard will skip writing these files if they would be empty. Create |
| 155 # empty versions of them all now so that they are updated as the build | 164 # empty versions of them all now so that they are updated as the build |
| 156 # expects. | 165 # expects. |
| 157 open(self._outjar + '.dump', 'w').close() | 166 open(self._outjar + '.dump', 'w').close() |
| 158 open(self._outjar + '.seeds', 'w').close() | 167 open(self._outjar + '.seeds', 'w').close() |
| 159 open(self._outjar + '.usage', 'w').close() | 168 open(self._outjar + '.usage', 'w').close() |
| 160 open(self._outjar + '.mapping', 'w').close() | 169 open(self._outjar + '.mapping', 'w').close() |
| 161 # Warning: and Error: are sent to stderr, but messages and Note: are sent | 170 # Warning: and Error: are sent to stderr, but messages and Note: are sent |
| 162 # to stdout. | 171 # to stdout. |
| 163 stdout_filter = None | 172 stdout_filter = None |
| 164 stderr_filter = None | 173 stderr_filter = None |
| 165 if not verbose: | 174 if not self._verbose: |
| 166 stdout_filter = _ProguardOutputFilter() | 175 stdout_filter = _ProguardOutputFilter() |
| 167 stderr_filter = _ProguardOutputFilter() | 176 stderr_filter = _ProguardOutputFilter() |
| 168 build_utils.CheckOutput(self._cmd, print_stdout=True, | 177 build_utils.CheckOutput(self._cmd, print_stdout=True, |
| 169 print_stderr=True, | 178 print_stderr=True, |
| 170 stdout_filter=stdout_filter, | 179 stdout_filter=stdout_filter, |
| 171 stderr_filter=stderr_filter) | 180 stderr_filter=stderr_filter) |
| 172 | 181 |
| 173 this_info = { | 182 this_info = { |
| 174 'inputs': self._injars, | 183 'inputs': self._injars, |
| 175 'configs': self._configs, | 184 'configs': self._configs, |
| 176 'mapping': self._outjar + '.mapping', | 185 'mapping': self._outjar + '.mapping', |
| 177 } | 186 } |
| 178 | 187 |
| 179 build_utils.WriteJson(this_info, self._outjar + '.info') | 188 build_utils.WriteJson(this_info, self._outjar + '.info') |
| 180 | 189 |
| OLD | NEW |