Use an amd64 Debian Buster sysroot for building

One of the transitive opencv dependencies needs the newer libc.

Change-Id: I4964bc753aa0dc51c9481896354e272c13a164d5
diff --git a/WORKSPACE b/WORKSPACE
index d0d6347..20fbe73 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -156,11 +156,23 @@
 # This copy command to make clang happy: `cp usr/lib/arm-linux-gnueabihf/*.o usr/lib`
 http_archive(
     name = "armhf_debian_rootfs",
-    build_file = "@//:compilers/armhf_debian_rootfs.BUILD",
+    build_file = "@//:compilers/debian_rootfs.BUILD",
     sha256 = "8c827bdb79615046ee3e13e85664e5d01286ca1721f7169341667a634e599eb6",
     url = "http://frc971.org/Build-Dependencies/2019-09-26-raspbian-buster-lite_rootfs.tar.bz2",
 )
 
+# Created with:
+#   `debootstrap buster buster_sysroot`
+# and then chrooting in and running:
+#   apt install libc6-dev libstdc++-7-dev
+# and then tarring up the result
+http_archive(
+    name = "amd64_debian_sysroot",
+    build_file = "@//:compilers/debian_rootfs.BUILD",
+    sha256 = "fb0a4f0b35b4c99fcfc83902d2d2eaac7062024b2ff2f998e68736aac92c8e59",
+    url = "http://frc971.org/Build-Dependencies/2019-01-14-debian-buster_rootfs.tar.bz2",
+)
+
 new_git_repository(
     name = "python_gflags_repo",
     build_file = "@//debian:gflags.BUILD",
diff --git a/compilers/armhf_debian_rootfs.BUILD b/compilers/debian_rootfs.BUILD
similarity index 100%
rename from compilers/armhf_debian_rootfs.BUILD
rename to compilers/debian_rootfs.BUILD
diff --git a/tools/cpp/CROSSTOOL b/tools/cpp/CROSSTOOL
index c15eddf..5ebddd4 100644
--- a/tools/cpp/CROSSTOOL
+++ b/tools/cpp/CROSSTOOL
@@ -150,20 +150,22 @@
   supports_gold_linker: false
   supports_thin_archives: false
   needsPic: true
-  compiler_flag: "--sysroot=external/clang_6p0_repo/"
+  compiler_flag: "--sysroot=external/amd64_debian_sysroot"
   compiler_flag: "-nostdinc"
   compiler_flag: "-isystem"
-  compiler_flag: "external/clang_6p0_repo/usr/include/x86_64-linux-gnu"
+  compiler_flag: "external/amd64_debian_sysroot/usr/include/c++/7"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/amd64_debian_sysroot/usr/include/x86_64-linux-gnu/c++/7"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/amd64_debian_sysroot/usr/include/c++/8/backward"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/amd64_debian_sysroot/usr/lib/gcc/x86_64-linux-gnu/8/include"
   compiler_flag: "-isystem"
   compiler_flag: "external/clang_6p0_repo/usr/lib/llvm-6.0/lib/clang/6.0.0/include"
   compiler_flag: "-isystem"
-  compiler_flag: "external/clang_6p0_repo/usr/include/c++/7.4.0"
+  compiler_flag: "external/amd64_debian_sysroot/usr/include/x86_64-linux-gnu"
   compiler_flag: "-isystem"
-  compiler_flag: "external/clang_6p0_repo/usr/include/x86_64-linux-gnu/c++/7.4.0"
-  compiler_flag: "-isystem"
-  compiler_flag: "external/clang_6p0_repo/usr/include/c++/7.4.0/backward"
-  compiler_flag: "-isystem"
-  compiler_flag: "external/clang_6p0_repo/usr/include"
+  compiler_flag: "external/amd64_debian_sysroot/usr/include"
   compiler_flag: "-D__STDC_FORMAT_MACROS"
   compiler_flag: "-D__STDC_CONSTANT_MACROS"
   compiler_flag: "-D__STDC_LIMIT_MACROS"
@@ -190,19 +192,19 @@
   compiler_flag: "-fno-omit-frame-pointer"
   compiler_flag: "-pipe"
   compiler_flag: "-ggdb3"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/clang_6p0_repo/usr/include"
   linker_flag: "-nodefaultlibs"
-  linker_flag: "--sysroot=external/clang_6p0_repo/"
+  linker_flag: "--sysroot=external/amd64_debian_sysroot"
   linker_flag: "-lstdc++"
   linker_flag: "-lc"
   linker_flag: "-lgcc"
   linker_flag: "-lgcc_s"
   linker_flag: "-Bexternal/clang_6p0_repo/usr/bin/"
   linker_flag: "-Ltools/cpp/clang_6p0/clang_more_libs"
-  linker_flag: "-Lexternal/clang_6p0_repo/lib/x86_64-linux-gnu"
-  linker_flag: "-Lexternal/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
-  linker_flag: "-Lexternal/clang_6p0_repo/usr/lib/gcc/x86_64-linux-gnu"
+  linker_flag: "-Lexternal/amd64_debian_sysroot/usr/lib/gcc/x86_64-linux-gnu/7/"
+  linker_flag: "-Lexternal/amd64_debian_sysroot/usr/lib/x86_64-linux-gnu/"
+  linker_flag: "-Lexternal/amd64_debian_sysroot/usr/lib/"
+  linker_flag: "-Lexternal/amd64_debian_sysroot/lib/x86_64-linux-gnu/"
+  linker_flag: "-Lexternal/amd64_debian_sysroot/lib/"
   linker_flag: "-no-canonical-prefixes"
   linker_flag: "-fuse-ld=gold"
   linker_flag: "-Wl,-z,relro,-z,now"
@@ -224,12 +226,10 @@
   linking_mode_flags {
     mode: DYNAMIC
   }
-  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/c++/7.4.0"
-  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/x86_64-linux-gnu/c++/7.4.0"
-  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/c++/7.4.0/backward"
-  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/local/include"
   cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/lib/llvm-6.0/lib/clang/6.0.0/include"
-  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/x86_64-linux-gnu"
+  cxx_builtin_include_directory: "%package(@amd64_debian_sysroot//usr)%/include"
+  cxx_builtin_include_directory: "%package(@amd64_debian_sysroot//usr)%/lib/gcc/x86_64-linux-gnu/7/include"
+  cxx_builtin_include_directory: "%package(@amd64_debian_sysroot//usr)%/lib/gcc/x86_64-linux-gnu/7/include-fixed"
   builtin_sysroot: ""
   unfiltered_cxx_flag: "-no-canonical-prefixes"
   unfiltered_cxx_flag: "-Wno-builtin-macro-redefined"
diff --git a/tools/cpp/clang_6p0/clang_6p0.BUILD b/tools/cpp/clang_6p0/clang_6p0.BUILD
index e70f8a9..ef674c9 100644
--- a/tools/cpp/clang_6p0/clang_6p0.BUILD
+++ b/tools/cpp/clang_6p0/clang_6p0.BUILD
@@ -88,13 +88,15 @@
 filegroup(
     name = "compiler_pieces",
     srcs = glob(
-        [
+        include = [
             "**",
         ],
         exclude = [
             "usr/share/**",
         ],
-    ),
+    ) + [
+        "@amd64_debian_sysroot//:sysroot_files",
+    ],
 )
 
 filegroup(
diff --git a/tools/cpp/clang_6p0/clang_more_libs/libpthread.so b/tools/cpp/clang_6p0/clang_more_libs/libpthread.so
deleted file mode 100644
index f02ce72..0000000
--- a/tools/cpp/clang_6p0/clang_more_libs/libpthread.so
+++ /dev/null
@@ -1,5 +0,0 @@
-/* GNU ld script
-   Use the shared library, but some functions are only in
-   the static library, so try that secondarily.  */
-OUTPUT_FORMAT(elf64-x86-64)
-GROUP ( libpthread.so.0 libpthread_nonshared.a )
diff --git a/tools/cpp/static_crosstool.pb b/tools/cpp/static_crosstool.pb
index 7261677..242485b 100644
--- a/tools/cpp/static_crosstool.pb
+++ b/tools/cpp/static_crosstool.pb
@@ -107,46 +107,43 @@
   tool_path { name: "strip" path: "clang_6p0/x86_64-linux-gnu-strip" }
   linking_mode_flags { mode: DYNAMIC }
 
-  compiler_flag: "--sysroot=external/clang_6p0_repo/"
+  compiler_flag: "--sysroot=external/amd64_debian_sysroot"
   compiler_flag: "-nostdinc"
   compiler_flag: "-isystem"
-  compiler_flag: "external/clang_6p0_repo/usr/include/x86_64-linux-gnu",
+  compiler_flag: "external/amd64_debian_sysroot/usr/include/c++/7"
   compiler_flag: "-isystem"
-  compiler_flag: "external/clang_6p0_repo/usr/lib/llvm-6.0/lib/clang/6.0.0/include",
+  compiler_flag: "external/amd64_debian_sysroot/usr/include/x86_64-linux-gnu/c++/7"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/amd64_debian_sysroot/usr/include/c++/8/backward"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/amd64_debian_sysroot/usr/lib/gcc/x86_64-linux-gnu/8/include"
+  # We don't have anything in /usr/local/include, so don't include it here where
+  # would normally go on the default search path.
+  compiler_flag: "-isystem"
+  compiler_flag: "external/clang_6p0_repo/usr/lib/llvm-6.0/lib/clang/6.0.0/include"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/amd64_debian_sysroot/usr/include/x86_64-linux-gnu"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/amd64_debian_sysroot/usr/include"
 
-  compiler_flag: "-isystem"
-  compiler_flag: "external/clang_6p0_repo/usr/include/c++/7.4.0"
-  compiler_flag: "-isystem"
-  compiler_flag: "external/clang_6p0_repo/usr/include/x86_64-linux-gnu/c++/7.4.0"
-  compiler_flag: "-isystem"
-  compiler_flag: "external/clang_6p0_repo/usr/include/c++/7.4.0/backward"
-  compiler_flag: "-isystem"
-  compiler_flag: "external/clang_6p0_repo/usr/include"
-
-  # TODO(bazel-team): In theory, the path here ought to exactly match the path
-  # used by gcc. That works because bazel currently doesn't track files at
-  # absolute locations and has no remote execution, yet. However, this will need
-  # to be fixed, maybe with auto-detection?
-  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/c++/7.4.0"
-  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/x86_64-linux-gnu/c++/7.4.0"
-  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/c++/7.4.0/backward"
-  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/local/include"
   cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/lib/llvm-6.0/lib/clang/6.0.0/include"
-  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/x86_64-linux-gnu"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/clang_6p0_repo/usr/include"
+  cxx_builtin_include_directory: "%package(@amd64_debian_sysroot//usr)%/include"
+  cxx_builtin_include_directory: "%package(@amd64_debian_sysroot//usr)%/lib/gcc/x86_64-linux-gnu/7/include"
+  cxx_builtin_include_directory: "%package(@amd64_debian_sysroot//usr)%/lib/gcc/x86_64-linux-gnu/7/include-fixed"
 
   linker_flag: "-nodefaultlibs"
-  linker_flag: "--sysroot=external/clang_6p0_repo/"
+  linker_flag: "--sysroot=external/amd64_debian_sysroot"
   linker_flag: "-lstdc++"
   linker_flag: "-lc"
   linker_flag: "-lgcc"
   linker_flag: "-lgcc_s"
   linker_flag: "-Bexternal/clang_6p0_repo/usr/bin/"
   linker_flag: "-Ltools/cpp/clang_6p0/clang_more_libs"
-  linker_flag: "-Lexternal/clang_6p0_repo/lib/x86_64-linux-gnu"
-  linker_flag: "-Lexternal/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
-  linker_flag: "-Lexternal/clang_6p0_repo/usr/lib/gcc/x86_64-linux-gnu"
+  linker_flag: "-Lexternal/amd64_debian_sysroot/usr/lib/gcc/x86_64-linux-gnu/7/"
+  linker_flag: "-Lexternal/amd64_debian_sysroot/usr/lib/x86_64-linux-gnu/"
+  linker_flag: "-Lexternal/amd64_debian_sysroot/usr/lib/"
+  linker_flag: "-Lexternal/amd64_debian_sysroot/lib/x86_64-linux-gnu/"
+  linker_flag: "-Lexternal/amd64_debian_sysroot/lib/"
 
   feature {
     name: "opt"