Roll recipe engine

82e233f [cipd] Make the argument to ensure a class
b154652 Add simple `archive` module for tar + zip.
359385a autoroller: Search for gitattributes files only in modified dirs.
6cf964d [cipd] Add support for acl-check command
09ac15a gitattr_checker: Add tests for the cache.

Change-Id: I89f4d3cd89122ecc2ecb6a6489dabdbd1c6a5454
Reviewed-on: https://gn-review.googlesource.com/1882
Reviewed-by: Vadim Shtayura <vadimsh@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
Commit-Queue: Petr Hosek <phosek@google.com>
diff --git a/infra/README.recipes.md b/infra/README.recipes.md
index 55c0ca4..46036ee 100644
--- a/infra/README.recipes.md
+++ b/infra/README.recipes.md
@@ -46,15 +46,15 @@
 
 &mdash; **def [RunSteps](/infra/recipe_modules/windows_sdk/examples/full.py#13)(api):**
 
-[recipe_engine/recipe_modules/buildbucket]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/94bb0a758456a5df6891677a8cf2876c07ea5f0c/README.recipes.md#recipe_modules-buildbucket
-[recipe_engine/recipe_modules/cipd]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/94bb0a758456a5df6891677a8cf2876c07ea5f0c/README.recipes.md#recipe_modules-cipd
-[recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/94bb0a758456a5df6891677a8cf2876c07ea5f0c/README.recipes.md#recipe_modules-context
-[recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/94bb0a758456a5df6891677a8cf2876c07ea5f0c/README.recipes.md#recipe_modules-file
-[recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/94bb0a758456a5df6891677a8cf2876c07ea5f0c/README.recipes.md#recipe_modules-json
-[recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/94bb0a758456a5df6891677a8cf2876c07ea5f0c/README.recipes.md#recipe_modules-path
-[recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/94bb0a758456a5df6891677a8cf2876c07ea5f0c/README.recipes.md#recipe_modules-platform
-[recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/94bb0a758456a5df6891677a8cf2876c07ea5f0c/README.recipes.md#recipe_modules-properties
-[recipe_engine/recipe_modules/python]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/94bb0a758456a5df6891677a8cf2876c07ea5f0c/README.recipes.md#recipe_modules-python
-[recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/94bb0a758456a5df6891677a8cf2876c07ea5f0c/README.recipes.md#recipe_modules-raw_io
-[recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/94bb0a758456a5df6891677a8cf2876c07ea5f0c/README.recipes.md#recipe_modules-step
-[recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/94bb0a758456a5df6891677a8cf2876c07ea5f0c/recipe_engine/recipe_api.py#1006
+[recipe_engine/recipe_modules/buildbucket]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/82e233fa4e6fed0a5dd99501e0d52d3dce25c994/README.recipes.md#recipe_modules-buildbucket
+[recipe_engine/recipe_modules/cipd]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/82e233fa4e6fed0a5dd99501e0d52d3dce25c994/README.recipes.md#recipe_modules-cipd
+[recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/82e233fa4e6fed0a5dd99501e0d52d3dce25c994/README.recipes.md#recipe_modules-context
+[recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/82e233fa4e6fed0a5dd99501e0d52d3dce25c994/README.recipes.md#recipe_modules-file
+[recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/82e233fa4e6fed0a5dd99501e0d52d3dce25c994/README.recipes.md#recipe_modules-json
+[recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/82e233fa4e6fed0a5dd99501e0d52d3dce25c994/README.recipes.md#recipe_modules-path
+[recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/82e233fa4e6fed0a5dd99501e0d52d3dce25c994/README.recipes.md#recipe_modules-platform
+[recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/82e233fa4e6fed0a5dd99501e0d52d3dce25c994/README.recipes.md#recipe_modules-properties
+[recipe_engine/recipe_modules/python]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/82e233fa4e6fed0a5dd99501e0d52d3dce25c994/README.recipes.md#recipe_modules-python
+[recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/82e233fa4e6fed0a5dd99501e0d52d3dce25c994/README.recipes.md#recipe_modules-raw_io
+[recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/82e233fa4e6fed0a5dd99501e0d52d3dce25c994/README.recipes.md#recipe_modules-step
+[recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/82e233fa4e6fed0a5dd99501e0d52d3dce25c994/recipe_engine/recipe_api.py#1006
diff --git a/infra/config/recipes.cfg b/infra/config/recipes.cfg
index 9d8e189..70e6892 100644
--- a/infra/config/recipes.cfg
+++ b/infra/config/recipes.cfg
@@ -3,7 +3,7 @@
   "deps": {
     "recipe_engine": {
       "branch": "master",
-      "revision": "94bb0a758456a5df6891677a8cf2876c07ea5f0c",
+      "revision": "82e233fa4e6fed0a5dd99501e0d52d3dce25c994",
       "url": "https://chromium.googlesource.com/infra/luci/recipes-py"
     }
   },
diff --git a/infra/recipe_modules/windows_sdk/api.py b/infra/recipe_modules/windows_sdk/api.py
index 0c99d78..7c4067d 100644
--- a/infra/recipe_modules/windows_sdk/api.py
+++ b/infra/recipe_modules/windows_sdk/api.py
@@ -55,8 +55,9 @@
       version (str): CIPD instance ID, tag or ref.
     """
     with self.m.context(infra_steps=True):
-      sdk_package = 'chrome_internal/third_party/sdk/windows'
-      self.m.cipd.ensure(sdk_dir, {sdk_package: sdk_version})
+      pkgs = self.m.cipd.EnsureFile()
+      pkgs.add_package('chrome_internal/third_party/sdk/windows', sdk_version)
+      self.m.cipd.ensure(sdk_dir, pkgs)
       return sdk_dir
 
   def _sdk_env(self, sdk_dir):
diff --git a/infra/recipes/gn.expected/cipd_exists.json b/infra/recipes/gn.expected/cipd_exists.json
index 3882778..8dfe0f6 100644
--- a/infra/recipes/gn.expected/cipd_exists.json
+++ b/infra/recipes/gn.expected/cipd_exists.json
@@ -49,7 +49,7 @@
       "-root",
       "[START_DIR]/cipd",
       "-ensure-file",
-      "fuchsia/clang/${platform} goma\ninfra/ninja/${platform} version:1.8.2",
+      "infra/ninja/${platform} version:1.8.2\nfuchsia/clang/${platform} goma",
       "-json-output",
       "/path/to/tmp/json"
     ],
diff --git a/infra/recipes/gn.expected/cipd_register.json b/infra/recipes/gn.expected/cipd_register.json
index 381a9fc..ffdcfa5 100644
--- a/infra/recipes/gn.expected/cipd_register.json
+++ b/infra/recipes/gn.expected/cipd_register.json
@@ -49,7 +49,7 @@
       "-root",
       "[START_DIR]/cipd",
       "-ensure-file",
-      "fuchsia/clang/${platform} goma\ninfra/ninja/${platform} version:1.8.2",
+      "infra/ninja/${platform} version:1.8.2\nfuchsia/clang/${platform} goma",
       "-json-output",
       "/path/to/tmp/json"
     ],
diff --git a/infra/recipes/gn.py b/infra/recipes/gn.py
index 2492dbd..df9d6e2 100644
--- a/infra/recipes/gn.py
+++ b/infra/recipes/gn.py
@@ -49,17 +49,11 @@
 
   with api.context(infra_steps=True):
     cipd_dir = api.path['start_dir'].join('cipd')
-    packages = {
-        'infra/ninja/${platform}': 'version:1.8.2',
-    }
-    packages.update({
-        'linux': {
-            'fuchsia/clang/${platform}': 'goma',
-        },
-        'mac': {},
-        'win': {},
-    }[api.platform.name])
-    api.cipd.ensure(cipd_dir, packages)
+    pkgs = api.cipd.EnsureFile()
+    pkgs.add_package('infra/ninja/${platform}', 'version:1.8.2')
+    if api.platform.is_linux:
+      pkgs.add_package('fuchsia/clang/${platform}', 'goma')
+    api.cipd.ensure(cipd_dir, pkgs)
 
   env = {
       'linux': {