Deprecate homebrew when building ios-usb-dependencies

This cl does:
1) Remove homebrew dependency
2) Build each package from source
3) Build packages sequentially considering their dependencies
4) Move scripts to their own dir: /recipes/ios_usb_dependencies

Led run:
https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/keyonghan_google.com/c425c7db235a1e8db8d6239ec9e7e44398b9f54cbc990e902eb48c2233cf68d9/+/build.proto?server=chromium-swarm.appspot.com

Change-Id: I176afe9b2306323c8b28537759927934c9ae95a3
Bug: https://github.com/flutter/flutter/issues/36019
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/32660
Commit-Queue: Keyong Han <keyonghan@google.com>
Reviewed-by: Jenn Magder <magder@google.com>
diff --git a/recipes/ios-usb-dependencies.expected/ios-deploy with git_ref.json b/recipes/ios-usb-dependencies.expected/ios-deploy with git_ref.json
deleted file mode 100644
index 37bc311..0000000
--- a/recipes/ios-usb-dependencies.expected/ios-deploy with git_ref.json
+++ /dev/null
@@ -1,63 +0,0 @@
-[
-  {
-    "cmd": [
-      "chmod",
-      "777",
-      "RECIPE[flutter::ios-usb-dependencies].resources/ios-deploy.sh"
-    ],
-    "name": "make RECIPE[flutter::ios-usb-dependencies].resources/ios-deploy.sh executable"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/output"
-    ],
-    "infra_step": true,
-    "name": "mkdir [START_DIR]/output"
-  },
-  {
-    "cmd": [
-      "RECIPE[flutter::ios-usb-dependencies].resources/ios-deploy.sh",
-      "[START_DIR]/src",
-      "deadbeef",
-      "[START_DIR]/output"
-    ],
-    "name": "build ios-deploy"
-  },
-  {
-    "cmd": [
-      "python",
-      "RECIPE_MODULE[flutter::zip]/resources/zip.py"
-    ],
-    "name": "zipping ios-deploy dir",
-    "stdin": "{\"entries\": [{\"path\": \"[START_DIR]/output\", \"type\": \"dir\"}], \"output\": \"[START_DIR]/ios-deploy.zip\", \"root\": \"[START_DIR]/output\"}"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "[START_DIR]/ios-deploy.zip",
-      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/ios-deploy/deadbeef/ios-deploy.zip"
-    ],
-    "infra_step": true,
-    "name": "gsutil upload of ios-deploy.zip",
-    "~followup_annotations": [
-      "@@@STEP_LINK@ios-deploy.zip@https://storage.cloud.google.com/flutter_infra_release/ios-usb-dependencies/unsigned/ios-deploy/deadbeef/ios-deploy.zip@@@"
-    ]
-  },
-  {
-    "name": "$result"
-  }
-]
\ No newline at end of file
diff --git a/recipes/ios-usb-dependencies.expected/ios-deploy with gitiles.json b/recipes/ios-usb-dependencies.expected/ios-deploy with gitiles.json
deleted file mode 100644
index 09f045d..0000000
--- a/recipes/ios-usb-dependencies.expected/ios-deploy with gitiles.json
+++ /dev/null
@@ -1,123 +0,0 @@
-[
-  {
-    "cmd": [
-      "chmod",
-      "777",
-      "RECIPE[flutter::ios-usb-dependencies].resources/ios-deploy.sh"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "make RECIPE[flutter::ios-usb-dependencies].resources/ios-deploy.sh executable"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/output"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir [START_DIR]/output"
-  },
-  {
-    "cmd": [
-      "RECIPE[flutter::ios-usb-dependencies].resources/ios-deploy.sh",
-      "[START_DIR]/src",
-      "deadbeef",
-      "[START_DIR]/output"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "build ios-deploy"
-  },
-  {
-    "cmd": [
-      "python",
-      "RECIPE_MODULE[flutter::zip]/resources/zip.py"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "zipping ios-deploy dir",
-    "stdin": "{\"entries\": [{\"path\": \"[START_DIR]/output\", \"type\": \"dir\"}], \"output\": \"[START_DIR]/ios-deploy.zip\", \"root\": \"[START_DIR]/output\"}"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "[START_DIR]/ios-deploy.zip",
-      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/ios-deploy/deadbeef/ios-deploy.zip"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil upload of ios-deploy.zip",
-    "~followup_annotations": [
-      "@@@STEP_LINK@ios-deploy.zip@https://storage.cloud.google.com/flutter_infra_release/ios-usb-dependencies/unsigned/ios-deploy/deadbeef/ios-deploy.zip@@@"
-    ]
-  },
-  {
-    "name": "$result"
-  }
-]
\ No newline at end of file
diff --git a/recipes/ios-usb-dependencies.expected/libimobiledevice-flutter.json b/recipes/ios-usb-dependencies.expected/libimobiledevice-flutter.json
deleted file mode 100644
index 15aa1c9..0000000
--- a/recipes/ios-usb-dependencies.expected/libimobiledevice-flutter.json
+++ /dev/null
@@ -1,452 +0,0 @@
-[
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/homebrew"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir homebrew"
-  },
-  {
-    "cmd": [
-      "curl",
-      "-L",
-      "https://github.com/Homebrew/brew/tarball/master",
-      "-o",
-      "[START_DIR]/homebrew.tar.gz"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "get homebrew"
-  },
-  {
-    "cmd": [
-      "tar",
-      "zxf",
-      "[START_DIR]/homebrew.tar.gz",
-      "--strip",
-      "1",
-      "-C",
-      "[START_DIR]/homebrew"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "open tarball"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/output"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir output"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/zips"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir zips"
-  },
-  {
-    "cmd": [
-      "[START_DIR]/homebrew/bin/brew",
-      "tap",
-      "flutter/homebrew-flutter",
-      "https://flutter.googlesource.com/third_party//homebrew-flutter"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "tap custom formulae"
-  },
-  {
-    "cmd": [
-      "[START_DIR]/homebrew/bin/brew",
-      "install",
-      "flutter/homebrew-flutter/libimobiledevice-flutter",
-      "--HEAD"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "installing libimobiledevice-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/output/libimobiledevice-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir package [START_DIR]/output/libimobiledevice-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/libimobiledevice-flutter/COPYING",
-      "[START_DIR]/output/libimobiledevice-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying COPYING from package libimobiledevice-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/libimobiledevice-flutter/COPYING.LESSER",
-      "[START_DIR]/output/libimobiledevice-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying COPYING.LESSER from package libimobiledevice-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/libimobiledevice-flutter/libtasn1-LICENSE",
-      "[START_DIR]/output/libimobiledevice-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying libtasn1-LICENSE from package libimobiledevice-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/libimobiledevice-flutter/libtasn1-AUTHORS",
-      "[START_DIR]/output/libimobiledevice-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying libtasn1-AUTHORS from package libimobiledevice-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/libimobiledevice-flutter/bin/idevicescreenshot",
-      "[START_DIR]/output/libimobiledevice-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying bin/idevicescreenshot from package libimobiledevice-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/libimobiledevice-flutter/bin/idevicesyslog",
-      "[START_DIR]/output/libimobiledevice-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying bin/idevicesyslog from package libimobiledevice-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/libimobiledevice-flutter/lib/libimobiledevice-1.0.6.dylib",
-      "[START_DIR]/output/libimobiledevice-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying lib/libimobiledevice-1.0.6.dylib from package libimobiledevice-flutter"
-  },
-  {
-    "cmd": [
-      "python",
-      "RECIPE_MODULE[flutter::zip]/resources/zip.py"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "zipping libimobiledevice-flutter.zip",
-    "stdin": "{\"entries\": [{\"path\": \"[START_DIR]/output/libimobiledevice-flutter\", \"type\": \"dir\"}], \"output\": \"[START_DIR]/zips/libimobiledevice-flutter.zip\", \"root\": \"[START_DIR]/output/libimobiledevice-flutter\"}"
-  },
-  {
-    "cmd": [
-      "echo",
-      "ios-usb-dependencies/unsigned/libimobiledevice/2d72510e447ab60a9728aeea2362d8be2cbd7789/libimobiledevice.zip"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "cloud path"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "[START_DIR]/zips/libimobiledevice-flutter.zip",
-      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/libimobiledevice/2d72510e447ab60a9728aeea2362d8be2cbd7789/libimobiledevice.zip"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil upload of libimobiledevice-flutter.zip",
-    "~followup_annotations": [
-      "@@@STEP_LINK@libimobiledevice-flutter.zip@https://storage.cloud.google.com/flutter_infra_release/ios-usb-dependencies/unsigned/libimobiledevice/2d72510e447ab60a9728aeea2362d8be2cbd7789/libimobiledevice.zip@@@"
-    ]
-  },
-  {
-    "name": "$result"
-  }
-]
\ No newline at end of file
diff --git a/recipes/ios-usb-dependencies.expected/libplist-flutter.json b/recipes/ios-usb-dependencies.expected/libplist-flutter.json
deleted file mode 100644
index 0750aa3..0000000
--- a/recipes/ios-usb-dependencies.expected/libplist-flutter.json
+++ /dev/null
@@ -1,322 +0,0 @@
-[
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/homebrew"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir homebrew"
-  },
-  {
-    "cmd": [
-      "curl",
-      "-L",
-      "https://github.com/Homebrew/brew/tarball/master",
-      "-o",
-      "[START_DIR]/homebrew.tar.gz"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "get homebrew"
-  },
-  {
-    "cmd": [
-      "tar",
-      "zxf",
-      "[START_DIR]/homebrew.tar.gz",
-      "--strip",
-      "1",
-      "-C",
-      "[START_DIR]/homebrew"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "open tarball"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/output"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir output"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/zips"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir zips"
-  },
-  {
-    "cmd": [
-      "[START_DIR]/homebrew/bin/brew",
-      "tap",
-      "flutter/homebrew-flutter",
-      "https://flutter.googlesource.com/third_party//homebrew-flutter"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "tap custom formulae"
-  },
-  {
-    "cmd": [
-      "[START_DIR]/homebrew/bin/brew",
-      "install",
-      "flutter/homebrew-flutter/libplist-flutter",
-      "--HEAD"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "installing libplist-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/output/libplist-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir package [START_DIR]/output/libplist-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/libplist-flutter/lib/libplist-2.0.3.dylib",
-      "[START_DIR]/output/libplist-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying lib/libplist-2.0.3.dylib from package libplist-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/libplist-flutter/COPYING",
-      "[START_DIR]/output/libplist-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying COPYING from package libplist-flutter"
-  },
-  {
-    "cmd": [
-      "python",
-      "RECIPE_MODULE[flutter::zip]/resources/zip.py"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "zipping libplist-flutter.zip",
-    "stdin": "{\"entries\": [{\"path\": \"[START_DIR]/output/libplist-flutter\", \"type\": \"dir\"}], \"output\": \"[START_DIR]/zips/libplist-flutter.zip\", \"root\": \"[START_DIR]/output/libplist-flutter\"}"
-  },
-  {
-    "cmd": [
-      "echo",
-      "ios-usb-dependencies/unsigned/libplist/2d72510e447ab60a9728aeea2362d8be2cbd7789/libplist.zip"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "cloud path"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "[START_DIR]/zips/libplist-flutter.zip",
-      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/libplist/2d72510e447ab60a9728aeea2362d8be2cbd7789/libplist.zip"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil upload of libplist-flutter.zip",
-    "~followup_annotations": [
-      "@@@STEP_LINK@libplist-flutter.zip@https://storage.cloud.google.com/flutter_infra_release/ios-usb-dependencies/unsigned/libplist/2d72510e447ab60a9728aeea2362d8be2cbd7789/libplist.zip@@@"
-    ]
-  },
-  {
-    "name": "$result"
-  }
-]
\ No newline at end of file
diff --git a/recipes/ios-usb-dependencies.expected/openssl-flutter.json b/recipes/ios-usb-dependencies.expected/openssl-flutter.json
deleted file mode 100644
index 4477299..0000000
--- a/recipes/ios-usb-dependencies.expected/openssl-flutter.json
+++ /dev/null
@@ -1,348 +0,0 @@
-[
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/homebrew"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir homebrew"
-  },
-  {
-    "cmd": [
-      "curl",
-      "-L",
-      "https://github.com/Homebrew/brew/tarball/master",
-      "-o",
-      "[START_DIR]/homebrew.tar.gz"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "get homebrew"
-  },
-  {
-    "cmd": [
-      "tar",
-      "zxf",
-      "[START_DIR]/homebrew.tar.gz",
-      "--strip",
-      "1",
-      "-C",
-      "[START_DIR]/homebrew"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "open tarball"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/output"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir output"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/zips"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir zips"
-  },
-  {
-    "cmd": [
-      "[START_DIR]/homebrew/bin/brew",
-      "tap",
-      "flutter/homebrew-flutter",
-      "https://flutter.googlesource.com/third_party//homebrew-flutter"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "tap custom formulae"
-  },
-  {
-    "cmd": [
-      "[START_DIR]/homebrew/bin/brew",
-      "install",
-      "flutter/homebrew-flutter/openssl-flutter",
-      "--HEAD"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "installing openssl-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/output/openssl-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir package [START_DIR]/output/openssl-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/openssl-flutter/lib/libssl.1.1.dylib",
-      "[START_DIR]/output/openssl-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying lib/libssl.1.1.dylib from package openssl-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/openssl-flutter/lib/libcrypto.1.1.dylib",
-      "[START_DIR]/output/openssl-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying lib/libcrypto.1.1.dylib from package openssl-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/openssl-flutter/LICENSE",
-      "[START_DIR]/output/openssl-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying LICENSE from package openssl-flutter"
-  },
-  {
-    "cmd": [
-      "python",
-      "RECIPE_MODULE[flutter::zip]/resources/zip.py"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "zipping openssl-flutter.zip",
-    "stdin": "{\"entries\": [{\"path\": \"[START_DIR]/output/openssl-flutter\", \"type\": \"dir\"}], \"output\": \"[START_DIR]/zips/openssl-flutter.zip\", \"root\": \"[START_DIR]/output/openssl-flutter\"}"
-  },
-  {
-    "cmd": [
-      "echo",
-      "ios-usb-dependencies/unsigned/openssl/2d72510e447ab60a9728aeea2362d8be2cbd7789/openssl.zip"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "cloud path"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "[START_DIR]/zips/openssl-flutter.zip",
-      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/openssl/2d72510e447ab60a9728aeea2362d8be2cbd7789/openssl.zip"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil upload of openssl-flutter.zip",
-    "~followup_annotations": [
-      "@@@STEP_LINK@openssl-flutter.zip@https://storage.cloud.google.com/flutter_infra_release/ios-usb-dependencies/unsigned/openssl/2d72510e447ab60a9728aeea2362d8be2cbd7789/openssl.zip@@@"
-    ]
-  },
-  {
-    "name": "$result"
-  }
-]
\ No newline at end of file
diff --git a/recipes/ios-usb-dependencies.expected/usbmuxd-flutter.json b/recipes/ios-usb-dependencies.expected/usbmuxd-flutter.json
deleted file mode 100644
index 87c051f..0000000
--- a/recipes/ios-usb-dependencies.expected/usbmuxd-flutter.json
+++ /dev/null
@@ -1,348 +0,0 @@
-[
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/homebrew"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir homebrew"
-  },
-  {
-    "cmd": [
-      "curl",
-      "-L",
-      "https://github.com/Homebrew/brew/tarball/master",
-      "-o",
-      "[START_DIR]/homebrew.tar.gz"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "get homebrew"
-  },
-  {
-    "cmd": [
-      "tar",
-      "zxf",
-      "[START_DIR]/homebrew.tar.gz",
-      "--strip",
-      "1",
-      "-C",
-      "[START_DIR]/homebrew"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "open tarball"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/output"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir output"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/zips"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir zips"
-  },
-  {
-    "cmd": [
-      "[START_DIR]/homebrew/bin/brew",
-      "tap",
-      "flutter/homebrew-flutter",
-      "https://flutter.googlesource.com/third_party//homebrew-flutter"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "tap custom formulae"
-  },
-  {
-    "cmd": [
-      "[START_DIR]/homebrew/bin/brew",
-      "install",
-      "flutter/homebrew-flutter/usbmuxd-flutter",
-      "--HEAD"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "installing usbmuxd-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/output/usbmuxd-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "mkdir package [START_DIR]/output/usbmuxd-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/usbmuxd-flutter/lib/libusbmuxd-2.0.6.dylib",
-      "[START_DIR]/output/usbmuxd-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying lib/libusbmuxd-2.0.6.dylib from package usbmuxd-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/usbmuxd-flutter/bin/iproxy",
-      "[START_DIR]/output/usbmuxd-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying bin/iproxy from package usbmuxd-flutter"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/homebrew/opt/usbmuxd-flutter/COPYING",
-      "[START_DIR]/output/usbmuxd-flutter"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "copying COPYING from package usbmuxd-flutter"
-  },
-  {
-    "cmd": [
-      "python",
-      "RECIPE_MODULE[flutter::zip]/resources/zip.py"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "zipping usbmuxd-flutter.zip",
-    "stdin": "{\"entries\": [{\"path\": \"[START_DIR]/output/usbmuxd-flutter\", \"type\": \"dir\"}], \"output\": \"[START_DIR]/zips/usbmuxd-flutter.zip\", \"root\": \"[START_DIR]/output/usbmuxd-flutter\"}"
-  },
-  {
-    "cmd": [
-      "echo",
-      "ios-usb-dependencies/unsigned/usbmuxd/2d72510e447ab60a9728aeea2362d8be2cbd7789/usbmuxd.zip"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "cloud path"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "[START_DIR]/zips/usbmuxd-flutter.zip",
-      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/usbmuxd/2d72510e447ab60a9728aeea2362d8be2cbd7789/usbmuxd.zip"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil upload of usbmuxd-flutter.zip",
-    "~followup_annotations": [
-      "@@@STEP_LINK@usbmuxd-flutter.zip@https://storage.cloud.google.com/flutter_infra_release/ios-usb-dependencies/unsigned/usbmuxd/2d72510e447ab60a9728aeea2362d8be2cbd7789/usbmuxd.zip@@@"
-    ]
-  },
-  {
-    "name": "$result"
-  }
-]
\ No newline at end of file
diff --git a/recipes/ios-usb-dependencies.py b/recipes/ios-usb-dependencies.py
deleted file mode 100644
index e8ac9db..0000000
--- a/recipes/ios-usb-dependencies.py
+++ /dev/null
@@ -1,217 +0,0 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from contextlib import contextmanager
-
-PYTHON_VERSION_COMPATIBILITY = 'PY3'
-
-DEPS = [
-    'depot_tools/gsutil',
-    'flutter/osx_sdk',
-    'flutter/zip',
-    'recipe_engine/buildbucket',
-    'recipe_engine/file',
-    'recipe_engine/path',
-    'recipe_engine/properties',
-    'recipe_engine/runtime',
-    'recipe_engine/step',
-]
-
-BUCKET_NAME = 'flutter_infra_release'
-
-HOMEBREW_FLUTTER_PREFIX = ['flutter', 'homebrew-flutter']
-MIRROR_URL_PREFIX = 'https://flutter.googlesource.com/third_party/'
-
-INSTALL_PKGS = {
-    'libplist-flutter': {
-        'install_flags': ['--HEAD'],
-        'deliverables': [
-            'lib/libplist-2.0.3.dylib',
-            'COPYING',
-        ],
-    },
-    'usbmuxd-flutter': {
-        'install_flags': ['--HEAD'],
-        'deliverables': [
-            'lib/libusbmuxd-2.0.6.dylib',
-            'bin/iproxy',
-            'COPYING',
-        ],
-    },
-    'openssl-flutter': {
-        'install_flags': ['--HEAD'],
-        'deliverables': [
-            'lib/libssl.1.1.dylib',
-            'lib/libcrypto.1.1.dylib',
-            'LICENSE',
-        ],
-    },
-    'libimobiledevice-flutter': {
-        'install_flags': ['--HEAD'],
-        'deliverables': [
-            'COPYING',
-            'COPYING.LESSER',
-            'libtasn1-LICENSE',
-            'libtasn1-AUTHORS',
-            'bin/idevicescreenshot',
-            'bin/idevicesyslog',
-            'lib/libimobiledevice-1.0.6.dylib',
-        ],
-    },
-}
-
-
-def InstallHomebrew(api, homebrew_dir):
-  homebrew_tar = api.path['start_dir'].join('homebrew.tar.gz')
-  api.file.ensure_directory('mkdir homebrew', homebrew_dir)
-  api.step('get homebrew', [
-      'curl', '-L', 'https://github.com/Homebrew/brew/tarball/master', '-o',
-      homebrew_tar
-  ])
-  api.step('open tarball',
-           ['tar', 'zxf', homebrew_tar, '--strip', '1', '-C', homebrew_dir])
-
-
-def GetBrewBin(api):
-  return api.path['start_dir'].join('homebrew', 'bin', 'brew')
-
-
-def TapCustomBrews(api):
-  api.step('tap custom formulae', [
-      str(GetBrewBin(api)), 'tap', '/'.join(HOMEBREW_FLUTTER_PREFIX),
-      '%s/homebrew-flutter' % MIRROR_URL_PREFIX
-  ])
-
-
-def GetLocalPath(api, package_name):
-  return api.path['start_dir'].join('homebrew', 'opt', package_name)
-
-
-def GetCloudPath(api, package_name):
-  '''Location of cloud bucket for unsigned binaries'''
-  commit_hash = GetCommitHash(api)
-  short_name = package_name.replace('-flutter', '')
-  return 'ios-usb-dependencies/unsigned/%s/%s/%s.zip' % (
-      short_name, commit_hash, short_name)
-
-
-def GetCommitHash(api):
-  gitiles_commit = api.buildbucket.gitiles_commit.id
-  if gitiles_commit:
-    return gitiles_commit
-  return api.properties['git_ref']
-
-
-def InstallPackage(api, package, name):
-  install_flags = package.get('install_flags', [])
-  prefix = '/'.join(HOMEBREW_FLUTTER_PREFIX)
-  api.step('installing %s' % name, [
-      str(GetBrewBin(api)),
-      'install',
-      '/'.join([prefix, name]),
-  ] + install_flags)
-
-
-def CopyDeliverable(api, deliverable, name, output_path):
-  deliverable_path = GetLocalPath(api, name).join(deliverable)
-  api.file.copy(
-      'copying %s from package %s' % (deliverable, name),
-      deliverable_path,
-      output_path,
-  )
-
-
-def ZipAndUploadDeliverables(api, package_name, input_path, zip_out_dir):
-  file_name = '%s.zip' % package_name
-  output_path = zip_out_dir.join(file_name)
-  api.zip.directory('zipping %s' % file_name, input_path, output_path)
-  cloud_path = GetCloudPath(api, package_name)
-  api.step('cloud path', ['echo', cloud_path])
-  api.gsutil.upload(
-      output_path,
-      BUCKET_NAME,
-      cloud_path,
-      link_name=file_name,
-      name='upload of %s' % file_name,
-  )
-
-
-def BuildIosDeploy(api):
-  build_script = api.resource('ios-deploy.sh')
-  api.step('make %s executable' % build_script, ['chmod', '777', build_script])
-
-  work_dir = api.path['start_dir']
-  src_dir = work_dir.join('src')
-  out_dir = work_dir.join('output')
-  api.file.ensure_directory('mkdir %s' % out_dir, out_dir)
-  zip_file = work_dir.join('ios-deploy.zip')
-  commit_hash = GetCommitHash(api)
-  api.step('build ios-deploy', [build_script, src_dir, commit_hash, out_dir])
-  api.zip.directory('zipping ios-deploy dir', out_dir, zip_file)
-  version_namespace = 'led' if api.runtime.is_experimental else commit_hash
-  remote_path = 'ios-usb-dependencies/unsigned/ios-deploy/%s/ios-deploy.zip' % version_namespace
-  api.gsutil.upload(
-      zip_file,
-      BUCKET_NAME,
-      remote_path,
-      link_name='ios-deploy.zip',
-      name='upload of ios-deploy.zip',
-  )
-
-
-def RunSteps(api):
-  with api.osx_sdk('ios'):
-    package_name = api.properties['package_name']
-    if package_name == 'ios-deploy-flutter':
-      BuildIosDeploy(api)
-    else:
-      work_dir = api.path['start_dir']
-      package = INSTALL_PKGS[package_name]
-
-      homebrew_dir = work_dir.join('homebrew')
-      InstallHomebrew(api, homebrew_dir)
-
-      output_dir = work_dir.join('output')
-      api.file.ensure_directory('mkdir output', output_dir)
-
-      zip_out_dir = work_dir.join('zips')
-      api.file.ensure_directory('mkdir zips', zip_out_dir)
-
-      TapCustomBrews(api)
-
-      InstallPackage(api, package, package_name)
-
-      package_out_dir = output_dir.join(package_name)
-      api.file.ensure_directory('mkdir package %s' % package_out_dir,
-                                package_out_dir)
-
-      if len(package['deliverables']) > 0:
-        for deliverable in package['deliverables']:
-          CopyDeliverable(api, deliverable, package_name, package_out_dir)
-
-        ZipAndUploadDeliverables(api, package_name, package_out_dir,
-                                 zip_out_dir)
-
-
-def GenTests(api):
-  yield api.test(
-      'ios-deploy with git_ref',
-      api.properties(
-          package_name='ios-deploy-flutter',
-          git_ref='deadbeef',
-      ),
-  )
-  yield api.test(
-      'ios-deploy with gitiles',
-      api.properties(
-          package_name='ios-deploy-flutter',
-      ),
-      api.buildbucket.ci_build(revision='deadbeef'),
-  )
-  for package_name in INSTALL_PKGS:
-    yield api.test(
-        package_name,
-        api.properties(package_name=package_name),
-        api.buildbucket.ci_build(git_ref='refs/heads/master'),
-    )
diff --git a/recipes/ios_usb_dependencies/ios-usb-dependencies.expected/basic.json b/recipes/ios_usb_dependencies/ios-usb-dependencies.expected/basic.json
new file mode 100644
index 0000000..3b5b3f8
--- /dev/null
+++ b/recipes/ios_usb_dependencies/ios-usb-dependencies.expected/basic.json
@@ -0,0 +1,796 @@
+[
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/ios-deploy"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/ios-deploy"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/ios-deploy_install"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/ios-deploy_install"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/ios-deploy_output"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/ios-deploy_output"
+  },
+  {
+    "cmd": [
+      "chmod",
+      "777",
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/ios-deploy.sh"
+    ],
+    "name": "make RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/ios-deploy.sh executable"
+  },
+  {
+    "cmd": [
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/ios-deploy.sh",
+      "[START_DIR]/src/ios-deploy",
+      "[START_DIR]/src/ios-deploy_install",
+      "[START_DIR]/src/ios-deploy_output"
+    ],
+    "name": "install ios-deploy"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[START_DIR]/src/ios-deploy/commit_sha.txt",
+      "/path/to/tmp/"
+    ],
+    "infra_step": true,
+    "name": "read commit_sha.txt for ios-deploy",
+    "~followup_annotations": [
+      "@@@STEP_LOG_END@commit_sha.txt@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "RECIPE_MODULE[flutter::zip]/resources/zip.py"
+    ],
+    "name": "zipping ios-deploy dir",
+    "stdin": "{\"entries\": [{\"path\": \"[START_DIR]/src/ios-deploy_output\", \"type\": \"dir\"}], \"output\": \"[START_DIR]/ios-deploy.zip\", \"root\": \"[START_DIR]/src/ios-deploy_output\"}"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "[START_DIR]/ios-deploy.zip",
+      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/ios-deploy//ios-deploy.zip"
+    ],
+    "infra_step": true,
+    "name": "gsutil upload of ios-deploy.zip",
+    "~followup_annotations": [
+      "@@@STEP_LINK@ios-deploy.zip@https://storage.cloud.google.com/flutter_infra_release/ios-usb-dependencies/unsigned/ios-deploy//ios-deploy.zip@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libplist"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libplist"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libplist_install"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libplist_install"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libplist_output"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libplist_output"
+  },
+  {
+    "cmd": [
+      "chmod",
+      "777",
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libplist.sh"
+    ],
+    "name": "make RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libplist.sh executable"
+  },
+  {
+    "cmd": [
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libplist.sh",
+      "[START_DIR]/src/libplist",
+      "[START_DIR]/src/libplist_install",
+      "[START_DIR]/src/libplist_output"
+    ],
+    "name": "install libplist"
+  },
+  {
+    "cmd": [
+      "python",
+      "RECIPE_MODULE[flutter::zip]/resources/zip.py"
+    ],
+    "name": "zipping libplist dir",
+    "stdin": "{\"entries\": [{\"path\": \"[START_DIR]/src/libplist_output\", \"type\": \"dir\"}], \"output\": \"[START_DIR]/libplist.zip\", \"root\": \"[START_DIR]/src/libplist_output\"}"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "[START_DIR]/libplist.zip",
+      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/libplist/None/libplist.zip"
+    ],
+    "infra_step": true,
+    "name": "gsutil upload of libplist.zip",
+    "~followup_annotations": [
+      "@@@STEP_LINK@libplist.zip@https://storage.cloud.google.com/flutter_infra_release/ios-usb-dependencies/unsigned/libplist/None/libplist.zip@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/bison"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/bison"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/bison_install"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/bison_install"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/bison_output"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/bison_output"
+  },
+  {
+    "cmd": [
+      "chmod",
+      "777",
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/bison.sh"
+    ],
+    "name": "make RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/bison.sh executable"
+  },
+  {
+    "cmd": [
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/bison.sh",
+      "[START_DIR]/src/bison",
+      "[START_DIR]/src/bison_install",
+      "[START_DIR]/src/bison_output"
+    ],
+    "env_prefixes": {
+      "PATH": [
+        "[START_DIR]/src/libplist_install/bin"
+      ]
+    },
+    "name": "install bison"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libtasn1"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libtasn1"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libtasn1_install"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libtasn1_install"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libtasn1_output"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libtasn1_output"
+  },
+  {
+    "cmd": [
+      "chmod",
+      "777",
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libtasn1.sh"
+    ],
+    "name": "make RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libtasn1.sh executable"
+  },
+  {
+    "cmd": [
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libtasn1.sh",
+      "[START_DIR]/src/libtasn1",
+      "[START_DIR]/src/libtasn1_install",
+      "[START_DIR]/src/libtasn1_output"
+    ],
+    "env_prefixes": {
+      "PATH": [
+        "[START_DIR]/src/libplist_install/bin",
+        "[START_DIR]/src/bison_install/bin"
+      ]
+    },
+    "name": "install libtasn1"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libusb"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libusb"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libusb_install"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libusb_install"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libusb_output"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libusb_output"
+  },
+  {
+    "cmd": [
+      "chmod",
+      "777",
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libusb.sh"
+    ],
+    "name": "make RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libusb.sh executable"
+  },
+  {
+    "cmd": [
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libusb.sh",
+      "[START_DIR]/src/libusb",
+      "[START_DIR]/src/libusb_install",
+      "[START_DIR]/src/libusb_output"
+    ],
+    "env_prefixes": {
+      "PATH": [
+        "[START_DIR]/src/libplist_install/bin",
+        "[START_DIR]/src/bison_install/bin",
+        "[START_DIR]/src/libtasn1_install/bin"
+      ]
+    },
+    "name": "install libusb"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libimobiledeviceglue"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libimobiledeviceglue"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libimobiledeviceglue_install"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libimobiledeviceglue_install"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libimobiledeviceglue_output"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libimobiledeviceglue_output"
+  },
+  {
+    "cmd": [
+      "chmod",
+      "777",
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libimobiledeviceglue.sh"
+    ],
+    "name": "make RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libimobiledeviceglue.sh executable"
+  },
+  {
+    "cmd": [
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libimobiledeviceglue.sh",
+      "[START_DIR]/src/libimobiledeviceglue",
+      "[START_DIR]/src/libimobiledeviceglue_install",
+      "[START_DIR]/src/libimobiledeviceglue_output"
+    ],
+    "env_prefixes": {
+      "LIBRARY_PATH": [
+        "[START_DIR]/src/libusb_install/lib"
+      ],
+      "PATH": [
+        "[START_DIR]/src/libplist_install/bin",
+        "[START_DIR]/src/bison_install/bin",
+        "[START_DIR]/src/libtasn1_install/bin"
+      ]
+    },
+    "name": "install libimobiledeviceglue"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libusbmuxd"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libusbmuxd"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libusbmuxd_install"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libusbmuxd_install"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libusbmuxd_output"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libusbmuxd_output"
+  },
+  {
+    "cmd": [
+      "chmod",
+      "777",
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libusbmuxd.sh"
+    ],
+    "name": "make RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libusbmuxd.sh executable"
+  },
+  {
+    "cmd": [
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libusbmuxd.sh",
+      "[START_DIR]/src/libusbmuxd",
+      "[START_DIR]/src/libusbmuxd_install",
+      "[START_DIR]/src/libusbmuxd_output"
+    ],
+    "env": {
+      "CPATH": "[START_DIR]/src/libimobiledeviceglue_install/include"
+    },
+    "env_prefixes": {
+      "LIBRARY_PATH": [
+        "[START_DIR]/src/libusb_install/lib",
+        "[START_DIR]/src/libimobiledeviceglue_install/lib"
+      ],
+      "PATH": [
+        "[START_DIR]/src/libplist_install/bin",
+        "[START_DIR]/src/bison_install/bin",
+        "[START_DIR]/src/libtasn1_install/bin"
+      ],
+      "PKG_CONFIG_PATH": [
+        "[START_DIR]/src/libimobiledeviceglue_install/lib/pkgconfig"
+      ]
+    },
+    "name": "install libusbmuxd"
+  },
+  {
+    "cmd": [
+      "python",
+      "RECIPE_MODULE[flutter::zip]/resources/zip.py"
+    ],
+    "name": "zipping libusbmuxd dir",
+    "stdin": "{\"entries\": [{\"path\": \"[START_DIR]/src/libusbmuxd_output\", \"type\": \"dir\"}], \"output\": \"[START_DIR]/libusbmuxd.zip\", \"root\": \"[START_DIR]/src/libusbmuxd_output\"}"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "[START_DIR]/libusbmuxd.zip",
+      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/libusbmuxd/None/libusbmuxd.zip"
+    ],
+    "infra_step": true,
+    "name": "gsutil upload of libusbmuxd.zip",
+    "~followup_annotations": [
+      "@@@STEP_LINK@libusbmuxd.zip@https://storage.cloud.google.com/flutter_infra_release/ios-usb-dependencies/unsigned/libusbmuxd/None/libusbmuxd.zip@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/openssl"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/openssl"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/openssl_install"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/openssl_install"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/openssl_output"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/openssl_output"
+  },
+  {
+    "cmd": [
+      "chmod",
+      "777",
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/openssl.sh"
+    ],
+    "name": "make RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/openssl.sh executable"
+  },
+  {
+    "cmd": [
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/openssl.sh",
+      "[START_DIR]/src/openssl",
+      "[START_DIR]/src/openssl_install",
+      "[START_DIR]/src/openssl_output"
+    ],
+    "env": {
+      "CPATH": "[START_DIR]/src/libimobiledeviceglue_install/include"
+    },
+    "env_prefixes": {
+      "LIBRARY_PATH": [
+        "[START_DIR]/src/libusb_install/lib",
+        "[START_DIR]/src/libimobiledeviceglue_install/lib"
+      ],
+      "PATH": [
+        "[START_DIR]/src/libplist_install/bin",
+        "[START_DIR]/src/bison_install/bin",
+        "[START_DIR]/src/libtasn1_install/bin",
+        "[START_DIR]/src/libusbmuxd_install/bin"
+      ],
+      "PKG_CONFIG_PATH": [
+        "[START_DIR]/src/libimobiledeviceglue_install/lib/pkgconfig",
+        "[START_DIR]/src/libusbmuxd_install/lib/pkgconfig"
+      ]
+    },
+    "name": "install openssl"
+  },
+  {
+    "cmd": [
+      "python",
+      "RECIPE_MODULE[flutter::zip]/resources/zip.py"
+    ],
+    "name": "zipping openssl dir",
+    "stdin": "{\"entries\": [{\"path\": \"[START_DIR]/src/openssl_output\", \"type\": \"dir\"}], \"output\": \"[START_DIR]/openssl.zip\", \"root\": \"[START_DIR]/src/openssl_output\"}"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "[START_DIR]/openssl.zip",
+      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/openssl/None/openssl.zip"
+    ],
+    "infra_step": true,
+    "name": "gsutil upload of openssl.zip",
+    "~followup_annotations": [
+      "@@@STEP_LINK@openssl.zip@https://storage.cloud.google.com/flutter_infra_release/ios-usb-dependencies/unsigned/openssl/None/openssl.zip@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libimobiledevice"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libimobiledevice"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libimobiledevice_install"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libimobiledevice_install"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[START_DIR]/src/libimobiledevice_output"
+    ],
+    "infra_step": true,
+    "name": "mkdir [START_DIR]/src/libimobiledevice_output"
+  },
+  {
+    "cmd": [
+      "chmod",
+      "777",
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libimobiledevice.sh"
+    ],
+    "name": "make RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libimobiledevice.sh executable"
+  },
+  {
+    "cmd": [
+      "RECIPE[flutter::ios_usb_dependencies/ios-usb-dependencies].resources/libimobiledevice.sh",
+      "[START_DIR]/src/libimobiledevice",
+      "[START_DIR]/src/libimobiledevice_install",
+      "[START_DIR]/src/libimobiledevice_output"
+    ],
+    "env": {
+      "CPATH": "[START_DIR]/src/libimobiledeviceglue_install/include"
+    },
+    "env_prefixes": {
+      "LIBRARY_PATH": [
+        "[START_DIR]/src/libusb_install/lib",
+        "[START_DIR]/src/libimobiledeviceglue_install/lib",
+        "[START_DIR]/src/openssl_install/lib"
+      ],
+      "PATH": [
+        "[START_DIR]/src/libplist_install/bin",
+        "[START_DIR]/src/bison_install/bin",
+        "[START_DIR]/src/libtasn1_install/bin",
+        "[START_DIR]/src/libusbmuxd_install/bin",
+        "[START_DIR]/src/openssl_install/bin"
+      ],
+      "PKG_CONFIG_PATH": [
+        "[START_DIR]/src/libimobiledeviceglue_install/lib/pkgconfig",
+        "[START_DIR]/src/libusbmuxd_install/lib/pkgconfig",
+        "[START_DIR]/src/openssl_install/lib/pkgconfig"
+      ]
+    },
+    "name": "install libimobiledevice"
+  },
+  {
+    "cmd": [
+      "python",
+      "RECIPE_MODULE[flutter::zip]/resources/zip.py"
+    ],
+    "name": "zipping libimobiledevice dir",
+    "stdin": "{\"entries\": [{\"path\": \"[START_DIR]/src/libimobiledevice_output\", \"type\": \"dir\"}], \"output\": \"[START_DIR]/libimobiledevice.zip\", \"root\": \"[START_DIR]/src/libimobiledevice_output\"}"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "[START_DIR]/libimobiledevice.zip",
+      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/libimobiledevice/None/libimobiledevice.zip"
+    ],
+    "infra_step": true,
+    "name": "gsutil upload of libimobiledevice.zip",
+    "~followup_annotations": [
+      "@@@STEP_LINK@libimobiledevice.zip@https://storage.cloud.google.com/flutter_infra_release/ios-usb-dependencies/unsigned/libimobiledevice/None/libimobiledevice.zip@@@"
+    ]
+  },
+  {
+    "name": "$result"
+  }
+]
\ No newline at end of file
diff --git a/recipes/ios_usb_dependencies/ios-usb-dependencies.py b/recipes/ios_usb_dependencies/ios-usb-dependencies.py
new file mode 100644
index 0000000..178f8b2
--- /dev/null
+++ b/recipes/ios_usb_dependencies/ios-usb-dependencies.py
@@ -0,0 +1,195 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+from contextlib import contextmanager
+
+PYTHON_VERSION_COMPATIBILITY = 'PY3'
+
+DEPS = [
+    'depot_tools/gsutil',
+    'flutter/devicelab_osx_sdk',
+    'flutter/zip',
+    'recipe_engine/context',
+    'recipe_engine/file',
+    'recipe_engine/path',
+    'recipe_engine/runtime',
+    'recipe_engine/step',
+]
+
+BUCKET_NAME = 'flutter_infra_release'
+
+
+def GetCloudPath(api, package_name, commit_sha):
+  """Location of cloud bucket for unsigned binaries"""
+  version_namespace = 'led' if api.runtime.is_experimental else commit_sha
+  return 'ios-usb-dependencies/unsigned/%s/%s/%s.zip' % (
+      package_name, version_namespace, package_name
+  )
+
+
+def UpdateEnv(
+    api, env, env_prefixes, package_name, package_install_dir, update_path,
+    update_library_path, update_pkg_config_path
+):
+  """Updates environment variables based on requirments.
+
+  Args:
+
+      env(dict): current environment variables.
+      env_prefixes(dict):  current environment prefixes variables.
+      package_name(str): the name of the package to be built.
+      package_install_dir(path): path to the package install dir.
+      upload(bool): a flag indicating whether there are artifacts to upload.
+      update_path(bool): a flag indicating whether there are PATH updates.
+      update_library_path(bool): a flag indicating whether there are LIBRARY_PATH updates.
+      update_pkg_config_path(bool): a flag indicating whether there are PKG_CONFIG_PATH updates.
+  """
+  if package_name == 'libimobiledeviceglue':
+    env['CPATH'] = '%s/include' % package_install_dir
+  if update_path:
+    paths = env_prefixes.get('PATH', [])
+    paths.append('%s/bin' % package_install_dir)
+    env_prefixes['PATH'] = paths
+  if update_library_path:
+    library_path = env_prefixes.get('LIBRARY_PATH', [])
+    library_path.append('%s/lib' % package_install_dir)
+    env_prefixes['LIBRARY_PATH'] = library_path
+  if update_pkg_config_path:
+    pkg_config_path = env_prefixes.get('PKG_CONFIG_PATH', [])
+    pkg_config_path.append('%s/lib/pkgconfig' % package_install_dir)
+    env_prefixes['PKG_CONFIG_PATH'] = pkg_config_path
+
+
+def UploadPackage(
+    api, package_name, work_dir, package_out_dir, upload, commit_sha
+):
+  """Upload package artifacts to GCS.
+
+  Args:
+
+      package_name(str): the name of the package to be built.
+      work_dir(path): path to work dir.
+      package_out_dir(bool): path to the artifacts location.
+      upload(bool): a flag indicating whether there are artifacts to upload.
+      commit_sha(str): commit sha of current build.
+  """
+  if not upload:
+    return
+  package_zip_file = work_dir.join('%s.zip' % package_name)
+  api.zip.directory(
+      'zipping %s dir' % package_name, package_out_dir, package_zip_file
+  )
+  api.gsutil.upload(
+      package_zip_file,
+      BUCKET_NAME,
+      GetCloudPath(api, package_name, commit_sha),
+      link_name='%s.zip' % package_name,
+      name='upload of %s.zip' % package_name,
+  )
+
+
+def BuildPackage(
+    api,
+    env,
+    env_prefixes,
+    package_name,
+    upload=False,
+    update_path=False,
+    update_library_path=False,
+    update_pkg_config_path=False
+):
+  """Builds packages and and upload artifacts to GCS.
+
+  Args:
+
+      env(dict): current environment variables.
+      env_prefixes(dict):  current environment prefixes variables.
+      package_name(str): the name of the package to be built.
+      upload(bool): a flag indicating whether there are artifacts to upload.
+      update_path(bool): a flag indicating whether there are PATH updates.
+      update_library_path(bool): a flag indicating whether there are LIBRARY_PATH updates.
+      update_pkg_config_path(bool): a flag indicating whether there are PKG_CONFIG_PATH updates.
+  """
+  work_dir = api.path['start_dir']
+  src_dir = work_dir.join('src')
+  package_src_dir = work_dir.join('src').join(package_name)
+  package_install_dir = work_dir.join('src').join('%s_install' % package_name)
+  package_out_dir = src_dir.join('%s_output' % package_name)
+  api.file.ensure_directory('mkdir %s' % package_src_dir, package_src_dir)
+  api.file.ensure_directory(
+      'mkdir %s' % package_install_dir, package_install_dir
+  )
+  api.file.ensure_directory('mkdir %s' % package_out_dir, package_out_dir)
+
+  build_script = api.resource('%s.sh' % package_name)
+  api.step('make %s executable' % build_script, ['chmod', '777', build_script])
+  with api.context(env=env, env_prefixes=env_prefixes):
+    api.step(
+        'install %s' % package_name,
+        [build_script, package_src_dir, package_install_dir, package_out_dir]
+    )
+  commit_sha_file = package_src_dir.join('commit_sha.txt')
+  commit_sha = None
+  if api.path.exists(commit_sha_file):
+    commit_sha = api.file.read_text(
+        'read commit_sha.txt for %s' % package_name, commit_sha_file
+    ).strip()
+  UpdateEnv(
+      api, env, env_prefixes, package_name, package_install_dir, update_path,
+      update_library_path, update_pkg_config_path
+  )
+  UploadPackage(
+      api, package_name, work_dir, package_out_dir, upload, commit_sha
+  )
+
+
+def RunSteps(api):
+  with api.devicelab_osx_sdk('ios'):
+    env_prefixes = {'PATH': [], 'LIBRARY_PATH': []}
+    env = {}
+    BuildPackage(api, env, env_prefixes, 'ios-deploy', upload=True)
+    BuildPackage(
+        api, env, env_prefixes, 'libplist', upload=True, update_path=True
+    )
+    BuildPackage(api, env, env_prefixes, 'bison', update_path=True)
+    BuildPackage(api, env, env_prefixes, 'libtasn1', update_path=True)
+    BuildPackage(api, env, env_prefixes, 'libusb', update_library_path=True)
+    BuildPackage(
+        api,
+        env,
+        env_prefixes,
+        'libimobiledeviceglue',
+        update_library_path=True,
+        update_pkg_config_path=True
+    )
+    BuildPackage(
+        api,
+        env,
+        env_prefixes,
+        'libusbmuxd',
+        upload=True,
+        update_path=True,
+        update_pkg_config_path=True
+    )
+    BuildPackage(
+        api,
+        env,
+        env_prefixes,
+        'openssl',
+        upload=True,
+        update_path=True,
+        update_library_path=True,
+        update_pkg_config_path=True
+    )
+    BuildPackage(api, env, env_prefixes, 'libimobiledevice', upload=True)
+
+
+def GenTests(api):
+  yield api.test(
+      'basic',
+      api.path.exists(
+          api.path['start_dir'].join('src').join('ios-deploy'
+                                                ).join('commit_sha.txt'),
+      ),
+  )
diff --git a/recipes/ios_usb_dependencies/resources/bison.sh b/recipes/ios_usb_dependencies/resources/bison.sh
new file mode 100755
index 0000000..556c821
--- /dev/null
+++ b/recipes/ios_usb_dependencies/resources/bison.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+
+set -exo pipefail
+
+if [ -z "$2" ]; then
+  echo -e "Usage: libplist.sh \$SRC_DIR \$INSTALL_DIR \$OUTPUT_DIR " 1>&2
+  exit 1
+fi
+
+set -u
+
+SRC_DIR="$1"
+INSTALL_DIR="$2"
+
+curl http://mirror.us-midwest-1.nexcess.net/gnu/bison/bison-3.8.tar.gz --output "$SRC_DIR"/bison-3.8.tar.gz
+tar -xzvf "$SRC_DIR"/bison-3.8.tar.gz -C "$SRC_DIR"
+cd "$SRC_DIR"/bison-3.8
+
+"$SRC_DIR"/bison-3.8/configure --prefix="$INSTALL_DIR"
+
+make install
diff --git a/recipes/ios-usb-dependencies.resources/ios-deploy.sh b/recipes/ios_usb_dependencies/resources/ios-deploy.sh
similarity index 62%
rename from recipes/ios-usb-dependencies.resources/ios-deploy.sh
rename to recipes/ios_usb_dependencies/resources/ios-deploy.sh
index 4d05f22..5870c7f 100755
--- a/recipes/ios-usb-dependencies.resources/ios-deploy.sh
+++ b/recipes/ios_usb_dependencies/resources/ios-deploy.sh
@@ -3,24 +3,20 @@
 set -exo pipefail
 
 if [ -z "$3" ]; then
-  echo -e "Usage: ios-deploy.sh \$SRC_DIR \$REVISION \$OUTPUT_DIR " 1>&2
+  echo -e "Usage: ios-deploy.sh \$SRC_DIR \$INSTALL_DIR \$OUTPUT_DIR " 1>&2
   exit 1
 fi
 
 set -u
 
 SRC_DIR="$1"
-REVISION="$2"
 OUTPUT_DIR="$3"
 REMOTE_URL="https://flutter.googlesource.com/third_party/ios-deploy"
 
 git clone "$REMOTE_URL" "$SRC_DIR"
 cd "$SRC_DIR"
-git checkout "$REVISION"
+git rev-parse HEAD > "commit_sha.txt"
 
 xcodebuild -configuration Release SYMROOT=build -arch x86_64
 
-xcodebuild test \
-  -scheme ios-deploy-tests -configuration Release SYMROOT=build -arch x86_64
-
 cp LICENSE LICENSE2 ./build/Release/ios-deploy "$OUTPUT_DIR"
diff --git a/recipes/ios_usb_dependencies/resources/libimobiledevice.sh b/recipes/ios_usb_dependencies/resources/libimobiledevice.sh
new file mode 100755
index 0000000..66fdafa
--- /dev/null
+++ b/recipes/ios_usb_dependencies/resources/libimobiledevice.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+set -exo pipefail
+
+if [ -z "$3" ]; then
+  echo -e "Usage: libplist.sh \$SRC_DIR \$INSTALL_DIR \$OUTPUT_DIR " 1>&2
+  exit 1
+fi
+
+set -u
+
+SRC_DIR="$1"
+INSTALL_DIR="$2"
+OUTPUT_DIR="$3"
+REMOTE_URL="https://flutter.googlesource.com/third_party/libimobiledevice"
+
+git clone "$REMOTE_URL" "$SRC_DIR"
+cd "$SRC_DIR"
+git rev-parse HEAD > "commit_sha.txt"
+
+./autogen.sh
+
+"$SRC_DIR"/configure -disable-dependency-tracking --disable-silent-rules \
+  --prefix="$INSTALL_DIR" --without-cython --enable-debug-code
+
+make install
+
+cp ./COPYING ./COPYING.LESSER "$INSTALL_DIR"/lib/libimobiledevice-1.0.6.dylib \
+  "$INSTALL_DIR"/bin/idevicescreenshot "$INSTALL_DIR"/bin/idevicesyslog "$OUTPUT_DIR"
diff --git a/recipes/ios_usb_dependencies/resources/libimobiledeviceglue.sh b/recipes/ios_usb_dependencies/resources/libimobiledeviceglue.sh
new file mode 100755
index 0000000..c7bd4f6
--- /dev/null
+++ b/recipes/ios_usb_dependencies/resources/libimobiledeviceglue.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+
+set -exo pipefail
+
+if [ -z "$3" ]; then
+  echo -e "Usage: libplist.sh \$SRC_DIR \$REVISION \$OUTPUT_DIR " 1>&2
+  exit 1
+fi
+
+set -u
+
+SRC_DIR="$1"
+INSTALL_DIR="$2"
+OUTPUT_DIR="$3"
+REMOTE_URL="https://github.com/libimobiledevice/libimobiledevice-glue.git"
+
+git clone "$REMOTE_URL" "$SRC_DIR"
+cd "$SRC_DIR"
+git rev-parse HEAD > "commit_sha.txt"
+
+./autogen.sh
+
+"$SRC_DIR"/configure --prefix="$INSTALL_DIR"
+
+make install
diff --git a/recipes/ios_usb_dependencies/resources/libplist.sh b/recipes/ios_usb_dependencies/resources/libplist.sh
new file mode 100755
index 0000000..d309c83
--- /dev/null
+++ b/recipes/ios_usb_dependencies/resources/libplist.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+set -exo pipefail
+
+if [ -z "$3" ]; then
+  echo -e "Usage: libplist.sh \$SRC_DIR \$INSTALL_DIR \$OUTPUT_DIR " 1>&2
+  exit 1
+fi
+
+set -u
+
+SRC_DIR="$1"
+INSTALL_DIR="$2"
+OUTPUT_DIR="$3"
+REMOTE_URL="https://flutter.googlesource.com/third_party/libplist"
+
+git clone "$REMOTE_URL" "$SRC_DIR"
+cd "$SRC_DIR"
+git rev-parse HEAD > "commit_sha.txt"
+
+./autogen.sh || true
+
+"$SRC_DIR"/configure --disable-dependency-tracking --disable-silent-rules \
+  --without-cython --prefix="$INSTALL_DIR"
+
+make install
+
+cp ./COPYING "$INSTALL_DIR"/lib/libplist-2.0.3.dylib "$OUTPUT_DIR"
+ls "$OUTPUT_DIR"
diff --git a/recipes/ios_usb_dependencies/resources/libtasn1.sh b/recipes/ios_usb_dependencies/resources/libtasn1.sh
new file mode 100755
index 0000000..e74bb8d
--- /dev/null
+++ b/recipes/ios_usb_dependencies/resources/libtasn1.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+
+set -exo pipefail
+
+if [ -z "$3" ]; then
+  echo -e "Usage: libplist.sh \$SRC_DIR \$INSTALL_DIR \$OUTPUT_DIR " 1>&2
+  exit 1
+fi
+
+set -u
+
+SRC_DIR="$1"
+INSTALL_DIR="$2"
+OUTPUT_DIR="$3"
+REMOTE_URL="https://flutter.googlesource.com/third_party/libtasn1"
+
+git clone "$REMOTE_URL" "$SRC_DIR"
+cd "$SRC_DIR"
+git rev-parse HEAD > "commit_sha.txt"
+
+# If an autoconf script calls GTK_DOC_CHECK, newer versions of
+# autoreconf (>autoconf-2.69) try to call `gtkdocize --copy`, which
+# would require an extra dependency on `gtk-doc`, even if
+# documentation is disabled at configure time.
+sed -i '.bak' 's/AUTOPOINT=true LIBTOOLIZE=true/AUTOPOINT=true LIBTOOLIZE=true GTKDOCIZE=true/g' bootstrap
+
+./bootstrap
+
+"$SRC_DIR"/configure --disable-dependency-tracking --disable-silent-rules \
+  --disable-doc --prefix="$INSTALL_DIR"
+
+make install
diff --git a/recipes/ios_usb_dependencies/resources/libusb.sh b/recipes/ios_usb_dependencies/resources/libusb.sh
new file mode 100755
index 0000000..a46bda6
--- /dev/null
+++ b/recipes/ios_usb_dependencies/resources/libusb.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+
+set -exo pipefail
+
+if [ -z "$3" ]; then
+  echo -e "Usage: libplist.sh \$SRC_DIR \$INSTALL_DIR \$OUTPUT_DIR " 1>&2
+  exit 1
+fi
+
+set -u
+
+SRC_DIR="$1"
+INSTALL_DIR="$2"
+OUTPUT_DIR="$3"
+REMOTE_URL="https://flutter.googlesource.com/third_party/libusb"
+
+git clone "$REMOTE_URL" "$SRC_DIR"
+cd "$SRC_DIR"
+git rev-parse HEAD > "commit_sha.txt"
+
+./autogen.sh
+
+"$SRC_DIR"/configure -disable-dependency-tracking --prefix="$INSTALL_DIR"
+
+make install
diff --git a/recipes/ios_usb_dependencies/resources/libusbmuxd.sh b/recipes/ios_usb_dependencies/resources/libusbmuxd.sh
new file mode 100755
index 0000000..78c9223
--- /dev/null
+++ b/recipes/ios_usb_dependencies/resources/libusbmuxd.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+set -exo pipefail
+
+if [ -z "$3" ]; then
+  echo -e "Usage: libplist.sh \$SRC_DIR \$INSTALL_DIR \$OUTPUT_DIR " 1>&2
+  exit 1
+fi
+
+set -u
+
+SRC_DIR="$1"
+INSTALL_DIR="$2"
+OUTPUT_DIR="$3"
+REMOTE_URL="https://flutter.googlesource.com/third_party/libusbmuxd"
+
+git clone "$REMOTE_URL" "$SRC_DIR"
+cd "$SRC_DIR"
+git rev-parse HEAD > "commit_sha.txt"
+
+./autogen.sh
+
+"$SRC_DIR"/configure -disable-dependency-tracking --disable-silent-rules \
+  --prefix="$INSTALL_DIR"
+
+make install
+
+cp ./COPYING "$INSTALL_DIR"/lib/libusbmuxd-2.0.6.dylib \
+  "$INSTALL_DIR"/bin/iproxy "$OUTPUT_DIR"
diff --git a/recipes/ios_usb_dependencies/resources/openssl.sh b/recipes/ios_usb_dependencies/resources/openssl.sh
new file mode 100755
index 0000000..955c614
--- /dev/null
+++ b/recipes/ios_usb_dependencies/resources/openssl.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+set -exo pipefail
+
+if [ -z "$3" ]; then
+  echo -e "Usage: libplist.sh \$SRC_DIR \$INSTALL_DIR \$OUTPUT_DIR " 1>&2
+  exit 1
+fi
+
+set -u
+
+SRC_DIR="$1"
+INSTALL_DIR="$2"
+OUTPUT_DIR="$3"
+REMOTE_URL="https://flutter.googlesource.com/third_party/openssl"
+
+git clone "$REMOTE_URL" "$SRC_DIR"
+cd "$SRC_DIR"
+git rev-parse HEAD > "commit_sha.txt"
+
+"$SRC_DIR"/configure --prefix="$INSTALL_DIR" --openssldir="$INSTALL_DIR/openssl" \
+  no-ssl2 no-ssl3 no-zlib shared enable-cms darwin64-x86_64-cc enable-ec_nistp_64_gcc_128
+
+make depend
+make
+make install MANDIR="$INSTALL_DIR/openssl/man" MANSUFFIX=ssl
+
+cp ./LICENSE.txt "$INSTALL_DIR"/lib/libssl.3.dylib \
+  "$INSTALL_DIR"/lib/libcrypto.3.dylib "$OUTPUT_DIR"