Add libtinfo for arm64.

Change-Id: Ie346bcb48864d61031329d5c976c041bfe750133
Signed-off-by: Tyler Chatow <tchatow@gmail.com>
diff --git a/WORKSPACE b/WORKSPACE
index 1ebd2e6..4a2fd49 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -91,6 +91,10 @@
     "//debian:libtinfo5_amd64.bzl",
     libtinfo5_amd64_debs = "files",
 )
+load(
+    "//debian:libtinfo5_arm64.bzl",
+    libtinfo5_arm64_debs = "files",
+)
 load("//debian:packages.bzl", "generate_repositories_for_debs")
 
 generate_repositories_for_debs(python_debs)
@@ -137,6 +141,8 @@
 
 generate_repositories_for_debs(libtinfo5_amd64_debs)
 
+generate_repositories_for_debs(libtinfo5_arm64_debs)
+
 local_repository(
     name = "com_grail_bazel_toolchain",
     path = "third_party/bazel-toolchain",
@@ -1099,7 +1105,7 @@
 rules_pkg_dependencies()
 
 http_archive(
-    name = "libtinfo5",
+    name = "libtinfo5_amd64",
     build_file_content = """
 exports_files(
     [
@@ -1113,3 +1119,19 @@
     sha256 = "059e14f77dce365c57b96284aae98c892f61e269b3fbb7d07714b7135c2e5617",
     urls = ["https://www.frc971.org/Build-Dependencies/libtinfo5_amd64.tar.gz"],
 )
+
+http_archive(
+    name = "libtinfo5_arm64",
+    build_file_content = """
+exports_files(
+    [
+        'lib/aarch64-linux-gnu/libtinfo.so.5',
+        'lib/aarch64-linux-gnu/libtinfo.so.5.9',
+    ],
+    ["//visibility:public"],
+)
+""",
+    patch_cmds = ["touch lib/aarch64-linux-gnu/BUILD"],
+    sha256 = "df4ea5194c80df8d1f5f6ed68b47ce9dbf78aa8cdebbc61cf00654d9075f8e3c",
+    urls = ["https://www.frc971.org/Build-Dependencies/libtinfo5_arm64.tar.gz"],
+)
diff --git a/debian/BUILD b/debian/BUILD
index f699006..3088cf4 100644
--- a/debian/BUILD
+++ b/debian/BUILD
@@ -82,6 +82,10 @@
     ":libtinfo5_amd64.bzl",
     libtinfo5_amd64_debs = "files",
 )
+load(
+    ":libtinfo5_arm64.bzl",
+    libtinfo5_arm64_debs = "files",
+)
 load(":packages.bzl", "download_packages", "generate_deb_tarball")
 
 package(default_visibility = ["//visibility:public"])
@@ -482,6 +486,12 @@
     target_compatible_with = ["@platforms//os:linux"],
 )
 
+generate_deb_tarball(
+    name = "libtinfo5_arm64",
+    files = libtinfo5_arm64_debs,
+    target_compatible_with = ["@platforms//os:linux"],
+)
+
 exports_files([
     "ssh_wrapper.sh",
 ])
diff --git a/debian/libtinfo5_arm64.bzl b/debian/libtinfo5_arm64.bzl
new file mode 100644
index 0000000..7c8764d
--- /dev/null
+++ b/debian/libtinfo5_arm64.bzl
@@ -0,0 +1,3 @@
+files = {
+    "libtinfo5_6.0+20161126-1+deb9u2_arm64.deb": "14e878d5955bce1fb512cec5e6c85b107b89e9675c9252bbad2d0594d4c1e532",
+}
diff --git a/third_party/bazel-toolchain/toolchain/internal/repo.bzl b/third_party/bazel-toolchain/toolchain/internal/repo.bzl
index 3be5388..bf23558 100644
--- a/third_party/bazel-toolchain/toolchain/internal/repo.bzl
+++ b/third_party/bazel-toolchain/toolchain/internal/repo.bzl
@@ -17,12 +17,17 @@
     _os = "os",
 )
 load(
+    "//toolchain/internal:common.bzl",
+    _arch = "arch",
+)
+load(
     "//toolchain/internal:llvm_distributions.bzl",
     _download_llvm_preconfigured = "download_llvm_preconfigured",
 )
 
 def llvm_repo_impl(rctx):
     os = _os(rctx)
+    arch = _arch(rctx)
     if os == "windows":
         rctx.file("BUILD", executable = False)
         return
@@ -33,12 +38,19 @@
         executable = False,
     )
 
-    rctx.symlink(
-        Label("@libtinfo5//lib/x86_64-linux-gnu:libtinfo.so.5.9"),
-        "lib/libtinfo.so.5.9",
-    )
+    if os == "linux":
+        if arch == "x86_64":
+            rctx.symlink(
+                Label("@libtinfo5_amd64//lib/x86_64-linux-gnu:libtinfo.so.5.9"),
+                "lib/libtinfo.so.5.9",
+            )
+        elif arch == "aarch64":
+            rctx.symlink(
+                Label("@libtinfo5_arm64//lib/aarch64-linux-gnu:libtinfo.so.5.9"),
+                "lib/libtinfo.so.5.9",
+            )
 
-    rctx.symlink("lib/libtinfo.so.5.9", "lib/libtinfo.so.5")
+        rctx.symlink("lib/libtinfo.so.5.9", "lib/libtinfo.so.5")
 
     _download_llvm_preconfigured(rctx)