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

Side by Side Diff: recipe_modules/bot_update/resources/bot_update.py

Issue 2350363003: Revert of bot_update: add --auth-refresh-token-json passthrough for apply_issue (Closed)
Patch Set: Created 4 years, 3 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
OLDNEW
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 # TODO(hinoka): Use logging. 6 # TODO(hinoka): Use logging.
7 7
8 import cStringIO 8 import cStringIO
9 import codecs 9 import codecs
10 import copy 10 import copy
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 """Fetch url and return content, with retries for flake.""" 548 """Fetch url and return content, with retries for flake."""
549 for attempt in xrange(ATTEMPTS): 549 for attempt in xrange(ATTEMPTS):
550 try: 550 try:
551 return urllib2.urlopen(url).read() 551 return urllib2.urlopen(url).read()
552 except Exception: 552 except Exception:
553 if attempt == ATTEMPTS - 1: 553 if attempt == ATTEMPTS - 1:
554 raise 554 raise
555 555
556 556
557 def apply_rietveld_issue(issue, patchset, root, server, _rev_map, _revision, 557 def apply_rietveld_issue(issue, patchset, root, server, _rev_map, _revision,
558 email_file, key_file, oauth2_file, 558 email_file, key_file, whitelist=None, blacklist=None):
559 whitelist=None, blacklist=None):
560 apply_issue_bin = ('apply_issue.bat' if sys.platform.startswith('win') 559 apply_issue_bin = ('apply_issue.bat' if sys.platform.startswith('win')
561 else 'apply_issue') 560 else 'apply_issue')
562 cmd = [apply_issue_bin, 561 cmd = [apply_issue_bin,
563 # The patch will be applied on top of this directory. 562 # The patch will be applied on top of this directory.
564 '--root_dir', root, 563 '--root_dir', root,
565 # Tell apply_issue how to fetch the patch. 564 # Tell apply_issue how to fetch the patch.
566 '--issue', issue, 565 '--issue', issue,
567 '--server', server, 566 '--server', server,
568 # Always run apply_issue.py, otherwise it would see update.flag 567 # Always run apply_issue.py, otherwise it would see update.flag
569 # and then bail out. 568 # and then bail out.
570 '--force', 569 '--force',
571 # Don't run gclient sync when it sees a DEPS change. 570 # Don't run gclient sync when it sees a DEPS change.
572 '--ignore_deps', 571 '--ignore_deps',
573 ] 572 ]
574 # Use an oauth key or json file if specified. 573 # Use an oauth key file if specified.
575 if oauth2_file: 574 if email_file and key_file:
576 cmd.extend(['--auth-refresh-token-json', oauth2_file])
577 elif email_file and key_file:
578 cmd.extend(['--email-file', email_file, '--private-key-file', key_file]) 575 cmd.extend(['--email-file', email_file, '--private-key-file', key_file])
579 else: 576 else:
580 cmd.append('--no-auth') 577 cmd.append('--no-auth')
581 578
582 if patchset: 579 if patchset:
583 cmd.extend(['--patchset', patchset]) 580 cmd.extend(['--patchset', patchset])
584 if whitelist: 581 if whitelist:
585 for item in whitelist: 582 for item in whitelist:
586 cmd.extend(['--whitelist', item]) 583 cmd.extend(['--whitelist', item])
587 elif blacklist: 584 elif blacklist:
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 revisions) 707 revisions)
711 if not revision: 708 if not revision:
712 continue 709 continue
713 git('fetch', 'origin', cwd=deps_name) 710 git('fetch', 'origin', cwd=deps_name)
714 force_revision(deps_name, revision) 711 force_revision(deps_name, revision)
715 712
716 713
717 def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only, 714 def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only,
718 patch_root, issue, patchset, rietveld_server, gerrit_repo, 715 patch_root, issue, patchset, rietveld_server, gerrit_repo,
719 gerrit_ref, gerrit_rebase_patch_ref, revision_mapping, 716 gerrit_ref, gerrit_rebase_patch_ref, revision_mapping,
720 apply_issue_email_file, apply_issue_key_file, 717 apply_issue_email_file, apply_issue_key_file, shallow, refs,
721 apply_issue_oauth2_file, shallow, refs, git_cache_dir, 718 git_cache_dir, gerrit_reset):
722 gerrit_reset):
723 # Get a checkout of each solution, without DEPS or hooks. 719 # Get a checkout of each solution, without DEPS or hooks.
724 # Calling git directly because there is no way to run Gclient without 720 # Calling git directly because there is no way to run Gclient without
725 # invoking DEPS. 721 # invoking DEPS.
726 print 'Fetching Git checkout' 722 print 'Fetching Git checkout'
727 723
728 git_ref = git_checkout(solutions, revisions, shallow, refs, git_cache_dir) 724 git_ref = git_checkout(solutions, revisions, shallow, refs, git_cache_dir)
729 725
730 print '===Processing patch solutions===' 726 print '===Processing patch solutions==='
731 already_patched = [] 727 already_patched = []
732 patch_root = patch_root or '' 728 patch_root = patch_root or ''
733 applied_gerrit_patch = False 729 applied_gerrit_patch = False
734 print 'Patch root is %r' % patch_root 730 print 'Patch root is %r' % patch_root
735 for solution in solutions: 731 for solution in solutions:
736 print 'Processing solution %r' % solution['name'] 732 print 'Processing solution %r' % solution['name']
737 if (patch_root == solution['name'] or 733 if (patch_root == solution['name'] or
738 solution['name'].startswith(patch_root + '/')): 734 solution['name'].startswith(patch_root + '/')):
739 relative_root = solution['name'][len(patch_root) + 1:] 735 relative_root = solution['name'][len(patch_root) + 1:]
740 target = '/'.join([relative_root, 'DEPS']).lstrip('/') 736 target = '/'.join([relative_root, 'DEPS']).lstrip('/')
741 print ' relative root is %r, target is %r' % (relative_root, target) 737 print ' relative root is %r, target is %r' % (relative_root, target)
742 if issue: 738 if issue:
743 apply_rietveld_issue(issue, patchset, patch_root, rietveld_server, 739 apply_rietveld_issue(issue, patchset, patch_root, rietveld_server,
744 revision_mapping, git_ref, apply_issue_email_file, 740 revision_mapping, git_ref, apply_issue_email_file,
745 apply_issue_key_file, apply_issue_oauth2_file, 741 apply_issue_key_file, whitelist=[target])
746 whitelist=[target])
747 already_patched.append(target) 742 already_patched.append(target)
748 elif gerrit_ref: 743 elif gerrit_ref:
749 apply_gerrit_ref(gerrit_repo, gerrit_ref, patch_root, gerrit_reset, 744 apply_gerrit_ref(gerrit_repo, gerrit_ref, patch_root, gerrit_reset,
750 gerrit_rebase_patch_ref) 745 gerrit_rebase_patch_ref)
751 applied_gerrit_patch = True 746 applied_gerrit_patch = True
752 747
753 # Ensure our build/ directory is set up with the correct .gclient file. 748 # Ensure our build/ directory is set up with the correct .gclient file.
754 gclient_configure(solutions, target_os, target_os_only, git_cache_dir) 749 gclient_configure(solutions, target_os, target_os_only, git_cache_dir)
755 750
756 # Let gclient do the DEPS syncing. 751 # Let gclient do the DEPS syncing.
757 # The branch-head refspec is a special case because its possible Chrome 752 # The branch-head refspec is a special case because its possible Chrome
758 # src, which contains the branch-head refspecs, is DEPSed in. 753 # src, which contains the branch-head refspecs, is DEPSed in.
759 gclient_output = gclient_sync(BRANCH_HEADS_REFSPEC in refs, shallow) 754 gclient_output = gclient_sync(BRANCH_HEADS_REFSPEC in refs, shallow)
760 755
761 # Now that gclient_sync has finished, we should revert any .DEPS.git so that 756 # Now that gclient_sync has finished, we should revert any .DEPS.git so that
762 # presubmit doesn't complain about it being modified. 757 # presubmit doesn't complain about it being modified.
763 if git('ls-files', '.DEPS.git', cwd=first_sln).strip(): 758 if git('ls-files', '.DEPS.git', cwd=first_sln).strip():
764 git('checkout', 'HEAD', '--', '.DEPS.git', cwd=first_sln) 759 git('checkout', 'HEAD', '--', '.DEPS.git', cwd=first_sln)
765 760
766 # Finally, ensure that all DEPS are pinned to the correct revision. 761 # Finally, ensure that all DEPS are pinned to the correct revision.
767 dir_names = [sln['name'] for sln in solutions] 762 dir_names = [sln['name'] for sln in solutions]
768 ensure_deps_revisions(gclient_output.get('solutions', {}), 763 ensure_deps_revisions(gclient_output.get('solutions', {}),
769 dir_names, revisions) 764 dir_names, revisions)
770 # Apply the rest of the patch here (sans DEPS) 765 # Apply the rest of the patch here (sans DEPS)
771 if issue: 766 if issue:
772 apply_rietveld_issue(issue, patchset, patch_root, rietveld_server, 767 apply_rietveld_issue(issue, patchset, patch_root, rietveld_server,
773 revision_mapping, apply_issue_oauth2_file, git_ref, 768 revision_mapping, git_ref, apply_issue_email_file,
774 apply_issue_email_file, apply_issue_key_file, 769 apply_issue_key_file, blacklist=already_patched)
775 blacklist=already_patched)
776 elif gerrit_ref and not applied_gerrit_patch: 770 elif gerrit_ref and not applied_gerrit_patch:
777 # If gerrit_ref was for solution's main repository, it has already been 771 # If gerrit_ref was for solution's main repository, it has already been
778 # applied above. This chunk is executed only for patches to DEPS-ed in 772 # applied above. This chunk is executed only for patches to DEPS-ed in
779 # git repositories. 773 # git repositories.
780 apply_gerrit_ref(gerrit_repo, gerrit_ref, patch_root, gerrit_reset, 774 apply_gerrit_ref(gerrit_repo, gerrit_ref, patch_root, gerrit_reset,
781 gerrit_rebase_patch_ref) 775 gerrit_rebase_patch_ref)
782 776
783 # Reset the deps_file point in the solutions so that hooks get run properly. 777 # Reset the deps_file point in the solutions so that hooks get run properly.
784 for sln in solutions: 778 for sln in solutions:
785 sln['deps_file'] = sln.get('deps_file', 'DEPS').replace('.DEPS.git', 'DEPS') 779 sln['deps_file'] = sln.get('deps_file', 'DEPS').replace('.DEPS.git', 'DEPS')
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 parse = optparse.OptionParser() 828 parse = optparse.OptionParser()
835 829
836 parse.add_option('--issue', help='Issue number to patch from.') 830 parse.add_option('--issue', help='Issue number to patch from.')
837 parse.add_option('--patchset', 831 parse.add_option('--patchset',
838 help='Patchset from issue to patch from, if applicable.') 832 help='Patchset from issue to patch from, if applicable.')
839 parse.add_option('--apply_issue_email_file', 833 parse.add_option('--apply_issue_email_file',
840 help='--email-file option passthrough for apply_patch.py.') 834 help='--email-file option passthrough for apply_patch.py.')
841 parse.add_option('--apply_issue_key_file', 835 parse.add_option('--apply_issue_key_file',
842 help='--private-key-file option passthrough for ' 836 help='--private-key-file option passthrough for '
843 'apply_patch.py.') 837 'apply_patch.py.')
844 parse.add_option('--apply_issue_oauth2_file',
845 help='--auth-refresh-token-json option passthrough for '
846 'apply_patch.py.')
847 parse.add_option('--root', dest='patch_root', 838 parse.add_option('--root', dest='patch_root',
848 help='DEPRECATED: Use --patch_root.') 839 help='DEPRECATED: Use --patch_root.')
849 parse.add_option('--patch_root', help='Directory to patch on top of.') 840 parse.add_option('--patch_root', help='Directory to patch on top of.')
850 parse.add_option('--rietveld_server', 841 parse.add_option('--rietveld_server',
851 default='codereview.chromium.org', 842 default='codereview.chromium.org',
852 help='Rietveld server.') 843 help='Rietveld server.')
853 parse.add_option('--gerrit_repo', 844 parse.add_option('--gerrit_repo',
854 help='Gerrit repository to pull the ref from.') 845 help='Gerrit repository to pull the ref from.')
855 parse.add_option('--gerrit_ref', help='Gerrit ref to apply.') 846 parse.add_option('--gerrit_ref', help='Gerrit ref to apply.')
856 parse.add_option('--gerrit_no_rebase_patch_ref', action='store_true', 847 parse.add_option('--gerrit_no_rebase_patch_ref', action='store_true',
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
974 patch_root=options.patch_root, 965 patch_root=options.patch_root,
975 issue=options.issue, 966 issue=options.issue,
976 patchset=options.patchset, 967 patchset=options.patchset,
977 rietveld_server=options.rietveld_server, 968 rietveld_server=options.rietveld_server,
978 gerrit_repo=options.gerrit_repo, 969 gerrit_repo=options.gerrit_repo,
979 gerrit_ref=options.gerrit_ref, 970 gerrit_ref=options.gerrit_ref,
980 gerrit_rebase_patch_ref=not options.gerrit_no_rebase_patch_ref, 971 gerrit_rebase_patch_ref=not options.gerrit_no_rebase_patch_ref,
981 revision_mapping=options.revision_mapping, 972 revision_mapping=options.revision_mapping,
982 apply_issue_email_file=options.apply_issue_email_file, 973 apply_issue_email_file=options.apply_issue_email_file,
983 apply_issue_key_file=options.apply_issue_key_file, 974 apply_issue_key_file=options.apply_issue_key_file,
984 apply_issue_oauth2_file=options.apply_issue_oauth2_file,
985 975
986 # Finally, extra configurations such as shallowness of the clone. 976 # Finally, extra configurations such as shallowness of the clone.
987 shallow=shallow, 977 shallow=shallow,
988 refs=options.refs, 978 refs=options.refs,
989 git_cache_dir=options.git_cache_dir, 979 git_cache_dir=options.git_cache_dir,
990 gerrit_reset=not options.gerrit_no_reset) 980 gerrit_reset=not options.gerrit_no_reset)
991 gclient_output = ensure_checkout(**checkout_parameters) 981 gclient_output = ensure_checkout(**checkout_parameters)
992 except GclientSyncFailed: 982 except GclientSyncFailed:
993 print 'We failed gclient sync, lets delete the checkout and retry.' 983 print 'We failed gclient sync, lets delete the checkout and retry.'
994 ensure_no_checkout(dir_names) 984 ensure_no_checkout(dir_names)
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 # download patch failure is still an infra problem. 1080 # download patch failure is still an infra problem.
1091 if e.code == 3: 1081 if e.code == 3:
1092 # Patch download problem. 1082 # Patch download problem.
1093 return 87 1083 return 87
1094 # Genuine patch problem. 1084 # Genuine patch problem.
1095 return 88 1085 return 88
1096 1086
1097 1087
1098 if __name__ == '__main__': 1088 if __name__ == '__main__':
1099 sys.exit(main()) 1089 sys.exit(main())
OLDNEW
« no previous file with comments | « recipe_modules/bot_update/example.expected/trychange_oauth2_json_win.json ('k') | tests/bot_update_coverage_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698