Roll recipe dependencies (trivial).

This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools, fuchsia, recipe_engine) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8807559102687168929

depot_tools:
https://chromium.googlesource.com/chromium/tools/depot_tools.git/+log/a83ac9395c14b74938a84665a3cd695e50559d4e~..647cfe6bf10efa3e171bed867a455347567007c7
  a83ac93 (yuanjunh@google.com)
      [depot_tools] roll led
  2530311 (cassew@chromium.org)
      Allow depot_tools/.git to be a file
  e7fd0ca (yulanlin@google.com)
      [verified-builds]: Update lucicfg to 1.31.4
  0e5881f (vadimsh@chromium.org)
      [cipd] Update the client v2.6.5 => v2.6.7.
  4e6264c (jojwang@chromium.org)
      [gclient] Specify which DEPS is still using `use_relative_hooks`.
  566e9d0 (manukh@chromium.org)
      [git-cl] If set, use `options.title` for initial uploads.
  6628661 (jojwang@chromium.org)
      [no-sync] Add a skip_sync_revisions and process it before runni...
  18af7ef (jojwang@chromium.org)
      [no-sync] Update ParseDepsFile to process deps and hooks approp...
  c6798c8 (jojwang@chromium.org)
      [depot tools] Update six version.
  5a7c824 (jojwang@chromium.org)
      [no-sync] Add method to check for diffs between the current che...
  6e70e86 (brucedawson@chromium.org)
      Fix presubmit_support.py to handle CRLF in PRESUBMIT.py
  bb07d9e (richardwa@google.com)
      Remove use_rbe gn arg support
  1601b3e (jackneus@google.com)
      git_cache: wrap "git remote show" call in retries
  d22bf60 (gavinmak@google.com)
      Add number of presubmit errors/warnings in header
  c3ac73e (gavinmak@google.com)
      Remove 'Fetching' check in testTrackTag
  6757d46 (brucedawson@chromium.org)
      Rearrange presubmit timing message for easier scanning
  b4a8efb (thestig@chromium.org)
      Teach "fetch pdfium" about the checkout_configuration property.
  968a19b (heiserya@google.com)
      Update Pinpoint CLI for Octopus
  c8fadda (bryner@google.com)
      New vpython to depot_tools.
  26bc518 (ukai@google.com)
      Roll out goma client VERSION=250
  8168f76 (qyearsley@chromium.org)
      Update lucicfg from version 1.31.4 to 1.31.5
  ea11cc3 (gavinmak@google.com)
      Remove apply_patch_on_gclient property
  26460d8 (thestig@chromium.org)
      Fix typos in PDFium fetch config.
  f05fcf7 (qyearsley@chromium.org)
      Update lucicfg from version 1.31.5 to 1.31.6
  90191b1 (tikuta@chromium.org)
      recipes: use vpython3 in gerrit recipe modules
  9585c93 (chanli@chromium.org)
      roll dirmd
  164952a (qyearsley@chromium.org)
      Revert "Update lucicfg from version 1.31.5 to 1.31.6"
  904ca29 (chanli@chromium.org)
      [depot_tools] roll led
  f3edc50 (jojwang@chromium.org)
      [no-sync] Store previous sync commit in memory.
  7298625 (tikuta@chromium.org)
      recipes: use python3 for git_footers.py
  16d08f0 (tperrotta@chromium.org)
      git-cl: parse baseurl arguments eagerly
  0ba2fd4 (brucedawson@chromium.org)
      Get full paths in presubmit traceback stacks
  fcb6206 (tperrotta@chromium.org)
      Add a fetch config for chrome (internal).
  debf640 (tperrotta@chromium.org)
      Add a fetch config for devtools (internal).
  36bf3a8 (tperrotta@chromium.org)
      yapf: remove unused `re` import
  77da3f2 (jojwang@chromium.org)
      Fix flaky testRecursedepsCustomdepsOverride.
  647cfe6 (vapier@chromium.org)
      pylint: drop unversioned program

