Add prototype bootstrap script
Change-Id: Ic55bd2b024ef5b543bd441a7fbcd9a2cab120606
diff --git a/bootstrap.py b/bootstrap.py
new file mode 100755
index 0000000..78f5755
--- /dev/null
+++ b/bootstrap.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+
+import json
+import subprocess
+import tempfile
+
+FUCHSIA_SDK_CIPD = "fuchsia/sdk/core/fuchsia-bazel-rules"
+FUCHSIA_SDK_HOSTS = ["linux", "mac"]
+
+
+def run_command(command, verbose=True):
+ if verbose:
+ print(f"Running {command}")
+ command = command.split()
+ subprocess.run(command, check=True, capture_output=True)
+
+
+def init_submodules():
+ init = "git submodule init"
+ run_command(init)
+ update = "git submodule update --recursive"
+ run_command(update)
+
+
+def run_bazel_boostrap():
+ command = "scripts/bootstrap.sh"
+ run_command(command)
+
+
+def fetch_fuchsia_sdk():
+ command = "tools/bazel build @fuchsia_sdk//:fuchsia_toolchain_sdk"
+ run_command(command)
+
+
+def set_bazel_sdk_ensure_files():
+ version = {}
+ temp_dir = tempfile.mkdtemp()
+ for host in FUCHSIA_SDK_HOSTS:
+ run_command(
+ f"cipd describe {FUCHSIA_SDK_CIPD}/{host}-amd64 -version latest -json-output {temp_dir}/{host}.json"
+ )
+ with open(f"{temp_dir}/{host}.json", "r") as f:
+ data = json.load(f)
+ # there are multiple, nested tags. Find the one about jiri_snapshot and parse out the version
+ version[host] = list(
+ filter(
+ lambda x: x["tag"].startswith("jiri_snapshot:"),
+ data["result"]["tags"],
+ )
+ )[0]["tag"].split(":")[1]
+ # The format of the bazel_ensure
+ with open("manifests/bazel_sdk.ensure", "w") as f:
+ f.write("$ResolvedVersions bazel_sdk.resolved\n")
+ f.write("$VerifiedPlatform linux-amd64 mac-amd64\n")
+ f.write(
+ "fuchsia/sdk/core/fuchsia-bazel-rules/${{os=linux}}-${{arch}} version:{linux}\n".format(
+ **version
+ )
+ )
+ f.write(
+ "fuchsia/sdk/core/fuchsia-bazel-rules/${{os=mac}}-amd64 version:{mac}\n".format(
+ **version
+ )
+ )
+
+
+def ensure_resolve():
+ run_command(
+ "cipd ensure-file-resolve -ensure-file /usr/local/google/home/djmurphy/Code/input/manifests/bazel_sdk.ensure"
+ )
+
+
+if __name__ == "__main__":
+ init_submodules()
+ run_bazel_boostrap()
+ set_bazel_sdk_ensure_files()
+ ensure_resolve()
+ fetch_fuchsia_sdk()
diff --git a/manifests/bazel_sdk.ensure b/manifests/bazel_sdk.ensure
index 7a7cb18..eec8659 100644
--- a/manifests/bazel_sdk.ensure
+++ b/manifests/bazel_sdk.ensure
@@ -1,4 +1,4 @@
$ResolvedVersions bazel_sdk.resolved
$VerifiedPlatform linux-amd64 mac-amd64
-fuchsia/sdk/core/fuchsia-bazel-rules/${os=linux}-${arch} version:14.20230825.3.1
-fuchsia/sdk/core/fuchsia-bazel-rules/${os=mac}-amd64 version:14.20230825.3.1
+fuchsia/sdk/core/fuchsia-bazel-rules/${os=linux}-${arch} version:16.20231025.3.1
+fuchsia/sdk/core/fuchsia-bazel-rules/${os=mac}-amd64 version:16.20231025.3.1
diff --git a/manifests/bazel_sdk.resolved b/manifests/bazel_sdk.resolved
index c1ae053..60380f0 100644
--- a/manifests/bazel_sdk.resolved
+++ b/manifests/bazel_sdk.resolved
@@ -2,9 +2,9 @@
# Do not modify manually. All changes will be overwritten.
fuchsia/sdk/core/fuchsia-bazel-rules/linux-amd64
- version:14.20230825.3.1
- -8e0YUn0dXZzKSPmEJLVtzk2lijh1zC9A1kny0WwWEsC
+ version:16.20231025.3.1
+ 3NEspJjWWjGsKfqqrovCOBKWPd8ZNS_HwQ29DTJzNbwC
fuchsia/sdk/core/fuchsia-bazel-rules/mac-amd64
- version:14.20230825.3.1
- d16iCfvEDT919buOe054wlxk0gATLK_GescQCMhrlaEC
+ version:16.20231025.3.1
+ HJj7LeVdSwI_x2ZI922YPm3ZDdaG3A2KKduQ11q8sKMC