Use the downloaded clang when building for armhf-debian

This makes it work on a barebones Stretch installation.

Also add building for this CPU to the CI script so we know it keeps
working, which means marking everything that's supposed to work
appropriately.

Change-Id: Ic050ce20eae45c6b23e0e42dddb24db3ebc70b84
diff --git a/y2016/BUILD b/y2016/BUILD
index e10be44..24f83e1 100644
--- a/y2016/BUILD
+++ b/y2016/BUILD
@@ -8,6 +8,9 @@
     hdrs = [
         "constants.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     visibility = ["//visibility:public"],
     deps = [
         "//aos:once",
diff --git a/y2016/control_loops/drivetrain/BUILD b/y2016/control_loops/drivetrain/BUILD
index 13c1ba3..f798681 100644
--- a/y2016/control_loops/drivetrain/BUILD
+++ b/y2016/control_loops/drivetrain/BUILD
@@ -1,78 +1,87 @@
-package(default_visibility = ['//visibility:public'])
+package(default_visibility = ["//visibility:public"])
 
-load('//aos/build:queues.bzl', 'queue_library')
+load("//aos/build:queues.bzl", "queue_library")
 
 genrule(
-  name = 'genrule_drivetrain',
-  visibility = ['//visibility:private'],
-  cmd = '$(location //y2016/control_loops/python:drivetrain) $(OUTS)',
-  tools = [
-    '//y2016/control_loops/python:drivetrain',
-  ],
-  outs = [
-    'drivetrain_dog_motor_plant.h',
-    'drivetrain_dog_motor_plant.cc',
-    'kalman_drivetrain_motor_plant.h',
-    'kalman_drivetrain_motor_plant.cc',
-  ],
+    name = "genrule_drivetrain",
+    outs = [
+        "drivetrain_dog_motor_plant.h",
+        "drivetrain_dog_motor_plant.cc",
+        "kalman_drivetrain_motor_plant.h",
+        "kalman_drivetrain_motor_plant.cc",
+    ],
+    cmd = "$(location //y2016/control_loops/python:drivetrain) $(OUTS)",
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    tools = [
+        "//y2016/control_loops/python:drivetrain",
+    ],
+    visibility = ["//visibility:private"],
 )
 
 genrule(
-  name = 'genrule_polydrivetrain',
-  visibility = ['//visibility:private'],
-  cmd = '$(location //y2016/control_loops/python:polydrivetrain) $(OUTS)',
-  tools = [
-    '//y2016/control_loops/python:polydrivetrain',
-  ],
-  outs = [
-    'polydrivetrain_dog_motor_plant.h',
-    'polydrivetrain_dog_motor_plant.cc',
-    'polydrivetrain_cim_plant.h',
-    'polydrivetrain_cim_plant.cc',
-  ],
+    name = "genrule_polydrivetrain",
+    outs = [
+        "polydrivetrain_dog_motor_plant.h",
+        "polydrivetrain_dog_motor_plant.cc",
+        "polydrivetrain_cim_plant.h",
+        "polydrivetrain_cim_plant.cc",
+    ],
+    cmd = "$(location //y2016/control_loops/python:polydrivetrain) $(OUTS)",
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    tools = [
+        "//y2016/control_loops/python:polydrivetrain",
+    ],
+    visibility = ["//visibility:private"],
 )
 
 cc_library(
-  name = 'polydrivetrain_plants',
-  srcs = [
-    'polydrivetrain_dog_motor_plant.cc',
-    'drivetrain_dog_motor_plant.cc',
-    'kalman_drivetrain_motor_plant.cc',
-  ],
-  hdrs = [
-    'polydrivetrain_dog_motor_plant.h',
-    'drivetrain_dog_motor_plant.h',
-    'kalman_drivetrain_motor_plant.h',
-  ],
-  deps = [
-    '//frc971/control_loops:state_feedback_loop',
-  ],
+    name = "polydrivetrain_plants",
+    srcs = [
+        "drivetrain_dog_motor_plant.cc",
+        "kalman_drivetrain_motor_plant.cc",
+        "polydrivetrain_dog_motor_plant.cc",
+    ],
+    hdrs = [
+        "drivetrain_dog_motor_plant.h",
+        "kalman_drivetrain_motor_plant.h",
+        "polydrivetrain_dog_motor_plant.h",
+    ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        "//frc971/control_loops:state_feedback_loop",
+    ],
 )
 
 cc_library(
-  name = 'drivetrain_base',
-  srcs = [
-    'drivetrain_base.cc',
-  ],
-  hdrs = [
-    'drivetrain_base.h',
-  ],
-  deps = [
-    ':polydrivetrain_plants',
-    '//frc971/control_loops/drivetrain:drivetrain_config',
-    '//frc971:shifter_hall_effect',
-    '//y2016:constants',
-  ],
+    name = "drivetrain_base",
+    srcs = [
+        "drivetrain_base.cc",
+    ],
+    hdrs = [
+        "drivetrain_base.h",
+    ],
+    deps = [
+        ":polydrivetrain_plants",
+        "//frc971:shifter_hall_effect",
+        "//frc971/control_loops/drivetrain:drivetrain_config",
+        "//y2016:constants",
+    ],
 )
 
 cc_binary(
-  name = 'drivetrain',
-  srcs = [
-    'drivetrain_main.cc',
-  ],
-  deps = [
-    ':drivetrain_base',
-    '//aos/linux_code:init',
-    '//frc971/control_loops/drivetrain:drivetrain_lib',
-  ],
+    name = "drivetrain",
+    srcs = [
+        "drivetrain_main.cc",
+    ],
+    deps = [
+        ":drivetrain_base",
+        "//aos/linux_code:init",
+        "//frc971/control_loops/drivetrain:drivetrain_lib",
+    ],
 )
diff --git a/y2016/vision/BUILD b/y2016/vision/BUILD
index 3ba7786..1220946 100644
--- a/y2016/vision/BUILD
+++ b/y2016/vision/BUILD
@@ -1,26 +1,35 @@
-load('//tools/build_rules:protobuf.bzl', 'proto_cc_library')
-load('//aos/build:queues.bzl', 'queue_library')
-load('//tools/build_rules:gtk_dependent.bzl', 'gtk_dependent_cc_binary', 'gtk_dependent_cc_library')
+load("//tools/build_rules:protobuf.bzl", "proto_cc_library")
+load("//aos/build:queues.bzl", "queue_library")
+load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary", "gtk_dependent_cc_library")
 
 queue_library(
-  name = 'vision_queue',
-  visibility = ['//visibility:public'],
-  srcs = [
-    'vision.q',
-  ],
+    name = "vision_queue",
+    srcs = [
+        "vision.q",
+    ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    visibility = ["//visibility:public"],
 )
 
 proto_cc_library(
-  name = 'vision_data',
-  src = 'vision_data.proto',
+    name = "vision_data",
+    src = "vision_data.proto",
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 proto_cc_library(
-  name = 'calibration',
-  src = 'calibration.proto',
+    name = "calibration",
+    src = "calibration.proto",
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
-_calibration_values_embedded_before = '''
+_calibration_values_embedded_before = """
 #include "y2016/vision/stereo_geometry.h"
 
 #include <string>
@@ -31,9 +40,9 @@
 namespace vision {
 namespace {
 
-const ::std::string kEmbeddedContents ='''
+const ::std::string kEmbeddedContents ="""
 
-_calibration_values_embedded_after = ''';
+_calibration_values_embedded_after = """;
 
 }  // namespace
 
@@ -44,116 +53,134 @@
 }
 
 }  // namespace vision
-}  // namespace y2016'''
+}  // namespace y2016"""
 
 genrule(
-  name = 'embed_calibration_pb',
-  srcs = [
-    'calibration.pb',
-  ],
-  outs = [
-    'stereo_geometry_embedded.cc',
-  ],
-  cmd = '\n'.join([
-    'echo \'%s\' > $@' % _calibration_values_embedded_before,
-    'cat $(location :calibration.pb) | sed \'s/"/\\\\"/g ; s/^/"/g ; s/$$/\\\\n"/g\' >> $@',
-    'echo \'%s\' >> $@' % _calibration_values_embedded_after,
-  ]),
+    name = "embed_calibration_pb",
+    srcs = [
+        "calibration.pb",
+    ],
+    outs = [
+        "stereo_geometry_embedded.cc",
+    ],
+    cmd = "\n".join([
+        "echo '%s' > $@" % _calibration_values_embedded_before,
+        "cat $(location :calibration.pb) | sed 's/\"/\\\\\"/g ; s/^/\"/g ; s/$$/\\\\n\"/g' >> $@",
+        "echo '%s' >> $@" % _calibration_values_embedded_after,
+    ]),
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_library(
-  name = 'stereo_geometry',
-  hdrs = [
-    'stereo_geometry.h',
-  ],
-  srcs = [
-    'stereo_geometry.cc',
-    'stereo_geometry_embedded.cc',
-  ],
-  deps = [
-    ':calibration',
-    '//aos/common/logging',
-    '//aos/vision/math:vector',
-  ],
+    name = "stereo_geometry",
+    srcs = [
+        "stereo_geometry.cc",
+        "stereo_geometry_embedded.cc",
+    ],
+    hdrs = [
+        "stereo_geometry.h",
+    ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":calibration",
+        "//aos/common/logging",
+        "//aos/vision/math:vector",
+    ],
 )
 
 cc_binary(
-  name = 'target_sender',
-  srcs = ['target_sender.cc'],
-  deps = [
-    '//aos/common:time',
-    '//aos/common/logging:logging',
-    '//aos/common/logging:implementations',
-    '//aos/vision/image:reader',
-    '//aos/vision/image:jpeg_routines',
-    '//aos/vision/image:image_stream',
-    '//y2016/vision:blob_filters',
-    '//aos/vision/events:udp',
-    '//aos/vision/events:epoll_events',
-    '//aos/vision/events:socket_types',
-    ':stereo_geometry',
-    ':vision_data',
-    ':calibration',
-  ],
-  restricted_to = ['//tools:k8', '//tools:armhf-debian'],
+    name = "target_sender",
+    srcs = ["target_sender.cc"],
+    restricted_to = [
+        "//tools:k8",
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":calibration",
+        ":stereo_geometry",
+        ":vision_data",
+        "//aos/common:time",
+        "//aos/common/logging",
+        "//aos/common/logging:implementations",
+        "//aos/vision/events:epoll_events",
+        "//aos/vision/events:socket_types",
+        "//aos/vision/events:udp",
+        "//aos/vision/image:image_stream",
+        "//aos/vision/image:jpeg_routines",
+        "//aos/vision/image:reader",
+        "//y2016/vision:blob_filters",
+    ],
 )
 
 cc_library(
-  name = "blob_filters",
-  srcs = ["blob_filters.cc"],
-  hdrs = ["blob_filters.h"],
-  deps = [
-    "//aos/vision/math:vector",
-    "//aos/vision/math:segment",
-    "//aos/vision/blob:range_image",
-    "//aos/vision/blob:threshold",
-    "//aos/vision/blob:find_blob",
-    "//aos/vision/blob:hierarchical_contour_merge",
-    "//aos/vision/blob:codec",
-  ],
-  visibility = ['//visibility:public'],
-  restricted_to = ['//tools:k8', '//tools:armhf-debian'],
+    name = "blob_filters",
+    srcs = ["blob_filters.cc"],
+    hdrs = ["blob_filters.h"],
+    restricted_to = [
+        "//tools:k8",
+        "//tools:armhf-debian",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [
+        "//aos/vision/blob:codec",
+        "//aos/vision/blob:find_blob",
+        "//aos/vision/blob:hierarchical_contour_merge",
+        "//aos/vision/blob:range_image",
+        "//aos/vision/blob:threshold",
+        "//aos/vision/math:segment",
+        "//aos/vision/math:vector",
+    ],
 )
 
 cc_binary(
-  name = 'target_receiver',
-  srcs = [
-    'target_receiver.cc',
-  ],
-  visibility = ['//visibility:public'],
-  deps = [
-    '//aos/common/logging',
-    '//aos/common/logging:queue_logging',
-    '//aos/linux_code:init',
-    '//aos/common:time',
-    '//aos/vision/events:udp',
-    ':vision_queue',
-    ':vision_data',
-    ':stereo_geometry',
-    '//y2016:constants',
-    '//frc971/control_loops/drivetrain:drivetrain_queue',
-    '//aos/common:mutex',
-  ],
+    name = "target_receiver",
+    srcs = [
+        "target_receiver.cc",
+    ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [
+        ":stereo_geometry",
+        ":vision_data",
+        ":vision_queue",
+        "//aos/common:mutex",
+        "//aos/common:time",
+        "//aos/common/logging",
+        "//aos/common/logging:queue_logging",
+        "//aos/linux_code:init",
+        "//aos/vision/events:udp",
+        "//frc971/control_loops/drivetrain:drivetrain_queue",
+        "//y2016:constants",
+    ],
 )
 
 gtk_dependent_cc_binary(
-  name = "debug_receiver",
-  srcs = ["debug_receiver.cc"],
-  visibility = ['//visibility:public'],
-  deps = [
-    "//aos/vision/image:image_types",
-    "//aos/vision/image:jpeg_routines",
-    "//aos/vision/events:socket_types",
-    "//aos/vision/events:tcp_client",
-    "//aos/vision/events:epoll_events",
-    "//aos/vision/events:gtk_event",
-    "//aos/vision/debug:debug_window",
-    "//aos/vision/blob:range_image",
-    "//aos/vision/blob:codec",
-    "//aos/vision/blob:stream_view",
-    ":stereo_geometry",
-    ":blob_filters",
-    ":vision_data",
-    ":calibration",
-  ],
+    name = "debug_receiver",
+    srcs = ["debug_receiver.cc"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [
+        ":blob_filters",
+        ":calibration",
+        ":stereo_geometry",
+        ":vision_data",
+        "//aos/vision/blob:codec",
+        "//aos/vision/blob:range_image",
+        "//aos/vision/blob:stream_view",
+        "//aos/vision/debug:debug_window",
+        "//aos/vision/events:epoll_events",
+        "//aos/vision/events:gtk_event",
+        "//aos/vision/events:socket_types",
+        "//aos/vision/events:tcp_client",
+        "//aos/vision/image:image_types",
+        "//aos/vision/image:jpeg_routines",
+    ],
 )