libv8 6.0.286.44.0beta1 → 6.0.286.54.0beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ ]