libv8 6.2.414.42.1 → 6.3.292.48.0beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/libv8/version.rb +1 -1
  4. data/vendor/depot_tools/PRESUBMIT.py +38 -0
  5. data/vendor/depot_tools/bootstrap/win/manifest.txt +3 -1
  6. data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +2 -0
  7. data/vendor/depot_tools/checkout.py +1 -1
  8. data/vendor/depot_tools/cipd_manifest.txt +1 -1
  9. data/vendor/depot_tools/gclient_scm.py +23 -14
  10. data/vendor/depot_tools/gerrit_util.py +15 -10
  11. data/vendor/depot_tools/git_cl.py +23 -11
  12. data/vendor/depot_tools/git_drover.py +2 -1
  13. data/vendor/depot_tools/git_upstream_diff.py +2 -1
  14. data/vendor/depot_tools/gsutil.py +1 -1
  15. data/vendor/depot_tools/infra/config/recipes.cfg +1 -1
  16. data/vendor/depot_tools/presubmit_canned_checks.py +8 -1
  17. data/vendor/depot_tools/presubmit_support.py +2 -1
  18. data/vendor/depot_tools/recipes/README.recipes.md +56 -43
  19. data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +1 -0
  20. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +1 -4
  21. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +105 -0
  22. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +5 -0
  23. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/__init__.py +6 -0
  24. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +25 -0
  25. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +12 -0
  26. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +75 -0
  27. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +12 -0
  28. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +10 -1
  29. data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +13 -11
  30. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +2 -0
  31. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +2 -0
  32. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_rietveld_patch.json +2 -0
  33. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_rietveld_patch_new.json +2 -0
  34. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +2 -0
  35. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +2 -0
  36. data/vendor/depot_tools/recipes/trigger_recipe_roller.txt +1 -0
  37. data/vendor/depot_tools/roll_dep.py +116 -78
  38. data/vendor/depot_tools/scm.py +6 -4
  39. data/vendor/depot_tools/split_cl.py +45 -18
  40. metadata +7 -5
  41. data/patches/0005-avoid-constructor-inheritance-due-to-compilation-iss.patch +0 -81
@@ -1038,7 +1038,8 @@ class GitChange(Change):
1038
1038
  """List all files under source control in the repo."""
1039
1039
  root = root or self.RepositoryRoot()
1040
1040
  return subprocess.check_output(
1041
- ['git', 'ls-files', '--', '.'], cwd=root).splitlines()
1041
+ ['git', '-c', 'core.quotePath=false', 'ls-files', '--', '.'],
1042
+ cwd=root).splitlines()
1042
1043
 
1043
1044
 
1044
1045
  def ListRelevantPresubmitFiles(files, root):
