| Index: scripts/slave/zip_build.py
|
| diff --git a/scripts/slave/zip_build.py b/scripts/slave/zip_build.py
|
| index e379cc72631d86e6723bd3b6ab0a96ae30a0f269..ce315718cdf5178bd3db15fbaf683c8aa06b39fe 100755
|
| --- a/scripts/slave/zip_build.py
|
| +++ b/scripts/slave/zip_build.py
|
| @@ -23,6 +23,30 @@ from slave import slave_utils
|
| class StagingError(Exception): pass
|
|
|
|
|
| +def ASANFilter(path):
|
| + """Takes a path to a file and returns the path to its asan'd counterpart.
|
| +
|
| + Returns None if path is already an asan'd file.
|
| + Returns the original path otherwise.
|
| + """
|
| + head, tail = os.path.split(path)
|
| + parts = tail.split('.', 1)
|
| + if len(parts) == 1:
|
| + return path
|
| + if parts[-1].startswith('asan'): # skip 'foo.asan.exe' entirely
|
| + return None
|
| + parts.insert(1, 'asan')
|
| + asan_path = os.path.join(head, '.'.join(parts))
|
| + if os.path.exists(asan_path):
|
| + return asan_path
|
| + return path
|
| +
|
| +
|
| +FILTERS = {
|
| + 'asan': ASANFilter,
|
| +}
|
| +
|
| +
|
| def CopyDebugCRT(build_dir):
|
| # Copy the relevant CRT DLLs to |build_dir|. We copy DLLs from all versions
|
| # of VS installed to make sure we have the correct CRT version, unused DLLs
|
| @@ -194,14 +218,15 @@ def WriteRevisionFile(dirname, build_revision):
|
|
|
|
|
| def MakeUnversionedArchive(build_dir, staging_dir, zip_file_list,
|
| - zip_file_name):
|
| + zip_file_name, filters):
|
| """Creates an unversioned full build archive.
|
| Returns the path of the created archive."""
|
| (zip_dir, zip_file) = chromium_utils.MakeZip(staging_dir,
|
| zip_file_name,
|
| zip_file_list,
|
| build_dir,
|
| - raise_error=True)
|
| + raise_error=True,
|
| + replacements=filters)
|
| chromium_utils.RemoveDirectory(zip_dir)
|
| if not os.path.exists(zip_file):
|
| raise StagingError('Failed to make zip package %s' % zip_file)
|
| @@ -319,7 +344,7 @@ def Archive(options):
|
|
|
| zip_file_list = [f for f in root_files if path_filter.Match(f)]
|
| zip_file = MakeUnversionedArchive(build_dir, staging_dir, zip_file_list,
|
| - unversioned_base_name)
|
| + unversioned_base_name, options.filters)
|
|
|
| zip_base, zip_ext = MakeVersionedArchive(zip_file, version_suffix, options)
|
| PruneOldArchives(staging_dir, zip_base, zip_ext)
|
| @@ -349,6 +374,9 @@ def main(argv):
|
| 'always be included in the zip.'))
|
| option_parser.add_option('--webkit-dir',
|
| help='webkit directory path, relative to --src-dir')
|
| + option_parser.add_option('--filters', action='append', default=[],
|
| + help='Filters to apply to build zip '
|
| + '(avail: %r).' % list(FILTERS.keys()))
|
| chromium_utils.AddPropertiesOptions(option_parser)
|
|
|
| options, args = option_parser.parse_args(argv)
|
| @@ -364,7 +392,12 @@ def main(argv):
|
| if args[1:]:
|
| print 'Warning -- unknown arguments' % args[1:]
|
|
|
| + if options.factory_properties.get('asan'):
|
| + options.filters.append('asan')
|
| + options.filters = [FILTERS[item] for item in set(options.filters)]
|
| +
|
| return Archive(options)
|
|
|
| +
|
| if '__main__' == __name__:
|
| sys.exit(main(sys.argv))
|
|
|