Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: tools/bisect-perf-regression.py

Issue 331593007: Enable manual bisects on Chrome for Android. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Put use_goma test in the right place Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | tools/bisect_utils.py » ('j') | tools/run-bisect-manual-test.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2013 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 """Performance Test Bisect Tool 6 """Performance Test Bisect Tool
7 7
8 This script bisects a series of changelists using binary search. It starts at 8 This script bisects a series of changelists using binary search. It starts at
9 a bad revision where a performance metric has regressed, and asks for a last 9 a bad revision where a performance metric has regressed, and asks for a last
10 known-good revision. It will then binary search across this revision range by 10 known-good revision. It will then binary search across this revision range by
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 Returns: 630 Returns:
631 A tuple of the output and return code. 631 A tuple of the output and return code.
632 """ 632 """
633 (output, return_code) = RunGit(command, cwd=cwd) 633 (output, return_code) = RunGit(command, cwd=cwd)
634 634
635 assert not return_code, 'An error occurred while running'\ 635 assert not return_code, 'An error occurred while running'\
636 ' "git %s"' % ' '.join(command) 636 ' "git %s"' % ' '.join(command)
637 return output 637 return output
638 638
639 639
640 def SetBuildSystemDefault(build_system): 640 def SetBuildSystemDefault(build_system, use_goma):
641 """Sets up any environment variables needed to build with the specified build 641 """Sets up any environment variables needed to build with the specified build
642 system. 642 system.
643 643
644 Args: 644 Args:
645 build_system: A string specifying build system. Currently only 'ninja' or 645 build_system: A string specifying build system. Currently only 'ninja' or
646 'make' are supported.""" 646 'make' are supported."""
647 if build_system == 'ninja': 647 if build_system == 'ninja':
648 gyp_var = os.getenv('GYP_GENERATORS') 648 gyp_var = os.getenv('GYP_GENERATORS')
649 649
650 if not gyp_var or not 'ninja' in gyp_var: 650 if not gyp_var or not 'ninja' in gyp_var:
651 if gyp_var: 651 if gyp_var:
652 os.environ['GYP_GENERATORS'] = gyp_var + ',ninja' 652 os.environ['GYP_GENERATORS'] = gyp_var + ',ninja'
653 else: 653 else:
654 os.environ['GYP_GENERATORS'] = 'ninja' 654 os.environ['GYP_GENERATORS'] = 'ninja'
655 655
656 if IsWindows(): 656 if IsWindows():
657 os.environ['GYP_DEFINES'] = 'component=shared_library '\ 657 os.environ['GYP_DEFINES'] = 'component=shared_library '\
658 'incremental_chrome_dll=1 disable_nacl=1 fastbuild=1 '\ 658 'incremental_chrome_dll=1 disable_nacl=1 fastbuild=1 '\
659 'chromium_win_pch=0' 659 'chromium_win_pch=0'
660
660 elif build_system == 'make': 661 elif build_system == 'make':
661 os.environ['GYP_GENERATORS'] = 'make' 662 os.environ['GYP_GENERATORS'] = 'make'
662 else: 663 else:
663 raise RuntimeError('%s build not supported.' % build_system) 664 raise RuntimeError('%s build not supported.' % build_system)
664 665
666 if use_goma:
667 os.environ['GYP_DEFINES'] = '%s %s' % (os.getenv('GYP_DEFINES', ''),
668 'use_goma=1')
669
665 670
666 def BuildWithMake(threads, targets, build_type='Release'): 671 def BuildWithMake(threads, targets, build_type='Release'):
667 cmd = ['make', 'BUILDTYPE=%s' % build_type] 672 cmd = ['make', 'BUILDTYPE=%s' % build_type]
668 673
669 if threads: 674 if threads:
670 cmd.append('-j%d' % threads) 675 cmd.append('-j%d' % threads)
671 676
672 cmd += targets 677 cmd += targets
673 678
674 return_code = RunProcess(cmd) 679 return_code = RunProcess(cmd)
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 """ 747 """
743 if IsWindows(): 748 if IsWindows():
744 if not opts.build_preference: 749 if not opts.build_preference:
745 opts.build_preference = 'msvs' 750 opts.build_preference = 'msvs'
746 751
747 if opts.build_preference == 'msvs': 752 if opts.build_preference == 'msvs':
748 if not os.getenv('VS100COMNTOOLS'): 753 if not os.getenv('VS100COMNTOOLS'):
749 raise RuntimeError( 754 raise RuntimeError(
750 'Path to visual studio could not be determined.') 755 'Path to visual studio could not be determined.')
751 else: 756 else:
752 SetBuildSystemDefault(opts.build_preference) 757 SetBuildSystemDefault(opts.build_preference, opts.use_goma)
753 else: 758 else:
754 if not opts.build_preference: 759 if not opts.build_preference:
755 if 'ninja' in os.getenv('GYP_GENERATORS'): 760 if 'ninja' in os.getenv('GYP_GENERATORS'):
756 opts.build_preference = 'ninja' 761 opts.build_preference = 'ninja'
757 else: 762 else:
758 opts.build_preference = 'make' 763 opts.build_preference = 'make'
759 764
760 SetBuildSystemDefault(opts.build_preference) 765 SetBuildSystemDefault(opts.build_preference, opts.use_goma)
761 766
762 if not bisect_utils.SetupPlatformBuildEnvironment(opts): 767 if not bisect_utils.SetupPlatformBuildEnvironment(opts):
763 raise RuntimeError('Failed to set platform environment.') 768 raise RuntimeError('Failed to set platform environment.')
764 769
765 @staticmethod 770 @staticmethod
766 def FromOpts(opts): 771 def FromOpts(opts):
767 builder = None 772 builder = None
768 if opts.target_platform == 'cros': 773 if opts.target_platform == 'cros':
769 builder = CrosBuilder(opts) 774 builder = CrosBuilder(opts)
770 elif opts.target_platform == 'android': 775 elif opts.target_platform == 'android':
(...skipping 1594 matching lines...) Expand 10 before | Expand all | Expand 10 after
2365 return_code = RunProcess(cmd) 2370 return_code = RunProcess(cmd)
2366 os.chdir(cwd) 2371 os.chdir(cwd)
2367 return not return_code 2372 return not return_code
2368 2373
2369 def PerformPreSyncCleanup(self, revision, depot): 2374 def PerformPreSyncCleanup(self, revision, depot):
2370 """Performs any necessary cleanup before syncing. 2375 """Performs any necessary cleanup before syncing.
2371 2376
2372 Returns: 2377 Returns:
2373 True if successful. 2378 True if successful.
2374 """ 2379 """
2375 if depot == 'chromium': 2380 if depot == 'chromium' or depot == 'android-chrome':
2376 # Removes third_party/libjingle. At some point, libjingle was causing 2381 # Removes third_party/libjingle. At some point, libjingle was causing
2377 # issues syncing when using the git workflow (crbug.com/266324). 2382 # issues syncing when using the git workflow (crbug.com/266324).
2383 os.chdir(self.src_cwd)
2378 if not bisect_utils.RemoveThirdPartyDirectory('libjingle'): 2384 if not bisect_utils.RemoveThirdPartyDirectory('libjingle'):
2379 return False 2385 return False
2380 # Removes third_party/skia. At some point, skia was causing 2386 # Removes third_party/skia. At some point, skia was causing
2381 # issues syncing when using the git workflow (crbug.com/377951). 2387 # issues syncing when using the git workflow (crbug.com/377951).
2382 if not bisect_utils.RemoveThirdPartyDirectory('skia'): 2388 if not bisect_utils.RemoveThirdPartyDirectory('skia'):
2383 return False 2389 return False
2384 return self.PerformWebkitDirectoryCleanup(revision) 2390 if depot == 'chromium':
2391 # The fast webkit cleanup doesn't work for android_chrome
2392 # The switch from Webkit to Blink that this deals with now happened
2393 # quite a long time ago so this is unlikely to be a problem.
2394 return self.PerformWebkitDirectoryCleanup(revision)
2385 elif depot == 'cros': 2395 elif depot == 'cros':
2386 return self.PerformCrosChrootCleanup() 2396 return self.PerformCrosChrootCleanup()
2387 return True 2397 return True
2388 2398
2389 def RunPostSync(self, depot): 2399 def RunPostSync(self, depot):
2390 """Performs any work after syncing. 2400 """Performs any work after syncing.
2391 2401
2392 Returns: 2402 Returns:
2393 True if successful. 2403 True if successful.
2394 """ 2404 """
(...skipping 1364 matching lines...) Expand 10 before | Expand all | Expand 10 after
3759 help='Path to a script which can be used to modify ' 3769 help='Path to a script which can be used to modify '
3760 'the bisect script\'s behavior.') 3770 'the bisect script\'s behavior.')
3761 group.add_option('--cros_board', 3771 group.add_option('--cros_board',
3762 type='str', 3772 type='str',
3763 help='The cros board type to build.') 3773 help='The cros board type to build.')
3764 group.add_option('--cros_remote_ip', 3774 group.add_option('--cros_remote_ip',
3765 type='str', 3775 type='str',
3766 help='The remote machine to image to.') 3776 help='The remote machine to image to.')
3767 group.add_option('--use_goma', 3777 group.add_option('--use_goma',
3768 action="store_true", 3778 action="store_true",
3769 help='Add a bunch of extra threads for goma.') 3779 help='Add a bunch of extra threads for goma, and enable '
3780 'goma')
3770 group.add_option('--output_buildbot_annotations', 3781 group.add_option('--output_buildbot_annotations',
3771 action="store_true", 3782 action="store_true",
3772 help='Add extra annotation output for buildbot.') 3783 help='Add extra annotation output for buildbot.')
3773 group.add_option('--gs_bucket', 3784 group.add_option('--gs_bucket',
3774 default='', 3785 default='',
3775 dest='gs_bucket', 3786 dest='gs_bucket',
3776 type='str', 3787 type='str',
3777 help=('Name of Google Storage bucket to upload or ' 3788 help=('Name of Google Storage bucket to upload or '
3778 'download build. e.g., chrome-perf')) 3789 'download build. e.g., chrome-perf'))
3779 group.add_option('--target_arch', 3790 group.add_option('--target_arch',
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
3963 # The perf dashboard scrapes the "results" step in order to comment on 3974 # The perf dashboard scrapes the "results" step in order to comment on
3964 # bugs. If you change this, please update the perf dashboard as well. 3975 # bugs. If you change this, please update the perf dashboard as well.
3965 bisect_utils.OutputAnnotationStepStart('Results') 3976 bisect_utils.OutputAnnotationStepStart('Results')
3966 print 'Error: %s' % e.message 3977 print 'Error: %s' % e.message
3967 if opts.output_buildbot_annotations: 3978 if opts.output_buildbot_annotations:
3968 bisect_utils.OutputAnnotationStepClosed() 3979 bisect_utils.OutputAnnotationStepClosed()
3969 return 1 3980 return 1
3970 3981
3971 if __name__ == '__main__': 3982 if __name__ == '__main__':
3972 sys.exit(main()) 3983 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | tools/bisect_utils.py » ('j') | tools/run-bisect-manual-test.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698