Roll recipe dependencies (trivial).

This is an automated CL created by the recipe roller. This CL rolls recipe
changes from upstream projects (e.g. depot_tools) into downstream projects
(e.g. tools/build).


More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
depot_tools:
  https://crrev.com/5737f025b55d6ee2b4469d244f77f275a5e9f1a2 git-cl: Only display a detailed message when git-cl fails. (ehmaldonado@chromium.org)
  https://crrev.com/cf6269b441f1cfdc57d2f238e09b14e46cc0f459 [git-cl] Handle non-HTTPS repositories gracefully in EnsureAuthenticated (dcheng@chromium.org)
recipe_engine:
  https://crrev.com/a5456c47f654f8cab699314f687a1f40aa99a3d2 Fix flaky test. (iannucci@chromium.org)
  https://crrev.com/e7498a59f81c8fad2caf7e3d7c8ca072ec0e2494 Stringify recipe_name when executing test case. (iannucci@chromium.org)
  https://crrev.com/c31f06ae447e388b551ae1fefb08557279b1c36a Fix properties recipe to sort properties dict for determinism. (iannucci@chromium.org)
  https://crrev.com/304d10cdcc0c37bd2f5add7114a21d27cb3298fd Factor out filesystem_safe() into its own module. (iannucci@chromium.org)
  https://crrev.com/0d245ab9614f86baeaf26dfe69f5cbe9feb4e8af Refactor test/__init__ a bit. (iannucci@chromium.org)
  https://crrev.com/9f95903cb308192351026428275ba8dc4f6e4378 Set non-buffered mode for recipes.py and catch Ctrl-C. (iannucci@chromium.org)
  https://crrev.com/2c7dbb91cfb38dc64a85ac581fab056c0cd8b584 Add pylint comment to help some downstream repos cope with this. (iannucci@chromium.org)
  https://crrev.com/8cb0faab5f1b6e30e56d13324954dd6c1f623c4e Fix current test runner when tests crash. (iannucci@chromium.org)
  https://crrev.com/e28cc028144722cc0bfab514f9ada312b245ece3 Make test_result.proto an internal protocol. (iannucci@chromium.org)
  https://crrev.com/7f33bc0f23af3bb83d27b8cc31f5f35d189a1127 Add proto for new test runner. (iannucci@chromium.org)


TBR=borenet@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I1a43fd5ce1fd0481eecc249e5ec0b4b71694c7e6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/214863
Reviewed-by: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
diff --git a/infra/bots/recipes.py b/infra/bots/recipes.py
index 2fe0086..6cdc365 100755
--- a/infra/bots/recipes.py
+++ b/infra/bots/recipes.py
@@ -1,9 +1,19 @@
-#!/usr/bin/env python
-
-# Copyright 2017 The LUCI Authors. All rights reserved.
+#!/bin/sh
+# Copyright 2019 The LUCI Authors. All rights reserved.
 # Use of this source code is governed under the Apache License, Version 2.0
 # that can be found in the LICENSE file.
 
+# We want to run python in unbuffered mode; however shebangs on linux grab the
+# entire rest of the shebang line as a single argument, leading to errors like:
+#
+#   /usr/bin/env: 'python -u': No such file or directory
+#
+# This little shell hack is a triple-quoted noop in python, but in sh it
+# evaluates to re-exec'ing this script in unbuffered mode.
+# pylint: disable=pointless-string-statement
+''''exec python -u -- "$0" ${1+"$@"} # '''
+# vi: syntax=python
+
 """Bootstrap script to clone and forward to the recipe engine tool.
 
 *******************
@@ -14,20 +24,17 @@
 To fix bugs, fix in the googlesource repo then run the autoroller.
 """
 
+# pylint: disable=wrong-import-position
 import argparse
 import json
 import logging
 import os
-import random
 import subprocess
 import sys
-import time
 import urlparse
 
 from collections import namedtuple
 
-from cStringIO import StringIO
-
 # The dependency entry for the recipe_engine in the client repo's recipes.cfg
 #
 # url (str) - the url to the engine repo we want to use.
@@ -219,9 +226,12 @@
 
   engine_path = checkout_engine(engine_override, repo_root, recipes_cfg_path)
 
-  return _subprocess_call([
-      VPYTHON, '-u',
-      os.path.join(engine_path, 'recipe_engine', 'main.py')] + args)
+  try:
+    return _subprocess_call([
+        VPYTHON, '-u',
+        os.path.join(engine_path, 'recipe_engine', 'main.py')] + args)
+  except KeyboardInterrupt:
+    return 1
 
 
 if __name__ == '__main__':
diff --git a/infra/config/recipes.cfg b/infra/config/recipes.cfg
index a6becdd..4a6b569 100644
--- a/infra/config/recipes.cfg
+++ b/infra/config/recipes.cfg
@@ -14,12 +14,12 @@
   "deps": {
     "depot_tools": {
       "branch": "master",
-      "revision": "99fe071354e3b3f176ee345bc98328e96d6c1fd1",
+      "revision": "7639f1999ac1d8992fc4fbb169d164b156d9a7f7",
       "url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git"
     },
     "recipe_engine": {
       "branch": "master",
-      "revision": "9d31f1727653888912994380e7b9c35ad9ea8380",
+      "revision": "7f33bc0f23af3bb83d27b8cc31f5f35d189a1127",
       "url": "https://chromium.googlesource.com/infra/luci/recipes-py.git"
     }
   },