Switch to a preconfigured Clang for k8 and armv7

This one reuses more of Bazel's builtin features to remain up to date
more easily, and it's easier to expand support for more platforms. This
also takes care of upgrading to a newer Clang.

This will require updating to raspios bullseye on the Raspberry Pis.
This also renames armhf-debian to armv7 to match the broader Bazel
ecosystem's name for this architecture.

Change-Id: I3e2a4f4efea43e76314ca34a9293c7b4b45edd2c
Signed-off-by: Brian Silverman <bsilver16834@gmail.com>
diff --git a/frc971/analysis/py_log_reader.cc b/frc971/analysis/py_log_reader.cc
index 4485cca..6ee6c69 100644
--- a/frc971/analysis/py_log_reader.cc
+++ b/frc971/analysis/py_log_reader.cc
@@ -253,16 +253,26 @@
     {nullptr, 0, 0, nullptr} /* Sentinel */
 };
 
+#ifdef __clang__
+// These extensions to C++ syntax do surprising things in C++, but for these
+// uses none of them really matter I think, and the alternatives are really
+// annoying.
+#pragma clang diagnostic ignored "-Wc99-designator"
+#endif
+
 static PyTypeObject LogReaderType = {
-    PyVarObject_HEAD_INIT(NULL, 0).tp_name = "py_log_reader.LogReader",
-    .tp_doc = "LogReader objects",
+    PyVarObject_HEAD_INIT(NULL, 0)
+        // The previous macro initializes some fields, leave a comment to help
+        // clang-format not make this uglier.
+        .tp_name = "py_log_reader.LogReader",
     .tp_basicsize = sizeof(LogReaderType),
     .tp_itemsize = 0,
-    .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-    .tp_new = LogReader_new,
-    .tp_init = (initproc)LogReader_init,
     .tp_dealloc = (destructor)LogReader_dealloc,
+    .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+    .tp_doc = "LogReader objects",
     .tp_methods = LogReader_methods,
+    .tp_init = (initproc)LogReader_init,
+    .tp_new = LogReader_new,
 };
 
 static PyModuleDef log_reader_module = {