fuchsia:
https://fuchsia.googlesource.com/infra/recipes.git/+log/1f6bb38eea5cb2c1e9727c42bf427d5b1235564b~..669e4b39fbb2c82d03e005c411635d83e19ea933
  1f6bb38 (haowei@google.com)
      Make clang_toolchain recipe trigger tip-of-tree Fuchsia builder
  05349d2 (mohrr@google.com)
      [git] Add options to use --filter
  2b7b810 (danikay@google.com)
      [disabled-tests] Add date_created column for tracking disabled...
  71191c6 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  e1dc8fb (catduncan@google.com)
      [builder_oracle] Fix the command line argument -json-output
  2bfc54c (olivernewman@google.com)
      [testing] Pass resultdb tags as a dict
  ceefdd6 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  713ba5a (olivernewman@google.com)
      [fuchsia] Add shard_name resultdb tag
  388e966 (olivernewman@google.com)
      [tree_closer] Emit output prop of failing builder names
  68482e6 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  c10989a (danikay@google.com)
      [disabled-tests] Improve regex to catch comments on re-enabling...
  6918a3f (haowei@google.com)
      Use git from CIPD in Clang Windows build.
  3f1b2e5 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  4a01bb9 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  bcfb549 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  578fb45 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  0cbf698 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  78e51a0 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  5cd032f (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  62013f4 (olivernewman@google.com)
      [fuchsia] Avoid setting null swarming bot resultdb tag
  4487363 (olivernewman@google.com)
      [checkout] Use api.git.rev_list_count method
  29ba328 (olivernewman@google.com)
      [git] Delete `directory` arguments
  0a25622 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  e244a34 (rudymathu@google.com)
      [recipes] Enable package prefetching
  58f0bf4 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  772ee4b (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  95746e2 (catduncan@google.com)
      [gerrit] Use list of comments for patchset_level_comment
  6b9ebcd (catduncan@google.com)
      [builder-oracle] Switch to message review_comment
  2eb88cb (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  dd19b3e (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  e8740a7 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  1d182fc (liyl@google.com)
      [recipe][aemu_downloader] Update mac builder names
  d072eb5 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  49a750c (mohrr@google.com)
      [git] Support multiple --filter args
  07257f6 (dthorn@google.com)
      [clang] Add licenses for boringssl and curl to toolchain.
  dcdebc4 (ihuh@google.com)
      [testing] Only consider distinct tests when checking for mass f...
  8e2fab7 (rudymathu@google.com)
      [recipes] Add -use-serial to netbooted shards
  5039237 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  eb67df5 (mohrr@google.com)
      [git_checkout] Support git filters argument
  7cfa50c (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  1a44ebd (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  570386e (mohrr@google.com)
      [gerrit_auto_submit] Pass variables around
  5e74363 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  e857a2a (mohrr@google.com)
      [gerrit_auto_submit] Use Options protobuf
  5edb397 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  07750f7 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  87635b2 (mohrr@google.com)
      [gerrit_auto_submit] Clarify recipe result
  c6911e9 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  76b5ee0 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  56152e2 (olivernewman@google.com)
      [gerrit] Mark all steps as infra steps
  a99b690 (rudymathu@google.com)
      [recipes] Disable package prefetching
  7d42ac7 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  46a4054 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  52cac15 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  579a1a8 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  b0c3fd1 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  eb7c272 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  34c33d6 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  2445390 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  e598afa (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  3170e94 (mohrr@google.com)
      [gerrit_auto_submit] Proactively cleanup state
  a6d336e (mohrr@google.com)
      [gerrit_auto_submit] Reduce output lines
  2a8bb9c (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  7dcc036 (mohrr@google.com)
      [git] Control tracing with a property
  5fc6433 (rudymathu@google.com)
      [recipes] Roll catalyst
  6d0a89f (iannucci@google.com)
      Proto roll for crrev.com/c/3761450
  667c6a7 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  cacdc29 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  87508b3 (mohrr@google.com)
      [git] Handle non-existent logs when tracing
  414b7cc (catduncan@google.com)
      [OWNERS] Add catduncan to OWNERS
  6aa8142 (catduncan@google.com)
      [builder-oracle] Add extra guard condition to CL commenting
  bcce6a4 (gopichitluri@google.com)
      Include link to Size Check Failure documentation
  8e27a79 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  10e4b90 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest
  fcca24c (ihuh@google.com)
      Reland "[coverage] Pass compilation-dir to covargs."
  f6dfb69 (olivernewman@google.com)
      [py3] Remove py2 support
  7c82505 (olivernewman@google.com)
      [py3] Remove PYTHON_VERSION_COMPATIBILITY
  44c4aa6 (rudymathu@google.com)
      [recipes] Remove catalyst from testing requests
  669e4b3 (global-integration-roller@fuchsia-infra.iam.gserviceaccount.com)
      [roll] Update tools to latest

recipe_engine:
https://chromium.googlesource.com/infra/luci/recipes-py.git/+log/fd20a01913328acafd79aa0cfd0df43fd6564dd6~..4b7ba01b8ce8d4052feff1408188ef7932351b91
  fd20a01 (atyfto@google.com)
      [protoc] Use infra/3pp/tools/protoc
  fe62657 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll CAS Client from 361f01c81b49 to d3fd72180a64
  2fdd5ba (jwata@google.com)
      Add fast recipe rollback instrucitons
  bb01260 (alexschulze@chromium.org)
      Revert "[file] Add fail_silently to copy and copytree"
  f2ff469 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll CAS Client from 32fe5c8d8532 to a0ba80649473
  428eeae (iannucci@chromium.org)
      Update buildbucket protos.
  0ade4d7 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll CAS Client from 46e5b6417320 to 9fbd373abf97
  a53cb2c (iannucci@chromium.org)
      [manual_roll] Allow manual_roll to work even when protoc breaks.
  e57338e (iannucci@chromium.org)
      [luciexe] Update engine to emit build streams with MergeBuild.
  65f334b (iannucci@chromium.org)
      [legacy_annotation] Allow recipes to specify legacy mode.
  5226416 (iannucci@chromium.org)
      [legacy_annotations] Only merge properties if legacy_global_nam...
  8f92d0c (iannucci@chromium.org)
      [python3] Allow repos to be python3-only.
  5db4d22 (mohrr@google.com)
      [lint] Fix Py3 'Disallowed import' failures
  cfdb92c (akashmukherjee@google.com)
      [snoopy] Uprev client provenance reporter tool.
  4b7ba01 (olivernewman@google.com)
      [analyze] Fix py3 incompatibility

More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.

R=godofredoc@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I400566142b9251730dba6efb597bd6943e88b186
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/32162
Bot-Commit: flutter-prod-builder@chops-service-accounts.iam.gserviceaccount.com <flutter-prod-builder@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Rob Mohr <mohrr@google.com>
diff --git a/infra/config/recipes.cfg b/infra/config/recipes.cfg
index 62e3e95..cd4f3a7 100644
--- a/infra/config/recipes.cfg
+++ b/infra/config/recipes.cfg
@@ -25,17 +25,17 @@
   "deps": {
     "depot_tools": {
       "branch": "refs/heads/main",
-      "revision": "3c4d401cbdd24154d1fa6dc2d398fdace8daedf8",
+      "revision": "5a99ae53126f4cdc37a140716916774d021aa037",
       "url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git"
     },
     "fuchsia": {
       "branch": "refs/heads/main",
-      "revision": "e966ec3c4dfcf0c9b8885a349cadf5a032882755",
+      "revision": "669e4b39fbb2c82d03e005c411635d83e19ea933",
       "url": "https://fuchsia.googlesource.com/infra/recipes.git"
     },
     "recipe_engine": {
       "branch": "refs/heads/main",
-      "revision": "606ae4d1deabddcf3b11c5fbb9791523dea61eeb",
+      "revision": "4b7ba01b8ce8d4052feff1408188ef7932351b91",
       "url": "https://chromium.googlesource.com/infra/luci/recipes-py.git"
     }
   },
diff --git a/recipes.py b/recipes.py
index 81b0bc6..7c534c2 100755
--- a/recipes.py
+++ b/recipes.py
@@ -70,9 +70,12 @@
     recipes_path (str) - native path to where the recipes live inside of the
       current repo (i.e. the folder containing `recipes/` and/or
       `recipe_modules`)
+    py3_only (bool) - True if this repo has been marked as ONLY supporting
+      python3.
   """
   with open(recipes_cfg_path, 'r') as fh:
     pb = json.load(fh)
+  py3_only = pb.get('py3_only', False)
 
   try:
     if pb['api_version'] != 2:
@@ -85,7 +88,7 @@
     if not repo_name:
       repo_name = pb['project_id']
     if repo_name == 'recipe_engine':
-      return None, pb.get('recipes_path', '')
+      return None, pb.get('recipes_path', ''), py3_only
 
     engine = pb['deps']['recipe_engine']
 
@@ -104,7 +107,7 @@
 
     recipes_path = os.path.join(repo_root,
                                 recipes_path.replace('/', os.path.sep))
-    return EngineDep(**engine), recipes_path
+    return EngineDep(**engine), recipes_path, py3_only
   except KeyError as ex:
     raise MalformedRecipesCfg(str(ex), recipes_cfg_path)
 
@@ -113,11 +116,8 @@
 
 _BAT = '.bat' if IS_WIN else ''
 GIT = 'git' + _BAT
-VPYTHON = ('vpython' +
-           ('3' if os.getenv('RECIPES_USE_PY3') == 'true' else '') +
-           _BAT)
 CIPD = 'cipd' + _BAT
-REQUIRED_BINARIES = {GIT, VPYTHON, CIPD}
+REQUIRED_BINARIES = {GIT, CIPD}
 
 
 def _is_executable(path):
@@ -169,10 +169,14 @@
 
 
 def checkout_engine(engine_path, repo_root, recipes_cfg_path):
-  dep, recipes_path = parse(repo_root, recipes_cfg_path)
+  """Checks out the recipe_engine repo pinned in recipes.cfg.
+
+  Returns the path to the recipe engine repo and the py3_only boolean.
+  """
+  dep, recipes_path, py3_only = parse(repo_root, recipes_cfg_path)
   if dep is None:
     # we're running from the engine repo already!
-    return os.path.join(repo_root, recipes_path)
+    return os.path.join(repo_root, recipes_path), py3_only
 
   url = dep.url
 
@@ -217,7 +221,7 @@
     # or things will get squirrely.
     _git_check_call(['clean', '-qxf'], cwd=engine_path)
 
-  return engine_path
+  return engine_path, py3_only
 
 
 def main():
@@ -243,11 +247,16 @@
     repo_root = os.path.abspath(repo_root).decode()
     recipes_cfg_path = os.path.join(repo_root, 'infra', 'config', 'recipes.cfg')
     args = ['--package', recipes_cfg_path] + args
-  engine_path = checkout_engine(engine_override, repo_root, recipes_cfg_path)
+  engine_path, py3_only = checkout_engine(engine_override, repo_root, recipes_cfg_path)
 
-  argv = (
-      [VPYTHON, '-u',
-       os.path.join(engine_path, 'recipe_engine', 'main.py')] + args)
+  using_py3 = py3_only or os.getenv('RECIPES_USE_PY3') == 'true'
+  vpython = ('vpython' + ('3' if using_py3 else '') + _BAT)
+  if not _is_on_path(vpython):
+    return 'Required binary is not found on PATH: %s' % vpython
+
+  argv = ([
+    vpython, '-u', os.path.join(engine_path, 'recipe_engine', 'main.py'),
+  ] + args)
 
   if IS_WIN:
     # No real 'exec' on windows; set these signals to ignore so that they