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"