libv8 6.0.286.44.0beta1 → 6.0.286.54.0beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -2
  3. data/ext/libv8/location.rb +1 -1
  4. data/ext/libv8/paths.rb +1 -1
  5. data/lib/libv8/version.rb +1 -1
  6. data/patches/0001-Build-a-standalone-static-library.patch +1 -1
  7. data/patches/0002-Don-t-compile-unnecessary-stuff.patch +9 -11
  8. data/patches/0003-Use-the-fPIC-flag-for-the-static-library.patch +1 -1
  9. data/patches/0004-Do-not-embed-debug-symbols-in-macOS-libraries.patch +1 -1
  10. data/patches/0005-Fix-GCC-7-build-errors.patch +1 -1
  11. data/spec/location_spec.rb +1 -1
  12. data/vendor/depot_tools/.gitattributes +1 -1
  13. data/vendor/depot_tools/bootstrap/win/manifest.txt +1 -1
  14. data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +1 -1
  15. data/vendor/depot_tools/bootstrap/win/win_tools.bat +1 -1
  16. data/vendor/depot_tools/cipd +2 -3
  17. data/vendor/depot_tools/cipd.ps1 +2 -6
  18. data/vendor/depot_tools/cipd_bin_setup.bat +1 -1
  19. data/vendor/depot_tools/cipd_bin_setup.sh +3 -1
  20. data/vendor/depot_tools/cipd_client_version +1 -1
  21. data/vendor/depot_tools/cpplint.py +0 -31
  22. data/vendor/depot_tools/gclient.py +162 -88
  23. data/vendor/depot_tools/gclient_utils.py +5 -0
  24. data/vendor/depot_tools/gerrit_client.py +0 -0
  25. data/vendor/depot_tools/gerrit_util.py +2 -2
  26. data/vendor/depot_tools/git_cl.py +25 -12
  27. data/vendor/depot_tools/infra/config/recipes.cfg +2 -2
  28. data/vendor/depot_tools/led +1 -1
  29. data/vendor/depot_tools/led.bat +1 -1
  30. data/vendor/depot_tools/my_activity.py +26 -16
  31. data/vendor/depot_tools/presubmit_canned_checks.py +1 -1
  32. data/vendor/depot_tools/presubmit_support.py +15 -4
  33. data/vendor/depot_tools/recipes/README.recipes.md +21 -14
  34. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +18 -11
  35. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref_custom.json +29 -0
  36. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_empty_revision.json +156 -0
  37. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +27 -1
  38. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +11 -0
  39. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +8 -9
  40. data/vendor/depot_tools/recipes/recipes.py +2 -2
  41. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +162 -0
  42. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.py +53 -0
  43. data/vendor/depot_tools/update_depot_tools +13 -7
  44. data/vendor/depot_tools/update_depot_tools.bat +7 -2
  45. data/vendor/depot_tools/vpython +1 -1
  46. data/vendor/depot_tools/vpython.bat +1 -1
  47. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +7 -3
  48. data/vendor/v8/AUTHORS +1 -0
  49. data/vendor/v8/codereview.settings +2 -4
  50. data/vendor/v8/include/v8-version.h +1 -1
  51. data/vendor/v8/src/builtins/builtins-array-gen.cc +1 -0
  52. data/vendor/v8/src/compiler/escape-analysis.cc +1 -4
  53. data/vendor/v8/src/compiler/load-elimination.cc +1 -1
  54. data/vendor/v8/src/d8.cc +1 -0
  55. data/vendor/v8/src/map-updater.cc +39 -2
  56. data/vendor/v8/src/map-updater.h +9 -2
  57. data/vendor/v8/src/objects-debug.cc +7 -1
  58. data/vendor/v8/src/objects.cc +33 -6
  59. data/vendor/v8/src/objects.h +0 -1
  60. data/vendor/v8/src/objects/map-inl.h +15 -0
  61. data/vendor/v8/src/objects/map.h +6 -0
  62. data/vendor/v8/src/v8.gyp +7 -0
  63. data/vendor/v8/src/wasm/wasm-module.cc +10 -8
  64. data/vendor/v8/tools/run-tests.py +1 -1
  65. metadata +6 -5
  66. data/vendor/depot_tools/win_toolchain/7z/7z.dll +0 -0
  67. data/vendor/depot_tools/win_toolchain/7z/7z.exe +0 -0
  68. data/vendor/depot_tools/win_toolchain/7z/LICENSE +0 -57
@@ -92,6 +92,11 @@ def IsGitSha(revision):
92
92
  return re.match('^[a-fA-F0-9]{6,40}$', revision) is not None
93
93
 
94
94
 
95
+ def IsFullGitSha(revision):
96
+ """Returns true if the given string is a valid hex-encoded full sha"""
97
+ return re.match('^[a-fA-F0-9]{40}$', revision) is not None
98
+
99
+
95
100
  def IsDateRevision(revision):
96
101
  """Returns true if the given revision is of the form "{ ... }"."""
97
102
  return bool(revision and re.match(r'^\{.+\}$', str(revision)))
