12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#!/usr/bin/env python 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Copyright (c) 2013 The Chromium Authors. All rights reserved. 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# found in the LICENSE file. 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)"""Prepare Performance Test Bisect Tool 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciThis script is used by a try bot to create a working directory and sync an 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)initial copy of the depot for use in bisecting performance regressions. 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)An example usage: 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)./tools/prepare-bisect-perf-regressions.py --working_directory "~/builds" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) --output_buildbot_annotations 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)Would result in creating ~/builds/bisect and then populating it with a copy of 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)the depot. 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)""" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import optparse 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import sys 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdochfrom auto_bisect import bisect_utils 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def main(): 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """Does an initial checkout of Chromium then exits.""" 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) usage = ('%prog [options] [-- chromium-options]\n' 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'Prepares a temporary depot for use on a try bot.') 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parser = optparse.OptionParser(usage=usage) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parser.add_option('-w', '--working_directory', 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) type='str', 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) help='Path to the working directory where the script will ' 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 'do an initial checkout of the chromium depot. The ' 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 'files will be placed in a subdirectory "bisect" under ' 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 'working_directory and that will be used to perform the ' 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 'bisection.') 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parser.add_option('--output_buildbot_annotations', 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) action='store_true', 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) help='Add extra annotation output for buildbot.') 44868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) parser.add_option('--target_platform', 45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) type='choice', 46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) choices=['chromium', 'cros', 'android'], 47868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) default='chromium', 48868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) help='The target platform. Choices are "chromium" (current ' 49868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 'platform), "cros", or "android". If you specify something ' 50868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 'other than "chromium", you must be properly set up to ' 51868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 'build that platform.') 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) opts, _ = parser.parse_args() 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if not opts.working_directory: 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) print 'Error: missing required parameter: --working_directory' 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) print 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parser.print_help() 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return 1 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 60424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) if not bisect_utils.CheckIfBisectDepotExists(opts): 618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) try: 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bisect_utils.CreateBisectDirectoryAndSetupDepot( 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) opts, bisect_utils.DEFAULT_GCLIENT_CUSTOM_DEPS) 648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) except RuntimeError: 658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) return 1 66424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return 0 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)if __name__ == '__main__': 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sys.exit(main()) 71