@@ -5,7 +5,7 @@
5
5
  **[Recipe Modules](#Recipe-Modules)**
6
6
  * [bot_update](#recipe_modules-bot_update) — Recipe module to ensure a checkout is consistent on a bot.
7
7
  * [cipd](#recipe_modules-cipd)
8
- * [depot_tools](#recipe_modules-depot_tools)
8
+ * [depot_tools](#recipe_modules-depot_tools) — The `depot_tools` module provides safe functions to access paths within the depot_tools repo.
9
9
  * [gclient](#recipe_modules-gclient)
10
10
  * [gerrit](#recipe_modules-gerrit)
11
11
  * [git](#recipe_modules-git)
@@ -38,7 +38,7 @@
38
38
 
39
39
  ### *recipe_modules* / [bot\_update](/recipes/recipe_modules/bot_update)
40
40
 
41
- [DEPS](/recipes/recipe_modules/bot_update/__init__.py#1): [depot\_tools](#recipe_modules-depot_tools), [gclient](#recipe_modules-gclient), [gerrit](#recipe_modules-gerrit), [rietveld](#recipe_modules-rietveld), [tryserver](#recipe_modules-tryserver), [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/source\_manifest][recipe_engine/recipe_modules/source_manifest], [recipe\_engine/step][recipe_engine/recipe_modules/step]
41
+ [DEPS](/recipes/recipe_modules/bot_update/__init__.py#1): [depot\_tools](#recipe_modules-depot_tools), [gclient](#recipe_modules-gclient), [gerrit](#recipe_modules-gerrit), [rietveld](#recipe_modules-rietveld), [tryserver](#recipe_modules-tryserver), [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/source\_manifest][recipe_engine/recipe_modules/source_manifest], [recipe\_engine/step][recipe_engine/recipe_modules/step]
42
42
 
43
43
  Recipe module to ensure a checkout is consistent on a bot.
44
44
 
@@ -48,14 +48,14 @@ Recipe module to ensure a checkout is consistent on a bot.
48
48
 
49
49
  Wrapper for easy calling of bot_update.
50
50
 
51
- — **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
+ — **def [apply\_gerrit\_ref](/recipes/recipe_modules/bot_update/api.py#46)(self, root, gerrit_no_reset=False, gerrit_no_rebase_patch_ref=False, gerrit_repo=None, gerrit_ref=None, step_name='apply_gerrit', \*\*kwargs):**
52
52
 
53
- — **def [deapply\_patch](/recipes/recipe_modules/bot_update/api.py#445)(self, bot_update_step):**
53
+ — **def [deapply\_patch](/recipes/recipe_modules/bot_update/api.py#442)(self, bot_update_step):**
54
54
 
55
55
  Deapplies a patch, taking care of DEPS and solution revisions properly.
56
56
 
57
57
 
58
- — **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, manifest_name=None, \*\*kwargs):**
58
+ — **def [ensure\_checkout](/recipes/recipe_modules/bot_update/api.py#68)(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, manifest_name=None, \*\*kwargs):**
59
59
 
60
60
  Args:
61
61
  use_site_config_creds: If the oauth2 credentials are in the buildbot
@@ -74,7 +74,7 @@ Args:
74
74
  manifest_name: The name of the manifest to upload to LogDog. This must
75
75
  be unique for the whole build.
76
76
 
77
- — **def [get\_project\_revision\_properties](/recipes/recipe_modules/bot_update/api.py#422)(self, project_name, gclient_config=None):**
77
+ — **def [get\_project\_revision\_properties](/recipes/recipe_modules/bot_update/api.py#419)(self, project_name, gclient_config=None):**
78
78
 
79
79
  Returns all property names used for storing the checked-out revision of
80
80
  a given project.
@@ -88,7 +88,7 @@ Args:
88
88
  Returns (list of str): All properties that'll hold the checked-out revision
89
89
  of the given project. An empty list if no such properties exist.
90
90
 
91
- &emsp; **@property**<br>&mdash; **def [last\_returned\_properties](/recipes/recipe_modules/bot_update/api.py#43)(self):**
91
+ &emsp; **@property**<br>&mdash; **def [last\_returned\_properties](/recipes/recipe_modules/bot_update/api.py#40)(self):**
92
92
  ### *recipe_modules* / [cipd](/recipes/recipe_modules/cipd)
93
93
 
94
94
  [DEPS](/recipes/recipe_modules/cipd/__init__.py#1): [infra\_paths](#recipe_modules-infra_paths), [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
@@ -193,27 +193,39 @@ parameters will be used.
193
193
  &mdash; **def [set\_tag](/recipes/recipe_modules/cipd/api.py#366)(self, package_name, version, tags):**
194
194
  ### *recipe_modules* / [depot\_tools](/recipes/recipe_modules/depot_tools)
195
195
 
196
- [DEPS](/recipes/recipe_modules/depot_tools/__init__.py#1): [recipe\_engine/platform][recipe_engine/recipe_modules/platform]
196
+ [DEPS](/recipes/recipe_modules/depot_tools/__init__.py#5): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime]
197
197
 
198
- #### **class [DepotToolsApi](/recipes/recipe_modules/depot_tools/api.py#7)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
198
+ The `depot_tools` module provides safe functions to access paths within
199
+ the depot_tools repo.
199
200
 
200
- &emsp; **@property**<br>&mdash; **def [cros\_path](/recipes/recipe_modules/depot_tools/api.py#21)(self):**
201
+ #### **class [DepotToolsApi](/recipes/recipe_modules/depot_tools/api.py#12)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
201
202
 
202
- &emsp; **@property**<br>&mdash; **def [download\_from\_google\_storage\_path](/recipes/recipe_modules/depot_tools/api.py#8)(self):**
203
+ &emsp; **@property**<br>&mdash; **def [cros\_path](/recipes/recipe_modules/depot_tools/api.py#26)(self):**
203
204
 
204
- &emsp; **@property**<br>&mdash; **def [gn\_py\_path](/recipes/recipe_modules/depot_tools/api.py#25)(self):**
205
+ &emsp; **@property**<br>&mdash; **def [download\_from\_google\_storage\_path](/recipes/recipe_modules/depot_tools/api.py#13)(self):**
205
206
 
206
- &emsp; **@property**<br>&mdash; **def [gsutil\_py\_path](/recipes/recipe_modules/depot_tools/api.py#31)(self):**
207
+ &emsp; **@property**<br>&mdash; **def [gn\_py\_path](/recipes/recipe_modules/depot_tools/api.py#30)(self):**
207
208
 
208
- &emsp; **@property**<br>&mdash; **def [ninja\_path](/recipes/recipe_modules/depot_tools/api.py#35)(self):**
209
+ &emsp; **@property**<br>&mdash; **def [gsutil\_py\_path](/recipes/recipe_modules/depot_tools/api.py#36)(self):**
209
210
 
210
- &emsp; **@property**<br>&mdash; **def [presubmit\_support\_py\_path](/recipes/recipe_modules/depot_tools/api.py#40)(self):**
211
+ &emsp; **@property**<br>&mdash; **def [ninja\_path](/recipes/recipe_modules/depot_tools/api.py#40)(self):**
211
212
 
212
- &emsp; **@property**<br>&mdash; **def [root](/recipes/recipe_modules/depot_tools/api.py#16)(self):**
213
+ &emsp; **@contextlib.contextmanager**<br>&mdash; **def [on\_path](/recipes/recipe_modules/depot_tools/api.py#49)(self):**
214
+
215
+ Use this context manager to put depot_tools on $PATH.
216
+
217
+ Example:
218
+
219
+ with api.depot_tools.on_path():
220
+ # run some steps
221
+
222
+ &emsp; **@property**<br>&mdash; **def [presubmit\_support\_py\_path](/recipes/recipe_modules/depot_tools/api.py#45)(self):**
223
+
224
+ &emsp; **@property**<br>&mdash; **def [root](/recipes/recipe_modules/depot_tools/api.py#21)(self):**
213
225
 
214
226
  Returns (Path): The "depot_tools" root directory.
215
227
 
216
- &emsp; **@property**<br>&mdash; **def [upload\_to\_google\_storage\_path](/recipes/recipe_modules/depot_tools/api.py#12)(self):**
228
+ &emsp; **@property**<br>&mdash; **def [upload\_to\_google\_storage\_path](/recipes/recipe_modules/depot_tools/api.py#17)(self):**
217
229
  ### *recipe_modules* / [gclient](/recipes/recipe_modules/gclient)
218
230
 
219
231
  [DEPS](/recipes/recipe_modules/gclient/__init__.py#1): [infra\_paths](#recipe_modules-infra_paths), [tryserver](#recipe_modules-tryserver), [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step]
@@ -663,7 +675,7 @@ Returns:
663
675
 
664
676
  #### **class [TryserverApi](/recipes/recipe_modules/tryserver/api.py#12)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
665
677
 
666
- &mdash; **def [add\_failure\_reason](/recipes/recipe_modules/tryserver/api.py#146)(self, reason):**
678
+ &mdash; **def [add\_failure\_reason](/recipes/recipe_modules/tryserver/api.py#148)(self, reason):**
667
679
 
668
680
  Records a more detailed reason why build is failing.
669
681
 
@@ -687,11 +699,11 @@ TODO(tandrii): remove this doc.
687
699
  Unless you use patch_root=None, in which case old behavior is used
688
700
  which returns paths relative to checkout aka solution[0].name.
689
701
 
690
- &mdash; **def [get\_footer](/recipes/recipe_modules/tryserver/api.py#209)(self, tag, patch_text=None):**
702
+ &mdash; **def [get\_footer](/recipes/recipe_modules/tryserver/api.py#211)(self, tag, patch_text=None):**
691
703
 
692
704
  Gets a specific tag from a CL description
693
705
 
694
- &mdash; **def [get\_footers](/recipes/recipe_modules/tryserver/api.py#182)(self, patch_text=None):**
706
+ &mdash; **def [get\_footers](/recipes/recipe_modules/tryserver/api.py#184)(self, patch_text=None):**
695
707
 
696
708
  Retrieves footers from the patch description.
697
709
 
@@ -708,13 +720,13 @@ Returns true iff the properties exist to match a Gerrit issue.
708
720
 
709
721
  Returns true iff we can apply_issue or patch.
710
722
 
711
- &mdash; **def [normalize\_footer\_name](/recipes/recipe_modules/tryserver/api.py#213)(self, footer):**
723
+ &mdash; **def [normalize\_footer\_name](/recipes/recipe_modules/tryserver/api.py#215)(self, footer):**
712
724
 
713
- &mdash; **def [set\_compile\_failure\_tryjob\_result](/recipes/recipe_modules/tryserver/api.py#125)(self):**
725
+ &mdash; **def [set\_compile\_failure\_tryjob\_result](/recipes/recipe_modules/tryserver/api.py#127)(self):**
714
726
 
715
727
  Mark the tryjob result as a compile failure.
716
728
 
717
- &emsp; **@contextlib.contextmanager**<br>&mdash; **def [set\_failure\_hash](/recipes/recipe_modules/tryserver/api.py#155)(self):**
729
+ &emsp; **@contextlib.contextmanager**<br>&mdash; **def [set\_failure\_hash](/recipes/recipe_modules/tryserver/api.py#157)(self):**
718
730
 
719
731
  Context manager that sets a failure_hash build property on StepFailure.
720
732
 
@@ -723,7 +735,7 @@ for the same reason. For example, if a patch is bad (breaks something),
723
735
  we'd expect it to always break in the same way. Different failures
724
736
  for the same patch are usually a sign of flakiness.
725
737
 
726
- &mdash; **def [set\_invalid\_test\_results\_tryjob\_result](/recipes/recipe_modules/tryserver/api.py#137)(self):**
738
+ &mdash; **def [set\_invalid\_test\_results\_tryjob\_result](/recipes/recipe_modules/tryserver/api.py#139)(self):**
727
739
 
728
740
  Mark the tryjob result as having invalid test results.
729
741
 
@@ -731,18 +743,18 @@ This means we run some tests, but the results were not valid
731
743
  (e.g. no list of specific test cases that failed, or too many
732
744
  tests failing, etc).
733
745
 
734
- &mdash; **def [set\_patch\_failure\_tryjob\_result](/recipes/recipe_modules/tryserver/api.py#121)(self):**
746
+ &mdash; **def [set\_patch\_failure\_tryjob\_result](/recipes/recipe_modules/tryserver/api.py#123)(self):**
735
747
 
736
748
  Mark the tryjob result as failure to apply the patch.
737
749
 
738
- &mdash; **def [set\_subproject\_tag](/recipes/recipe_modules/tryserver/api.py#103)(self, subproject_tag):**
750
+ &mdash; **def [set\_subproject\_tag](/recipes/recipe_modules/tryserver/api.py#105)(self, subproject_tag):**
739
751
 
740
752
  Adds a subproject tag to the build.
741
753
 
742
754
  This can be used to distinguish between builds that execute different steps
743
755
  depending on what was patched, e.g. blink vs. pure chromium patches.
744
756
 
745
- &mdash; **def [set\_test\_failure\_tryjob\_result](/recipes/recipe_modules/tryserver/api.py#129)(self):**
757
+ &mdash; **def [set\_test\_failure\_tryjob\_result](/recipes/recipe_modules/tryserver/api.py#131)(self):**
746
758
 
747
759
  Mark the tryjob result as a test failure.
748
760
 
@@ -752,9 +764,9 @@ like checkout or compile), and some of these tests have failed.
752
764
 
753
765
  ### *recipes* / [bot\_update:examples/full](/recipes/recipe_modules/bot_update/examples/full.py)
754
766
 
755
- [DEPS](/recipes/recipe_modules/bot_update/examples/full.py#5): [bot\_update](#recipe_modules-bot_update), [gclient](#recipe_modules-gclient), [gerrit](#recipe_modules-gerrit), [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties]
767
+ [DEPS](/recipes/recipe_modules/bot_update/examples/full.py#5): [bot\_update](#recipe_modules-bot_update), [gclient](#recipe_modules-gclient), [gerrit](#recipe_modules-gerrit), [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime]
756
768
 
757
- &mdash; **def [RunSteps](/recipes/recipe_modules/bot_update/examples/full.py#15)(api):**
769
+ &mdash; **def [RunSteps](/recipes/recipe_modules/bot_update/examples/full.py#16)(api):**
758
770
  ### *recipes* / [cipd:examples/full](/recipes/recipe_modules/cipd/examples/full.py)
759
771
 
760
772
  [DEPS](/recipes/recipe_modules/cipd/examples/full.py#8): [cipd](#recipe_modules-cipd), [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
@@ -767,9 +779,9 @@ like checkout or compile), and some of these tests have failed.
767
779
  &mdash; **def [RunSteps](/recipes/recipe_modules/cipd/examples/platform_suffix.py#22)(api, arch_override, bits_override, expect_error):**
768
780
  ### *recipes* / [depot\_tools:examples/full](/recipes/recipe_modules/depot_tools/examples/full.py)
769
781
 
770
- [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]
782
+ [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/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/step][recipe_engine/recipe_modules/step]
771
783
 
772
- &mdash; **def [RunSteps](/recipes/recipe_modules/depot_tools/examples/full.py#13)(api):**
784
+ &mdash; **def [RunSteps](/recipes/recipe_modules/depot_tools/examples/full.py#14)(api):**
773
785
  ### *recipes* / [fetch\_end\_to\_end\_test](/recipes/recipes/fetch_end_to_end_test.py)
774
786
 
775
787
  [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]
@@ -833,15 +845,16 @@ Move things around in a loop!
833
845
 
834
846
  &mdash; **def [RunSteps](/recipes/recipe_modules/tryserver/examples/full.py#17)(api):**
835
847
 
836
- [recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/0f093b369402a86363de15a3fae0c98eab4c8e00/README.recipes.md#recipe_modules-context
837
- [recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/0f093b369402a86363de15a3fae0c98eab4c8e00/README.recipes.md#recipe_modules-file
838
- [recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/0f093b369402a86363de15a3fae0c98eab4c8e00/README.recipes.md#recipe_modules-json
839
- [recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/0f093b369402a86363de15a3fae0c98eab4c8e00/README.recipes.md#recipe_modules-path
840
- [recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/0f093b369402a86363de15a3fae0c98eab4c8e00/README.recipes.md#recipe_modules-platform
841
- [recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/0f093b369402a86363de15a3fae0c98eab4c8e00/README.recipes.md#recipe_modules-properties
842
- [recipe_engine/recipe_modules/python]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/0f093b369402a86363de15a3fae0c98eab4c8e00/README.recipes.md#recipe_modules-python
843
- [recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/0f093b369402a86363de15a3fae0c98eab4c8e00/README.recipes.md#recipe_modules-raw_io
844
- [recipe_engine/recipe_modules/source_manifest]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/0f093b369402a86363de15a3fae0c98eab4c8e00/README.recipes.md#recipe_modules-source_manifest
845
- [recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/0f093b369402a86363de15a3fae0c98eab4c8e00/README.recipes.md#recipe_modules-step
846
- [recipe_engine/recipe_modules/url]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/0f093b369402a86363de15a3fae0c98eab4c8e00/README.recipes.md#recipe_modules-url
847
- [recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/0f093b369402a86363de15a3fae0c98eab4c8e00/recipe_engine/recipe_api.py#992
848
+ [recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/README.recipes.md#recipe_modules-context
849
+ [recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/README.recipes.md#recipe_modules-file
850
+ [recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/README.recipes.md#recipe_modules-json
851
+ [recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/README.recipes.md#recipe_modules-path
852
+ [recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/README.recipes.md#recipe_modules-platform
853
+ [recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/README.recipes.md#recipe_modules-properties
854
+ [recipe_engine/recipe_modules/python]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/README.recipes.md#recipe_modules-python
855
+ [recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/README.recipes.md#recipe_modules-raw_io
856
+ [recipe_engine/recipe_modules/runtime]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/README.recipes.md#recipe_modules-runtime
857
+ [recipe_engine/recipe_modules/source_manifest]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/README.recipes.md#recipe_modules-source_manifest
858
+ [recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/README.recipes.md#recipe_modules-step
859
+ [recipe_engine/recipe_modules/url]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/README.recipes.md#recipe_modules-url
860
+ [recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/32e6ba22dd1c75f8b3276bb86112d10542d5e32b/recipe_engine/recipe_api.py#997
@@ -9,6 +9,7 @@ DEPS = [
9
9
  'recipe_engine/properties',
10
10
  'recipe_engine/python',
11
11
  'recipe_engine/raw_io',
12
+ 'recipe_engine/runtime',
12
13
  'recipe_engine/source_manifest',
13
14
  'recipe_engine/step',
14
15
  'rietveld',
@@ -34,10 +34,7 @@ class BotUpdateApi(recipe_api.RecipeApi):
34
34
  bot_update_path = self.resource('bot_update.py')
35
35
  kwargs.setdefault('infra_step', True)
36
36
 
37
- env_prefixes = {
38
- 'PATH': [self.m.depot_tools.root],
39
- }
40
- with self.m.context(env_prefixes=env_prefixes):
37
+ with self.m.depot_tools.on_path():
41
38
  return self.m.python(name, bot_update_path, cmd, **kwargs)
42
39
 
43
40
  @property
@@ -0,0 +1,105 @@
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
+ "--output_json",
18
+ "/path/to/tmp/json",
19
+ "--revision",
20
+ "src@abc",
21
+ "--disable-syntax-validation"
22
+ ],
23
+ "env_suffixes": {
24
+ "PATH": [
25
+ "RECIPE_PACKAGE_REPO[depot_tools]"
26
+ ]
27
+ },
28
+ "infra_step": true,
29
+ "name": "bot_update (without patch)",
30
+ "~followup_annotations": [
31
+ "@@@STEP_TEXT@Some step text@@@",
32
+ "@@@STEP_LOG_LINE@json.output@{@@@",
33
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
34
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
35
+ "@@@STEP_LOG_LINE@json.output@ \"src\": \"abc\"@@@",
36
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
37
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {@@@",
38
+ "@@@STEP_LOG_LINE@json.output@ \"src\": {@@@",
39
+ "@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/src.git\", @@@",
40
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\"@@@",
41
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
42
+ "@@@STEP_LOG_LINE@json.output@ \"src/third_party/angle\": {@@@",
43
+ "@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/src/third_party/angle.git\", @@@",
44
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"fac9503c46405f77757b9a728eb85b8d7bc6080c\"@@@",
45
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
46
+ "@@@STEP_LOG_LINE@json.output@ \"src/v8\": {@@@",
47
+ "@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/src/v8.git\", @@@",
48
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"801ada225ddc271c132c3a35f03975671d43e399\"@@@",
49
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
50
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
51
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
52
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"src\", @@@",
53
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
54
+ "@@@STEP_LOG_LINE@json.output@ \"got_angle_revision\": \"fac9503c46405f77757b9a728eb85b8d7bc6080c\", @@@",
55
+ "@@@STEP_LOG_LINE@json.output@ \"got_angle_revision_cp\": \"refs/heads/master@{#297276}\", @@@",
56
+ "@@@STEP_LOG_LINE@json.output@ \"got_cr_revision\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\", @@@",
57
+ "@@@STEP_LOG_LINE@json.output@ \"got_cr_revision_cp\": \"refs/heads/master@{#170242}\", @@@",
58
+ "@@@STEP_LOG_LINE@json.output@ \"got_revision\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\", @@@",
59
+ "@@@STEP_LOG_LINE@json.output@ \"got_revision_cp\": \"refs/heads/master@{#170242}\", @@@",
60
+ "@@@STEP_LOG_LINE@json.output@ \"got_v8_revision\": \"801ada225ddc271c132c3a35f03975671d43e399\", @@@",
61
+ "@@@STEP_LOG_LINE@json.output@ \"got_v8_revision_cp\": \"refs/heads/master@{#43426}\"@@@",
62
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
63
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"src\", @@@",
64
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
65
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {@@@",
66
+ "@@@STEP_LOG_LINE@json.output@ \"src\": {@@@",
67
+ "@@@STEP_LOG_LINE@json.output@ \"git_checkout\": {@@@",
68
+ "@@@STEP_LOG_LINE@json.output@ \"repo_url\": \"https://fake.org/src.git\", @@@",
69
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\"@@@",
70
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
71
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
72
+ "@@@STEP_LOG_LINE@json.output@ \"src/third_party/angle\": {@@@",
73
+ "@@@STEP_LOG_LINE@json.output@ \"git_checkout\": {@@@",
74
+ "@@@STEP_LOG_LINE@json.output@ \"repo_url\": \"https://fake.org/src/third_party/angle.git\", @@@",
75
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"fac9503c46405f77757b9a728eb85b8d7bc6080c\"@@@",
76
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
77
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
78
+ "@@@STEP_LOG_LINE@json.output@ \"src/v8\": {@@@",
79
+ "@@@STEP_LOG_LINE@json.output@ \"git_checkout\": {@@@",
80
+ "@@@STEP_LOG_LINE@json.output@ \"repo_url\": \"https://fake.org/src/v8.git\", @@@",
81
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"801ada225ddc271c132c3a35f03975671d43e399\"@@@",
82
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
83
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
84
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
85
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
86
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
87
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
88
+ "@@@STEP_LOG_LINE@json.output@}@@@",
89
+ "@@@STEP_LOG_END@json.output@@@",
90
+ "@@@SET_BUILD_PROPERTY@got_angle_revision@\"fac9503c46405f77757b9a728eb85b8d7bc6080c\"@@@",
91
+ "@@@SET_BUILD_PROPERTY@got_angle_revision_cp@\"refs/heads/master@{#297276}\"@@@",
92
+ "@@@SET_BUILD_PROPERTY@got_cr_revision@\"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\"@@@",
93
+ "@@@SET_BUILD_PROPERTY@got_cr_revision_cp@\"refs/heads/master@{#170242}\"@@@",
94
+ "@@@SET_BUILD_PROPERTY@got_revision@\"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\"@@@",
95
+ "@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#170242}\"@@@",
96
+ "@@@SET_BUILD_PROPERTY@got_v8_revision@\"801ada225ddc271c132c3a35f03975671d43e399\"@@@",
97
+ "@@@SET_BUILD_PROPERTY@got_v8_revision_cp@\"refs/heads/master@{#43426}\"@@@"
98
+ ]
99
+ },
100
+ {
101
+ "name": "$result",
102
+ "recipe_result": null,
103
+ "status_code": 0
104
+ }
105
+ ]
@@ -10,6 +10,7 @@ DEPS = [
10
10
  'recipe_engine/path',
11
11
  'recipe_engine/platform',
12
12
  'recipe_engine/properties',
13
+ 'recipe_engine/runtime',
13
14
  ]
14
15
 
15
16
  def RunSteps(api):
@@ -92,6 +93,10 @@ def GenTests(api):
92
93
  patch=False,
93
94
  revision='abc'
94
95
  )
96
+ yield api.test('basic_luci') + api.properties(
97
+ patch=False,
98
+ revision='abc'
99
+ ) + api.runtime(is_experimental=False, is_luci=True)
95
100
  yield api.test('with_manifest_name_no_patch') + api.properties(
96
101
  manifest_name='checkout',
97
102
  patch=False
@@ -1,3 +1,9 @@
1
+ # Copyright 2017 The Chromium Authors. All rights reserved.
2
+ # Use of this source code is governed by a BSD-style license that can be
3
+ # found in the LICENSE file.
4
+
1
5
  DEPS = [
6
+ 'recipe_engine/context',
2
7
  'recipe_engine/platform',
8
+ 'recipe_engine/runtime',
3
9
  ]
@@ -2,6 +2,11 @@
2
2
  # Use of this source code is governed by a BSD-style license that can be
3
3
  # found in the LICENSE file.
4
4
 
5
+ """The `depot_tools` module provides safe functions to access paths within
6
+ the depot_tools repo."""
7
+
8
+ import contextlib
9
+
5
10
  from recipe_engine import recipe_api
6
11
 
7
12
  class DepotToolsApi(recipe_api.RecipeApi):
@@ -40,3 +45,23 @@ class DepotToolsApi(recipe_api.RecipeApi):
40
45
  @property
41
46
  def presubmit_support_py_path(self):
42
47
  return self.package_repo_resource('presubmit_support.py')
48
+
49
+ @contextlib.contextmanager
50
+ def on_path(self):
51
+ """Use this context manager to put depot_tools on $PATH.
52
+
53
+ Example:
54
+
55
+ with api.depot_tools.on_path():
56
+ # run some steps
57
+ """
58
+ # On buildbot we have to put this on the FRONT of path, to combat the
59
+ # 'automatic' depot_tools. However, on LUCI, there is no automatic
60
+ # depot_tools, so it's safer to put it at the END of path, where it won't
61
+ # accidentally override e.g. python, vpython, etc.
62
+ key = 'env_prefixes'
63
+ if self.m.runtime.is_luci:
64
+ key = 'env_suffixes'
65
+
66
+ with self.m.context(**{key: {'PATH': [self.root]}}):
67
+ yield
@@ -55,6 +55,18 @@
55
55
  ],
56
56
  "name": "presubmit_support_py_path"
57
57
  },
58
+ {
59
+ "cmd": [
60
+ "echo",
61
+ "$PATH"
62
+ ],
63
+ "env_prefixes": {
64
+ "PATH": [
65
+ "RECIPE_PACKAGE_REPO[depot_tools]"
66
+ ]
67
+ },
68
+ "name": "on_path"
69
+ },
58
70
  {
59
71
  "name": "$result",
60
72
  "recipe_result": null,
@@ -0,0 +1,75 @@
1
+ [
2
+ {
3
+ "cmd": [
4
+ "ls",
5
+ "RECIPE_PACKAGE_REPO[depot_tools]"
6
+ ],
7
+ "name": "root"
8
+ },
9
+ {
10
+ "cmd": [
11
+ "ls",
12
+ "RECIPE_PACKAGE_REPO[depot_tools]/download_from_google_storage.py"
13
+ ],
14
+ "name": "download_from_google_storage"
15
+ },
16
+ {
17
+ "cmd": [
18
+ "ls",
19
+ "RECIPE_PACKAGE_REPO[depot_tools]/upload_to_google_storage.py"
20
+ ],
21
+ "name": "upload_to_google_storage"
22
+ },
23
+ {
24
+ "cmd": [
25
+ "ls",
26
+ "RECIPE_PACKAGE_REPO[depot_tools]/cros"
27
+ ],
28
+ "name": "cros"
29
+ },
30
+ {
31
+ "cmd": [
32
+ "ls",
33
+ "RECIPE_PACKAGE_REPO[depot_tools]/gn.py"
34
+ ],
35
+ "name": "gn_py_path"
36
+ },
37
+ {
38
+ "cmd": [
39
+ "ls",
40
+ "RECIPE_PACKAGE_REPO[depot_tools]/gsutil.py"
41
+ ],
42
+ "name": "gsutil_py_path"
43
+ },
44
+ {
45
+ "cmd": [
46
+ "ls",
47
+ "RECIPE_PACKAGE_REPO[depot_tools]/ninja"
48
+ ],
49
+ "name": "ninja_path"
50
+ },
51
+ {
52
+ "cmd": [
53
+ "ls",
54
+ "RECIPE_PACKAGE_REPO[depot_tools]/presubmit_support.py"
55
+ ],
56
+ "name": "presubmit_support_py_path"
57
+ },
58
+ {
59
+ "cmd": [
60
+ "echo",
61
+ "$PATH"
62
+ ],
63
+ "env_suffixes": {
64
+ "PATH": [
65
+ "RECIPE_PACKAGE_REPO[depot_tools]"
66
+ ]
67
+ },
68
+ "name": "on_path"
69
+ },
70
+ {
71
+ "name": "$result",
72
+ "recipe_result": null,
73
+ "status_code": 0
74
+ }
75
+ ]