| OLD | NEW | 
|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python | 
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. | 
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be | 
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. | 
| 5 | 5 | 
| 6 """Adaptor script called through build/isolate.gypi. | 6 """Adaptor script called through build/isolate.gypi. | 
| 7 | 7 | 
| 8 Creates a wrapping .isolate which 'includes' the original one, that can be | 8 Creates a wrapping .isolate which 'includes' the original one, that can be | 
| 9 consumed by tools/swarming_client/isolate.py. Path variables are determined | 9 consumed by tools/swarming_client/isolate.py. Path variables are determined | 
| 10 based on the current working directory. The relative_cwd in the .isolated file | 10 based on the current working directory. The relative_cwd in the .isolated file | 
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 111 | 111 | 
| 112   Ignores many rules that are assumed to not depend on a dynamic library. If | 112   Ignores many rules that are assumed to not depend on a dynamic library. If | 
| 113   the assumption doesn't hold true anymore for a file format, remove it from | 113   the assumption doesn't hold true anymore for a file format, remove it from | 
| 114   this list. This is simply an optimization. | 114   this list. This is simply an optimization. | 
| 115   """ | 115   """ | 
| 116   # *.json is ignored below, *.isolated.gen.json is an exception, it is produced | 116   # *.json is ignored below, *.isolated.gen.json is an exception, it is produced | 
| 117   # by isolate_driver.py in 'test_isolation_mode==prepare'. | 117   # by isolate_driver.py in 'test_isolation_mode==prepare'. | 
| 118   if item.endswith('.isolated.gen.json'): | 118   if item.endswith('.isolated.gen.json'): | 
| 119     return True | 119     return True | 
| 120   IGNORED = ( | 120   IGNORED = ( | 
| 121     '.a', '.cc', '.css', '.def', '.frag', '.h', '.html', '.js', '.json', | 121     '.a', '.cc', '.css', '.dat', '.def', '.frag', '.h', '.html', '.isolate', | 
| 122     '.manifest', '.o', '.obj', '.pak', '.png', '.pdb', '.strings', '.test', | 122     '.js', '.json', '.manifest', '.o', '.obj', '.pak', '.png', '.pdb', '.py', | 
| 123     '.txt', '.vert', | 123     '.strings', '.test', '.txt', '.vert', | 
| 124   ) | 124   ) | 
| 125   # ninja files use native path format. | 125   # ninja files use native path format. | 
| 126   ext = os.path.splitext(item)[1] | 126   ext = os.path.splitext(item)[1] | 
| 127   if ext in IGNORED: | 127   if ext in IGNORED: | 
| 128     return False | 128     return False | 
| 129   # Special case Windows, keep .dll.lib but discard .lib. | 129   # Special case Windows, keep .dll.lib but discard .lib. | 
| 130   if item.endswith('.dll.lib'): | 130   if item.endswith('.dll.lib'): | 
| 131     return True | 131     return True | 
| 132   if ext == '.lib': | 132   if ext == '.lib': | 
| 133     return False | 133     return False | 
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 173       # Remove only the suffix .TOC, not the .so! | 173       # Remove only the suffix .TOC, not the .so! | 
| 174       return i[:-4] | 174       return i[:-4] | 
| 175     if i.endswith('.dylib.TOC'): | 175     if i.endswith('.dylib.TOC'): | 
| 176       # Remove only the suffix .TOC, not the .dylib! | 176       # Remove only the suffix .TOC, not the .dylib! | 
| 177       return i[:-4] | 177       return i[:-4] | 
| 178     if i.endswith('.dll.lib'): | 178     if i.endswith('.dll.lib'): | 
| 179       # Remove only the suffix .lib, not the .dll! | 179       # Remove only the suffix .lib, not the .dll! | 
| 180       return i[:-4] | 180       return i[:-4] | 
| 181     return i | 181     return i | 
| 182 | 182 | 
| 183   def f(i): | 183   def is_exe(i): | 
| 184     # This script is only for adding new binaries that are created as part of | 184     # This script is only for adding new binaries that are created as part of | 
| 185     # the component build. | 185     # the component build. | 
| 186     ext = os.path.splitext(i)[1] | 186     ext = os.path.splitext(i)[1] | 
| 187     if ext not in ['.dll', '.nexe', '.so', '.dylib']: | 187     # On POSIX, executables have no extension. | 
|  | 188     if ext not in ('', '.dll', '.dylib', '.exe', '.nexe', '.so'): | 
|  | 189       return False | 
|  | 190     if os.path.isabs(i): | 
|  | 191       # In some rare case, there's dependency set explicitly on files outside | 
|  | 192       # the checkout. | 
| 188       return False | 193       return False | 
| 189 | 194 | 
| 190     # Check for execute access and strip directories. This gets rid of all the | 195     # Check for execute access and strip directories. This gets rid of all the | 
| 191     # phony rules. | 196     # phony rules. | 
| 192     p = os.path.join(build_dir, i) | 197     p = os.path.join(build_dir, i) | 
| 193     return os.access(p, os.X_OK) and not os.path.isdir(p) | 198     return os.access(p, os.X_OK) and not os.path.isdir(p) | 
| 194 | 199 | 
| 195   return filter(f, map(filter_item, dependencies)) | 200   return filter(is_exe, map(filter_item, dependencies)) | 
| 196 | 201 | 
| 197 | 202 | 
| 198 def create_wrapper(args, isolate_index, isolated_index): | 203 def create_wrapper(args, isolate_index, isolated_index): | 
| 199   """Creates a wrapper .isolate that add dynamic libs. | 204   """Creates a wrapper .isolate that add dynamic libs. | 
| 200 | 205 | 
| 201   The original .isolate is not modified. | 206   The original .isolate is not modified. | 
| 202   """ | 207   """ | 
| 203   cwd = os.getcwd() | 208   cwd = os.getcwd() | 
| 204   isolate = args[isolate_index] | 209   isolate = args[isolate_index] | 
| 205   # The code assumes the .isolate file is always specified path-less in cwd. Fix | 210   # The code assumes the .isolate file is always specified path-less in cwd. Fix | 
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 299 | 304 | 
| 300   swarming_client = os.path.join(SRC_DIR, 'tools', 'swarming_client') | 305   swarming_client = os.path.join(SRC_DIR, 'tools', 'swarming_client') | 
| 301   sys.stdout.flush() | 306   sys.stdout.flush() | 
| 302   result = subprocess.call( | 307   result = subprocess.call( | 
| 303       [sys.executable, os.path.join(swarming_client, 'isolate.py')] + args) | 308       [sys.executable, os.path.join(swarming_client, 'isolate.py')] + args) | 
| 304   return result | 309   return result | 
| 305 | 310 | 
| 306 | 311 | 
| 307 if __name__ == '__main__': | 312 if __name__ == '__main__': | 
| 308   sys.exit(main()) | 313   sys.exit(main()) | 
| OLD | NEW | 
|---|