File without changes
@@ -228,8 +228,8 @@ class GceAuthenticator(Authenticator):
228
228
  """
229
229
 
230
230
  _INFO_URL = 'http://metadata.google.internal'
231
- _ACQUIRE_URL = ('http://metadata/computeMetadata/v1/instance/'
232
- 'service-accounts/default/token')
231
+ _ACQUIRE_URL = ('%s/computeMetadata/v1/instance/'
232
+ 'service-accounts/default/token' % _INFO_URL)
233
233
  _ACQUIRE_HEADERS = {"Metadata-Flavor": "Google"}
234
234
 
235
235
  _cache_is_gce = None
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env python
2
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2
+ # Copyright (c) 2013 The Chromium Authors. All rights reserved.
3
3
  # Use of this source code is governed by a BSD-style license that can be
4
4
  # found in the LICENSE file.
5
5
 
@@ -3823,7 +3823,13 @@ class _GitCookiesChecker(object):
3823
3823
  @staticmethod
3824
3824
  def _parse_identity(identity):
3825
3825
  """Parses identity "git-<ldap>.example.com" into <ldap> and domain."""
3826
- username, domain = identity.split('.', 1)
3826
+ # Special case: users whose ldaps contain ".", which are generally not
3827
+ # distinguishable from sub-domains. But we do know typical domains:
3828
+ if identity.endswith('.chromium.org'):
3829
+ domain = 'chromium.org'
3830
+ username = identity[:-len('.chromium.org')]
3831
+ else:
3832
+ username, domain = identity.split('.', 1)
3827
3833
  if username.startswith('git-'):
3828
3834
  username = username[len('git-'):]
3829
3835
  return username, domain
@@ -5813,6 +5819,8 @@ def CMDformat(parser, args):
5813
5819
  help='Format javascript code with clang-format.')
5814
5820
  parser.add_option('--diff', action='store_true',
5815
5821
  help='Print diff to stdout rather than modifying files.')
5822
+ parser.add_option('--presubmit', action='store_true',
5823
+ help='Used when running the script from a presubmit.')
5816
5824
  opts, args = parser.parse_args(args)
5817
5825
 
5818
5826
  # Normalize any remaining args against the current path, so paths relative to
@@ -5955,16 +5963,21 @@ def CMDformat(parser, args):
5955
5963
  DieWithError("gn format failed on " + gn_diff_file +
5956
5964
  "\nTry running 'gn format' on this file manually.")
5957
5965
 
5958
- for xml_dir in GetDirtyMetricsDirs(diff_files):
5959
- tool_dir = os.path.join(top_dir, xml_dir)
5960
- cmd = [os.path.join(tool_dir, 'pretty_print.py'), '--non-interactive']
5961
- if opts.dry_run or opts.diff:
5962
- cmd.append('--diff')
5963
- stdout = RunCommand(cmd, cwd=top_dir)
5964
- if opts.diff:
5965
- sys.stdout.write(stdout)
5966
- if opts.dry_run and stdout:
5967
- return_value = 2 # Not formatted.
5966
+ # Skip the metrics formatting from the global presubmit hook. These files have
5967
+ # a separate presubmit hook that issues an error if the files need formatting,
5968
+ # whereas the top-level presubmit script merely issues a warning. Formatting
5969
+ # these files is somewhat slow, so it's important not to duplicate the work.
5970
+ if not opts.presubmit:
5971
+ for xml_dir in GetDirtyMetricsDirs(diff_files):
5972
+ tool_dir = os.path.join(top_dir, xml_dir)
5973
+ cmd = [os.path.join(tool_dir, 'pretty_print.py'), '--non-interactive']
5974
+ if opts.dry_run or opts.diff:
5975
+ cmd.append('--diff')
5976
+ stdout = RunCommand(cmd, cwd=top_dir)
5977
+ if opts.diff:
5978
+ sys.stdout.write(stdout)
5979
+ if opts.dry_run and stdout:
5980
+ return_value = 2 # Not formatted.
5968
5981
 
5969
5982
  return return_value
5970
5983
 
@@ -15,8 +15,8 @@
15
15
  "deps": {
16
16
  "recipe_engine": {
17
17
  "branch": "master",
18
- "revision": "8e8339afbdb986a9195a97cb2c173984bdd4b758",
19
- "url": "https://chromium.googlesource.com/external/github.com/luci/recipes-py.git"
18
+ "revision": "d0acc08657c0d71e8388c6e2903e2b7aa205f0d6",
19
+ "url": "https://chromium.googlesource.com/infra/luci/recipes-py.git"
20
20
  }
21
21
  },
22
22
  "project_id": "depot_tools",
@@ -7,6 +7,6 @@
7
7
  MYPATH=$(dirname "${BASH_SOURCE[0]}")
8
8
 
9
9
  source "$MYPATH/cipd_bin_setup.sh"
10
- cipd_bin_setup
10
+ cipd_bin_setup &> /dev/null
11
11
 
12
12
  exec "$MYPATH/.cipd_bin/led" "$@"
@@ -3,5 +3,5 @@
3
3
  :: Use of this source code is governed by a BSD-style license that can be
4
4
  :: found in the LICENSE file.
5
5
 
6
- call "%~dp0\cipd_bin_setup.bat"
6
+ call "%~dp0\cipd_bin_setup.bat" > nul 2>&1
7
7
  "%~dp0\.cipd_bin\led.exe" %*
@@ -70,6 +70,7 @@ rietveld_instances = [
70
70
  'supports_owner_modified_query': True,
71
71
  'requires_auth': False,
72
72
  'email_domain': 'chromium.org',
73
+ 'short_url_protocol': 'https',
73
74
  },
74
75
  {
75
76
  'url': 'chromereviews.googleplex.com',
@@ -96,10 +97,12 @@ gerrit_instances = [
96
97
  {
97
98
  'url': 'chromium-review.googlesource.com',
98
99
  'shorturl': 'crrev.com/c',
100
+ 'short_url_protocol': 'https',
99
101
  },
100
102
  {
101
103
  'url': 'chrome-internal-review.googlesource.com',
102
104
  'shorturl': 'crrev.com/i',
105
+ 'short_url_protocol': 'https',
103
106
  },
104
107
  {
105
108
  'url': 'android-review.googlesource.com',
@@ -110,6 +113,7 @@ google_code_projects = [
110
113
  {
111
114
  'name': 'chromium',
112
115
  'shorturl': 'crbug.com',
116
+ 'short_url_protocol': 'https',
113
117
  },
114
118
  {
115
119
  'name': 'google-breakpad',
@@ -299,11 +303,14 @@ class MyActivity(object):
299
303
 
300
304
  ret['reviewers'] = set(issue['reviewers'])
301
305
 
302
- shorturl = instance['url']
303
306
  if 'shorturl' in instance:
304
- shorturl = instance['shorturl']
307
+ url = instance['shorturl']
308
+ protocol = instance.get('short_url_protocol', 'http')
309
+ else:
310
+ url = instance['url']
311
+ protocol = 'https'
305
312
 
306
- ret['review_url'] = 'http://%s/%d' % (shorturl, issue['issue'])
313
+ ret['review_url'] = '%s://%s/%d' % (protocol, url, issue['issue'])
307
314
 
308
315
  # Rietveld sometimes has '\r\n' instead of '\n'.
309
316
  ret['header'] = issue['description'].replace('\r', '').split('\n')[0]
@@ -388,10 +395,13 @@ class MyActivity(object):
388
395
  '+{insertions},-{deletions}',
389
396
  **issue)
390
397
  ret['status'] = issue['status']
391
- ret['review_url'] = issue['url']
392
398
  if 'shorturl' in instance:
393
- ret['review_url'] = 'http://%s/%s' % (instance['shorturl'],
394
- issue['number'])
399
+ protocol = instance.get('short_url_protocol', 'http')
400
+ ret['review_url'] = '%s://%s/%s' % (protocol, instance['shorturl'],
401
+ issue['number'])
402
+ else:
403
+ ret['review_url'] = issue['url']
404
+
395
405
  ret['header'] = issue['subject']
396
406
  ret['owner'] = issue['owner']['email']
397
407
  ret['author'] = ret['owner']
@@ -425,12 +435,14 @@ class MyActivity(object):
425
435
  '+{insertions},-{deletions}',
426
436
  **issue)
427
437
  ret['status'] = issue['status']
428
- ret['review_url'] = 'https://%s/%s' % (instance['url'], issue['_number'])
429
438
  if 'shorturl' in instance:
430
- # TODO(deymo): Move this short link to https once crosreview.com supports
431
- # it.
432
- ret['review_url'] = 'http://%s/%s' % (instance['shorturl'],
433
- issue['_number'])
439
+ protocol = instance.get('short_url_protocol', 'http')
440
+ url = instance['shorturl']
441
+ else:
442
+ protocol = 'https'
443
+ url = instance['url']
444
+ ret['review_url'] = '%s://%s/%s' % (protocol, url, issue['_number'])
445
+
434
446
  ret['header'] = issue['subject']
435
447
  ret['owner'] = issue['owner']['email']
436
448
  ret['author'] = ret['owner']
@@ -487,7 +499,8 @@ class MyActivity(object):
487
499
  items = content['items']
488
500
  for item in items:
489
501
  if instance.get('shorturl'):
490
- item_url = 'https://%s/%d' % (instance['shorturl'], item['id'])
502
+ protocol = instance.get('short_url_protocol', 'http')
503
+ item_url = '%s://%s/%d' % (protocol, instance['shorturl'], item['id'])
491
504
  else:
492
505
  item_url = 'https://bugs.chromium.org/p/%s/issues/detail?id=%d' % (
493
506
  instance['name'], item['id'])
@@ -502,9 +515,6 @@ class MyActivity(object):
502
515
  'labels': [],
503
516
  'components': []
504
517
  }
505
- if 'shorturl' in instance:
506
- issue['url'] = 'http://%s/%d' % (instance['shorturl'], item['id'])
507
-
508
518
  if 'owner' in item:
509
519
  issue['owner'] = item['owner']['name']
510
520
  else:
@@ -902,7 +912,7 @@ def main():
902
912
  logging.info('Printing output to "%s"', options.output)
903
913
  sys.stdout = output_file
904
914
  except (IOError, OSError) as e:
905
- logging.error('Unable to write output: %s', e)
915
+ logging.error('Unable to write output: %s', e)
906
916
  else:
907
917
  if options.json:
908
918
  my_activity.dump_json()
@@ -1088,7 +1088,7 @@ def PanProjectChecks(input_api, output_api,
1088
1088
 
1089
1089
  def CheckPatchFormatted(input_api, output_api, check_js=False):
1090
1090
  import git_cl
1091
- cmd = ['cl', 'format', '--dry-run']
1091
+ cmd = ['cl', 'format', '--dry-run', '--presubmit']
1092
1092
  if check_js:
1093
1093
  cmd.append('--js')
1094
1094
  cmd.append(input_api.PresubmitLocalPath())
@@ -12,6 +12,7 @@ __version__ = '1.8.0'
12
12
  # caching (between all different invocations of presubmit scripts for a given
13
13
  # change). We should add it as our presubmit scripts start feeling slow.
14
14
 
15
+ import ast # Exposed through the API.
15
16
  import cpplint
16
17
  import cPickle # Exposed through the API.
17
18
  import cStringIO # Exposed through the API.
@@ -247,10 +248,19 @@ class GerritAccessor(object):
247
248
  return self.GetChangeInfo(issue)['owner']['email']
248
249
 
249
250
  def GetChangeReviewers(self, issue, approving_only=True):
250
- cr = self.GetChangeInfo(issue)['labels']['Code-Review']
251
- max_value = max(int(k) for k in cr['values'].keys())
252
- return [r.get('email') for r in cr.get('all', [])
253
- if not approving_only or r.get('value', 0) == max_value]
251
+ changeinfo = self.GetChangeInfo(issue)
252
+ if approving_only:
253
+ labelinfo = changeinfo.get('labels', {}).get('Code-Review', {})
254
+ values = labelinfo.get('values', {}).keys()
255
+ try:
256
+ max_value = max(int(v) for v in values)
257
+ reviewers = [r for r in labelinfo.get('all', [])
258
+ if r.get('value', 0) == max_value]
259
+ except ValueError: # values is the empty list
260
+ reviewers = []
261
+ else:
262
+ reviewers = changeinfo.get('reviewers', {}).get('REVIEWER', [])
263
+ return [r.get('email') for r in reviewers]
254
264
 
255
265
 
256
266
  class OutputApi(object):
@@ -393,6 +403,7 @@ class InputApi(object):
393
403
 
394
404
  # We expose various modules and functions as attributes of the input_api
395
405
  # so that presubmit scripts don't have to import them.
406
+ self.ast = ast
396
407
  self.basename = os.path.basename
397
408
  self.cPickle = cPickle
398
409
  self.cpplint = cpplint
@@ -22,6 +22,7 @@
22
22
  * [cipd:examples/full](#recipes-cipd_examples_full)
23
23
  * [cipd:examples/platform_suffix](#recipes-cipd_examples_platform_suffix)
24
24
  * [depot_tools:examples/full](#recipes-depot_tools_examples_full)
25
+ * [fetch_end_to_end_test](#recipes-fetch_end_to_end_test)
25
26
  * [gclient:examples/full](#recipes-gclient_examples_full)
26
27
  * [gclient:tests/patch_project](#recipes-gclient_tests_patch_project)
27
28
  * [gerrit:examples/full](#recipes-gerrit_examples_full)
@@ -47,14 +48,14 @@ Recipe module to ensure a checkout is consistent on a bot.
47
48
 
48
49
  Wrapper for easy calling of bot_update.
49
50
 
50
- &mdash; **def [apply\_gerrit\_ref](/recipes/recipe_modules/bot_update/api.py#49)(self, root, gerrit_no_reset=False, gerrit_no_rebase_patch_ref=False, \*\*kwargs):**
51
+ &mdash; **def [apply\_gerrit\_ref](/recipes/recipe_modules/bot_update/api.py#49)(self, root, gerrit_no_reset=False, gerrit_no_rebase_patch_ref=False, gerrit_repo=None, gerrit_ref=None, step_name='apply_gerrit', \*\*kwargs):**
51
52
 
52
- &mdash; **def [deapply\_patch](/recipes/recipe_modules/bot_update/api.py#427)(self, bot_update_step):**
53
+ &mdash; **def [deapply\_patch](/recipes/recipe_modules/bot_update/api.py#434)(self, bot_update_step):**
53
54
 
54
55
  Deapplies a patch, taking care of DEPS and solution revisions properly.
55
56
 
56
57
 
57
- &mdash; **def [ensure\_checkout](/recipes/recipe_modules/bot_update/api.py#69)(self, gclient_config=None, suffix=None, patch=True, update_presentation=True, patch_root=None, no_shallow=False, with_branch_heads=False, with_tags=False, refs=None, patch_oauth2=False, oauth2_json=False, use_site_config_creds=True, clobber=False, root_solution_revision=None, rietveld=None, issue=None, patchset=None, gerrit_no_reset=False, gerrit_no_rebase_patch_ref=False, disable_syntax_validation=False, \*\*kwargs):**
58
+ &mdash; **def [ensure\_checkout](/recipes/recipe_modules/bot_update/api.py#71)(self, gclient_config=None, suffix=None, patch=True, update_presentation=True, patch_root=None, no_shallow=False, with_branch_heads=False, with_tags=False, refs=None, patch_oauth2=False, oauth2_json=False, use_site_config_creds=True, clobber=False, root_solution_revision=None, rietveld=None, issue=None, patchset=None, gerrit_no_reset=False, gerrit_no_rebase_patch_ref=False, disable_syntax_validation=False, \*\*kwargs):**
58
59
 
59
60
  Args:
60
61
  use_site_config_creds: If the oauth2 credentials are in the buildbot
@@ -71,7 +72,7 @@ Args:
71
72
  Needed as migration paths for recipes dealing with older revisions,
72
73
  such as bisect.
73
74
 
74
- &mdash; **def [get\_project\_revision\_properties](/recipes/recipe_modules/bot_update/api.py#404)(self, project_name, gclient_config=None):**
75
+ &mdash; **def [get\_project\_revision\_properties](/recipes/recipe_modules/bot_update/api.py#411)(self, project_name, gclient_config=None):**
75
76
 
76
77
  Returns all property names used for storing the checked-out revision of
77
78
  a given project.
@@ -764,6 +765,11 @@ like checkout or compile), and some of these tests have failed.
764
765
  [DEPS](/recipes/recipe_modules/depot_tools/examples/full.py#5): [depot\_tools](#recipe_modules-depot_tools), [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/step][recipe_engine/recipe_modules/step]
765
766
 
766
767
  &mdash; **def [RunSteps](/recipes/recipe_modules/depot_tools/examples/full.py#13)(api):**
768
+ ### *recipes* / [fetch\_end\_to\_end\_test](/recipes/recipes/fetch_end_to_end_test.py)
769
+
770
+ [DEPS](/recipes/recipes/fetch_end_to_end_test.py#5): [bot\_update](#recipe_modules-bot_update), [gclient](#recipe_modules-gclient), [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step]
771
+
772
+ &mdash; **def [RunSteps](/recipes/recipes/fetch_end_to_end_test.py#16)(api):**
767
773
  ### *recipes* / [gclient:examples/full](/recipes/recipe_modules/gclient/examples/full.py)
768
774
 
769
775
  [DEPS](/recipes/recipe_modules/gclient/examples/full.py#5): [gclient](#recipe_modules-gclient), [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
@@ -822,13 +828,14 @@ Move things around in a loop!
822
828
 
823
829
  &mdash; **def [RunSteps](/recipes/recipe_modules/tryserver/examples/full.py#17)(api):**
824
830
 
825
- [recipe_engine/recipe_modules/context]: https://github.com/luci/recipes-py/blob/8e8339afbdb986a9195a97cb2c173984bdd4b758/README.recipes.md#recipe_modules--context
826
- [recipe_engine/recipe_modules/json]: https://github.com/luci/recipes-py/blob/8e8339afbdb986a9195a97cb2c173984bdd4b758/README.recipes.md#recipe_modules--json
827
- [recipe_engine/recipe_modules/path]: https://github.com/luci/recipes-py/blob/8e8339afbdb986a9195a97cb2c173984bdd4b758/README.recipes.md#recipe_modules--path
828
- [recipe_engine/recipe_modules/platform]: https://github.com/luci/recipes-py/blob/8e8339afbdb986a9195a97cb2c173984bdd4b758/README.recipes.md#recipe_modules--platform
829
- [recipe_engine/recipe_modules/properties]: https://github.com/luci/recipes-py/blob/8e8339afbdb986a9195a97cb2c173984bdd4b758/README.recipes.md#recipe_modules--properties
830
- [recipe_engine/recipe_modules/python]: https://github.com/luci/recipes-py/blob/8e8339afbdb986a9195a97cb2c173984bdd4b758/README.recipes.md#recipe_modules--python
831
- [recipe_engine/recipe_modules/raw_io]: https://github.com/luci/recipes-py/blob/8e8339afbdb986a9195a97cb2c173984bdd4b758/README.recipes.md#recipe_modules--raw_io
832
- [recipe_engine/recipe_modules/step]: https://github.com/luci/recipes-py/blob/8e8339afbdb986a9195a97cb2c173984bdd4b758/README.recipes.md#recipe_modules--step
833
- [recipe_engine/recipe_modules/url]: https://github.com/luci/recipes-py/blob/8e8339afbdb986a9195a97cb2c173984bdd4b758/README.recipes.md#recipe_modules--url
834
- [recipe_engine/wkt/RecipeApi]: https://github.com/luci/recipes-py/blob/8e8339afbdb986a9195a97cb2c173984bdd4b758/recipe_engine/recipe_api.py#L884
831
+ [recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/d0acc08657c0d71e8388c6e2903e2b7aa205f0d6/README.recipes.md#recipe_modules-context
832
+ [recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/d0acc08657c0d71e8388c6e2903e2b7aa205f0d6/README.recipes.md#recipe_modules-file
833
+ [recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/d0acc08657c0d71e8388c6e2903e2b7aa205f0d6/README.recipes.md#recipe_modules-json
834
+ [recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/d0acc08657c0d71e8388c6e2903e2b7aa205f0d6/README.recipes.md#recipe_modules-path
835
+ [recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/d0acc08657c0d71e8388c6e2903e2b7aa205f0d6/README.recipes.md#recipe_modules-platform
836
+ [recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/d0acc08657c0d71e8388c6e2903e2b7aa205f0d6/README.recipes.md#recipe_modules-properties
837
+ [recipe_engine/recipe_modules/python]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/d0acc08657c0d71e8388c6e2903e2b7aa205f0d6/README.recipes.md#recipe_modules-python
838
+ [recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/d0acc08657c0d71e8388c6e2903e2b7aa205f0d6/README.recipes.md#recipe_modules-raw_io
839
+ [recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/d0acc08657c0d71e8388c6e2903e2b7aa205f0d6/README.recipes.md#recipe_modules-step
840
+ [recipe_engine/recipe_modules/url]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/d0acc08657c0d71e8388c6e2903e2b7aa205f0d6/README.recipes.md#recipe_modules-url
841
+ [recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/d0acc08657c0d71e8388c6e2903e2b7aa205f0d6/recipe_engine/recipe_api.py#992
@@ -47,12 +47,14 @@ class BotUpdateApi(recipe_api.RecipeApi):
47
47
  # DO NOT USE.
48
48
  # TODO(tandrii): refactor this into tryserver.maybe_apply_patch
49
49
  def apply_gerrit_ref(self, root, gerrit_no_reset=False,
50
- gerrit_no_rebase_patch_ref=False, **kwargs):
50
+ gerrit_no_rebase_patch_ref=False,
51
+ gerrit_repo=None, gerrit_ref=None,
52
+ step_name='apply_gerrit', **kwargs):
51
53
  apply_gerrit_path = self.resource('apply_gerrit.py')
52
54
  kwargs.setdefault('infra_step', True)
53
55
  cmd = [
54
- '--gerrit_repo', self._repository,
55
- '--gerrit_ref', self._gerrit_ref or '',
56
+ '--gerrit_repo', gerrit_repo or self._repository,
57
+ '--gerrit_ref', gerrit_ref or self._gerrit_ref or '',
56
58
  '--root', str(root),
57
59
  ]
58
60
  if gerrit_no_reset:
@@ -64,7 +66,7 @@ class BotUpdateApi(recipe_api.RecipeApi):
64
66
  'PATH': [self.m.depot_tools.root],
65
67
  }
66
68
  with self.m.context(env_prefixes=env_prefixes):
67
- return self.m.python('apply_gerrit', apply_gerrit_path, cmd, **kwargs)
69
+ return self.m.python(step_name, apply_gerrit_path, cmd, **kwargs)
68
70
 
69
71
  def ensure_checkout(self, gclient_config=None, suffix=None,
70
72
  patch=True, update_presentation=True,
@@ -194,28 +196,33 @@ class BotUpdateApi(recipe_api.RecipeApi):
194
196
  ['--output_json', self.m.json.output()],
195
197
  ]
196
198
 
197
-
198
- # Collect all fixed revisions to simulate them in the json output.
199
- # Fixed revision are the explicit input revisions of bot_update.py, i.e.
200
- # every command line parameter "--revision name@value".
201
- fixed_revisions = {}
202
-
199
+ # Compute requested revisions.
203
200
  revisions = {}
204
201
  for solution in cfg.solutions:
205
202
  if solution.revision:
206
203
  revisions[solution.name] = solution.revision
207
204
  elif solution == cfg.solutions[0]:
205
+ # TODO(machenbach): We should explicitly pass HEAD for ALL solutions
206
+ # that don't specify anything else.
208
207
  revisions[solution.name] = (
209
208
  self._parent_got_revision or
210
209
  self._revision or
211
210
  'HEAD')
212
211
  if self.m.gclient.c and self.m.gclient.c.revisions:
213
- revisions.update(self.m.gclient.c.revisions)
212
+ # Only update with non-empty values. Some recipe might otherwise
213
+ # overwrite the HEAD default with an empty string.
214
+ revisions.update(
215
+ (k, v) for k, v in self.m.gclient.c.revisions.iteritems() if v)
214
216
  if cfg.solutions and root_solution_revision:
215
217
  revisions[cfg.solutions[0].name] = root_solution_revision
216
218
  # Allow for overrides required to bisect into rolls.
217
219
  revisions.update(self._deps_revision_overrides)
220
+
218
221
  # Compute command-line parameters for requested revisions.
222
+ # Also collect all fixed revisions to simulate them in the json output.
223
+ # Fixed revision are the explicit input revisions of bot_update.py, i.e.
224
+ # every command line parameter "--revision name@value".
225
+ fixed_revisions = {}
219
226
  for name, revision in sorted(revisions.items()):
220
227
  fixed_revision = self.m.gclient.resolve_revision(revision)
221
228
  if fixed_revision:
@@ -0,0 +1,29 @@
1
+ [
2
+ {
3
+ "cmd": [
4
+ "python",
5
+ "-u",
6
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/apply_gerrit.py",
7
+ "--gerrit_repo",
8
+ "https://custom/repo",
9
+ "--gerrit_ref",
10
+ "refs/changes/custom/1234567/1",
11
+ "--root",
12
+ "/tmp/test/root",
13
+ "--gerrit_no_reset",
14
+ "--gerrit_no_rebase_patch_ref"
15
+ ],
16
+ "env_prefixes": {
17
+ "PATH": [
18
+ "RECIPE_PACKAGE_REPO[depot_tools]"
19
+ ]
20
+ },
21
+ "infra_step": true,
22
+ "name": "Custom apply gerrit step"
23
+ },
24
+ {
25
+ "name": "$result",
26
+ "recipe_result": null,
27
+ "status_code": 0
28
+ }
29
+ ]
@@ -0,0 +1,156 @@
1
+ [
2
+ {
3
+ "cmd": [
4
+ "python",
5
+ "-u",
6
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
7
+ "--spec-path",
8
+ "cache_dir = '[GIT_CACHE]'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': True, 'name': 'src', 'url': 'https://chromium.googlesource.com/chromium/src.git'}]",
9
+ "--patch_root",
10
+ "src",
11
+ "--revision_mapping_file",
12
+ "{\"got_angle_revision\": \"src/third_party/angle\", \"got_cr_revision\": \"src\", \"got_revision\": \"src\", \"got_v8_revision\": \"src/v8\"}",
13
+ "--git-cache-dir",
14
+ "[GIT_CACHE]",
15
+ "--cleanup-dir",
16
+ "[CLEANUP]/bot_update",
17
+ "--issue",
18
+ "12345",
19
+ "--patchset",
20
+ "654321",
21
+ "--rietveld_server",
22
+ "https://rietveld.example.com/",
23
+ "--output_json",
24
+ "/path/to/tmp/json",
25
+ "--revision",
26
+ "src@HEAD",
27
+ "--disable-syntax-validation"
28
+ ],
29
+ "env_prefixes": {
30
+ "PATH": [
31
+ "RECIPE_PACKAGE_REPO[depot_tools]"
32
+ ]
33
+ },
34
+ "infra_step": true,
35
+ "name": "bot_update",
36
+ "~followup_annotations": [
37
+ "@@@STEP_TEXT@Some step text@@@",
38
+ "@@@STEP_LOG_LINE@json.output@{@@@",
39
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
40
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
41
+ "@@@STEP_LOG_LINE@json.output@ \"src\": \"HEAD\"@@@",
42
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
43
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {@@@",
44
+ "@@@STEP_LOG_LINE@json.output@ \"src\": {@@@",
45
+ "@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/src.git\", @@@",
46
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\"@@@",
47
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
48
+ "@@@STEP_LOG_LINE@json.output@ \"src/third_party/angle\": {@@@",
49
+ "@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/src/third_party/angle.git\", @@@",
50
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"fac9503c46405f77757b9a728eb85b8d7bc6080c\"@@@",
51
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
52
+ "@@@STEP_LOG_LINE@json.output@ \"src/v8\": {@@@",
53
+ "@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/src/v8.git\", @@@",
54
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"801ada225ddc271c132c3a35f03975671d43e399\"@@@",
55
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
56
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
57
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
58
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"src\", @@@",
59
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
60
+ "@@@STEP_LOG_LINE@json.output@ \"got_angle_revision\": \"fac9503c46405f77757b9a728eb85b8d7bc6080c\", @@@",
61
+ "@@@STEP_LOG_LINE@json.output@ \"got_angle_revision_cp\": \"refs/heads/master@{#297276}\", @@@",
62
+ "@@@STEP_LOG_LINE@json.output@ \"got_cr_revision\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\", @@@",
63
+ "@@@STEP_LOG_LINE@json.output@ \"got_cr_revision_cp\": \"refs/heads/master@{#170242}\", @@@",
64
+ "@@@STEP_LOG_LINE@json.output@ \"got_revision\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\", @@@",
65
+ "@@@STEP_LOG_LINE@json.output@ \"got_revision_cp\": \"refs/heads/master@{#170242}\", @@@",
66
+ "@@@STEP_LOG_LINE@json.output@ \"got_v8_revision\": \"801ada225ddc271c132c3a35f03975671d43e399\", @@@",
67
+ "@@@STEP_LOG_LINE@json.output@ \"got_v8_revision_cp\": \"refs/heads/master@{#43426}\"@@@",
68
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
69
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"src\", @@@",
70
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
71
+ "@@@STEP_LOG_LINE@json.output@}@@@",
72
+ "@@@STEP_LOG_END@json.output@@@",
73
+ "@@@SET_BUILD_PROPERTY@got_angle_revision@\"fac9503c46405f77757b9a728eb85b8d7bc6080c\"@@@",
74
+ "@@@SET_BUILD_PROPERTY@got_angle_revision_cp@\"refs/heads/master@{#297276}\"@@@",
75
+ "@@@SET_BUILD_PROPERTY@got_cr_revision@\"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\"@@@",
76
+ "@@@SET_BUILD_PROPERTY@got_cr_revision_cp@\"refs/heads/master@{#170242}\"@@@",
77
+ "@@@SET_BUILD_PROPERTY@got_revision@\"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\"@@@",
78
+ "@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#170242}\"@@@",
79
+ "@@@SET_BUILD_PROPERTY@got_v8_revision@\"801ada225ddc271c132c3a35f03975671d43e399\"@@@",
80
+ "@@@SET_BUILD_PROPERTY@got_v8_revision_cp@\"refs/heads/master@{#43426}\"@@@"
81
+ ]
82
+ },
83
+ {
84
+ "cmd": [
85
+ "python",
86
+ "-u",
87
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
88
+ "--spec-path",
89
+ "cache_dir = '[GIT_CACHE]'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': True, 'name': 'src', 'url': 'https://chromium.googlesource.com/chromium/src.git'}]",
90
+ "--patch_root",
91
+ "src",
92
+ "--revision_mapping_file",
93
+ "{\"got_angle_revision\": \"src/third_party/angle\", \"got_cr_revision\": \"src\", \"got_revision\": \"src\", \"got_v8_revision\": \"src/v8\"}",
94
+ "--git-cache-dir",
95
+ "[GIT_CACHE]",
96
+ "--cleanup-dir",
97
+ "[CLEANUP]/bot_update",
98
+ "--rietveld_server",
99
+ "https://rietveld.example.com/",
100
+ "--output_json",
101
+ "/path/to/tmp/json",
102
+ "--revision",
103
+ "src@f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9"
104
+ ],
105
+ "env_prefixes": {
106
+ "PATH": [
107
+ "RECIPE_PACKAGE_REPO[depot_tools]"
108
+ ]
109
+ },
110
+ "infra_step": true,
111
+ "name": "bot_update (without patch)",
112
+ "~followup_annotations": [
113
+ "@@@STEP_TEXT@Some step text@@@",
114
+ "@@@STEP_LOG_LINE@json.output@{@@@",
115
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
116
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
117
+ "@@@STEP_LOG_LINE@json.output@ \"src\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\"@@@",
118
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
119
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {@@@",
120
+ "@@@STEP_LOG_LINE@json.output@ \"src\": {@@@",
121
+ "@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/src.git\", @@@",
122
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\"@@@",
123
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
124
+ "@@@STEP_LOG_LINE@json.output@ \"src/third_party/angle\": {@@@",
125
+ "@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/src/third_party/angle.git\", @@@",
126
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"fac9503c46405f77757b9a728eb85b8d7bc6080c\"@@@",
127
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
128
+ "@@@STEP_LOG_LINE@json.output@ \"src/v8\": {@@@",
129
+ "@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/src/v8.git\", @@@",
130
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"801ada225ddc271c132c3a35f03975671d43e399\"@@@",
131
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
132
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
133
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
134
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"src\", @@@",
135
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
136
+ "@@@STEP_LOG_LINE@json.output@ \"got_angle_revision\": \"fac9503c46405f77757b9a728eb85b8d7bc6080c\", @@@",
137
+ "@@@STEP_LOG_LINE@json.output@ \"got_angle_revision_cp\": \"refs/heads/master@{#297276}\", @@@",
138
+ "@@@STEP_LOG_LINE@json.output@ \"got_cr_revision\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\", @@@",
139
+ "@@@STEP_LOG_LINE@json.output@ \"got_cr_revision_cp\": \"refs/heads/master@{#170242}\", @@@",
140
+ "@@@STEP_LOG_LINE@json.output@ \"got_revision\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\", @@@",
141
+ "@@@STEP_LOG_LINE@json.output@ \"got_revision_cp\": \"refs/heads/master@{#170242}\", @@@",
142
+ "@@@STEP_LOG_LINE@json.output@ \"got_v8_revision\": \"801ada225ddc271c132c3a35f03975671d43e399\", @@@",
143
+ "@@@STEP_LOG_LINE@json.output@ \"got_v8_revision_cp\": \"refs/heads/master@{#43426}\"@@@",
144
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
145
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"src\", @@@",
146
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
147
+ "@@@STEP_LOG_LINE@json.output@}@@@",
148
+ "@@@STEP_LOG_END@json.output@@@"
149
+ ]
150
+ },
151
+ {
152
+ "name": "$result",
153
+ "recipe_result": null,
154
+ "status_code": 0
155
+ }
156
+ ]