Get stuff building with newer Bazel with sandboxing

After this, a newer version of Bazel is required to build the code.
201511240708+4433fa6 is the first version which will work.

Change-Id: Ifc41f11f2f21bdcd0f5f7d142d769ea8fa15921a
diff --git a/aos/externals/BUILD b/aos/externals/BUILD
index e42db6c..55b85d4 100644
--- a/aos/externals/BUILD
+++ b/aos/externals/BUILD
@@ -16,27 +16,31 @@
     'allwpilib/wpilibc/wpilibC++Devices/src/Internal/*.cpp',
     'allwpilib/hal/lib/Athena/*.cpp',
     'allwpilib/hal/lib/Athena/ctre/*.cpp',
+  ], [
+    # This looks like an older version of the file, so we want to use the other
+    # one.
+    'allwpilib/wpilibc/wpilibC++Devices/include/NetworkCommunication/FRCComm.h',
   ]) + [
+    'allwpilib/hal/lib/Athena/NetworkCommunication/FRCComm.h',
     'forwpilib/dma.cc',
+    'allwpilib/ni-libraries/libFRC_NetworkCommunication.so.1.5.0',
+    'allwpilib/ni-libraries/libRoboRIO_FRC_ChipObject.so.1.2.0',
+    'allwpilib/ni-libraries/libNiFpgaLv.so.14.0.0',
+    'allwpilib/ni-libraries/libNiFpga.so.14.0.0',
+    'allwpilib/ni-libraries/libNiRioSrv.so.14.0.0',
+    'allwpilib/ni-libraries/libspi.so.1.0.0',
+    'allwpilib/ni-libraries/libi2c.so.1.0.0',
+  ],
+  defines = [
+    'WPILIB2015=1',
   ],
   copts = [
     '-Wno-error',
   ],
-  hdrs = glob([d + '/*.h' for d in _header_dirs]),
+  hdrs = glob([d + '/**/*.h' for d in _header_dirs] + [d + '/**/*.hpp' for d in _header_dirs]),
   includes = _header_dirs,
   linkopts = [
-    '-Laos/externals/allwpilib/ni-libraries',
     '-lpthread',
-    '-lFRC_NetworkCommunication',
-    '-lRoboRIO_FRC_ChipObject',
-    '-lNiFpgaLv',
-    '-lNiFpga',
-    '-lNiRioSrv',
-    '-lspi',
-    '-li2c',
-  ],
-  defines = [
-    'WPILIB2015=1',
   ],
 )
 
diff --git a/opt_bazel_base_workspace b/opt_bazel_base_workspace
deleted file mode 120000
index 36f5142..0000000
--- a/opt_bazel_base_workspace
+++ /dev/null
@@ -1 +0,0 @@
-/usr/share/lib/bazel/tools/
\ No newline at end of file
diff --git a/third_party/googletest/BUILD b/third_party/googletest/BUILD
index b76b35b..a424c49 100644
--- a/third_party/googletest/BUILD
+++ b/third_party/googletest/BUILD
@@ -368,6 +368,7 @@
 cc_test(
     name = "googletest_gtest_typed_test_test",
     srcs = [
+        "googletest/test/gtest-typed-test_test.h",
         "googletest/test/gtest-typed-test_test.cc",
     ],
     deps = [
@@ -378,6 +379,7 @@
 cc_test(
     name = "googletest_gtest_typed_test2_test",
     srcs = [
+        "googletest/test/gtest-typed-test_test.h",
         "googletest/test/gtest-typed-test2_test.cc",
     ],
     deps = [
@@ -402,6 +404,7 @@
 cc_test(
     name = "googletest_gtest_production_test",
     srcs = [
+        "googletest/test/production.h",
         "googletest/test/production.cc",
     ],
     deps = [
@@ -534,6 +537,7 @@
 cc_test(
     name = "googlemock_gmock_link2_test",
     srcs = [
+        "googlemock/test/gmock_link_test.h",
         "googlemock/test/gmock_link2_test.cc",
     ],
     deps = [
diff --git a/third_party/libevent/BUILD b/third_party/libevent/BUILD
index 97c4fe2..4a05b48 100644
--- a/third_party/libevent/BUILD
+++ b/third_party/libevent/BUILD
@@ -33,12 +33,14 @@
 
     'evthread_pthread.c',
 
-    'include/event2/event-config.h',
-
     #'compat/sys/queue.h',
   ] + glob([
     '*-internal.h',
+    'include/event2/*.h',
   ]),
+  textual_hdrs = [
+    'arc4random.c',
+  ],
   hdrs = [
     'event.h',
     'evhttp.h',
diff --git a/tools/bazel.rc b/tools/bazel.rc
index 6d5dc61..548f82b 100644
--- a/tools/bazel.rc
+++ b/tools/bazel.rc
@@ -1,11 +1,7 @@
-# TODO(Brian): Figure out how we're going to distribute Bazel so everybody
-# doesn't need to hand-edit this file or use a .bazelrc...
-build --package_path %workspace%:%workspace%/opt_bazel_base_workspace
-fetch --package_path %workspace%:%workspace%/opt_bazel_base_workspace
-query --package_path %workspace%:%workspace%/opt_bazel_base_workspace
-
+# Use our CROSSTOOL.
 build --crosstool_top=//tools/cpp:toolchain
-build --spawn_strategy=standalone
+# Don't switch HOST compilers.
+build --host_crosstool_top=//tools/cpp:toolchain
 
 # Show paths to a few more than just 1 target.
 build --show_result 15
diff --git a/tools/build_rules/fortran.bzl b/tools/build_rules/fortran.bzl
index 4de4430..9f564d3 100644
--- a/tools/build_rules/fortran.bzl
+++ b/tools/build_rules/fortran.bzl
@@ -22,7 +22,7 @@
       filtered_cmd.append(flag)
 
   ctx.action(
-    inputs = [ctx.file.src],
+    inputs = [ctx.file.src] + ctx.files._cc_toolchain,
     outputs = [ctx.outputs.pic_o],
     mnemonic = "Fortran",
     executable = ctx.fragments.cpp.compiler_executable,
@@ -45,6 +45,11 @@
   attrs = {
     'src': attr.label(single_file=True, allow_files=FileType(['.f'])),
     'cc_libs': attr.label_list(providers=['cc']),
+    # TODO(Brian): Replace this with something more fine-grained from the
+    # configuration fragment or something.
+    '_cc_toolchain': attr.label(
+      default = Label('//tools/cpp:toolchain'),
+    ),
   },
   outputs = _define_fortran_output,
   fragments = [
@@ -62,9 +67,11 @@
   pic_o_files = []
   for src in srcs:
     pic_o_file = src[:-2] + '.pic.o'
-    _single_fortran_object(name=name + '_' + pic_o_file,
-                           src=src,
-                           visibility=['//visibility:private'])
+    _single_fortran_object(
+      name = name + '_' + pic_o_file,
+      src = src,
+      visibility = ['//visibility:private'],
+    )
     pic_o_files.append(pic_o_file)
 
   native.cc_library(
diff --git a/tools/cpp/BUILD b/tools/cpp/BUILD
index 8b0927f..3a33e0e 100644
--- a/tools/cpp/BUILD
+++ b/tools/cpp/BUILD
@@ -81,6 +81,7 @@
   name = 'roborio-compiler-files',
   srcs = [
     '//tools/cpp/arm-frc-linux-gnueabi:tool-wrappers',
+    '//tools/cpp/arm-frc-linux-gnueabi:as',
     '@arm-frc-linux-gnueabi-repo//:compiler_pieces',
   ],
 )
@@ -90,6 +91,8 @@
   srcs = [
     '//tools/cpp/arm-frc-linux-gnueabi:ld',
     '//tools/cpp/arm-frc-linux-gnueabi:ar',
+    '//tools/cpp/arm-frc-linux-gnueabi:gcc',
+    '@arm-frc-linux-gnueabi-repo//:compiler_pieces',
   ],
 )
 filegroup(
diff --git a/tools/cpp/CROSSTOOL b/tools/cpp/CROSSTOOL
index acf583b..cc8d106 100644
--- a/tools/cpp/CROSSTOOL
+++ b/tools/cpp/CROSSTOOL
@@ -318,38 +318,38 @@
   compiler_flag: "--sysroot=external/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi"
   compiler_flag: "-nostdinc"
   compiler_flag: "-isystem"
-  compiler_flag: "tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.3/include",
+  compiler_flag: "external/arm-frc-linux-gnueabi-repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.3/include",
   compiler_flag: "-isystem"
-  compiler_flag: "tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.3/include-fixed"
+  compiler_flag: "external/arm-frc-linux-gnueabi-repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.3/include-fixed"
   compiler_flag: "-isystem"
-  compiler_flag: "tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/usr/include"
+  compiler_flag: "external/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/usr/include"
 
   cxx_flag: "-isystem"
-  cxx_flag: "tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/include/c++/4.9.3"
+  cxx_flag: "external/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/include/c++/4.9.3"
   cxx_flag: "-isystem"
-  cxx_flag: "tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/include/c++/4.9.3/arm-frc-linux-gnueabi"
+  cxx_flag: "external/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/include/c++/4.9.3/arm-frc-linux-gnueabi"
   cxx_flag: "-isystem"
-  cxx_flag: "tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/include/c++/4.9.3/backward"
+  cxx_flag: "external/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/include/c++/4.9.3/backward"
   cxx_flag: "-isystem"
-  cxx_flag: "tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.3/include"
+  cxx_flag: "external/arm-frc-linux-gnueabi-repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.3/include"
   cxx_flag: "-isystem"
-  cxx_flag: "tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.3/include-fixed"
+  cxx_flag: "external/arm-frc-linux-gnueabi-repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.3/include-fixed"
   cxx_flag: "-isystem"
-  cxx_flag: "tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/include"
+  cxx_flag: "external/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/include"
   cxx_flag: "-isystem"
-  cxx_flag: "tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/usr/include"
+  cxx_flag: "external/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/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: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/include/c++/4.9.3"
-  cxx_builtin_include_directory: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/include/c++/4.9.3/arm-frc-linux-gnueabi"
-  cxx_builtin_include_directory: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/include/c++/4.9.3/backward"
-  cxx_builtin_include_directory: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.3/include"
-  cxx_builtin_include_directory: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.3/include-fixed"
-  cxx_builtin_include_directory: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/include"
-  cxx_builtin_include_directory: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo/usr/arm-frc-linux-gnueabi/usr/include"
+  cxx_builtin_include_directory: "%package(@arm-frc-linux-gnueabi-repo//usr/arm-frc-linux-gnueabi/include)%/c++/4.9.3"
+  cxx_builtin_include_directory: "%package(@arm-frc-linux-gnueabi-repo//usr/arm-frc-linux-gnueabi/include)%/c++/4.9.3/arm-frc-linux-gnueabi"
+  cxx_builtin_include_directory: "%package(@arm-frc-linux-gnueabi-repo//usr/arm-frc-linux-gnueabi/include)%/c++/4.9.3/backward"
+  cxx_builtin_include_directory: "%package(@arm-frc-linux-gnueabi-repo//usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.3/include)%"
+  cxx_builtin_include_directory: "%package(@arm-frc-linux-gnueabi-repo//usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.3/include-fixed)%"
+  cxx_builtin_include_directory: "%package(@arm-frc-linux-gnueabi-repo//usr/arm-frc-linux-gnueabi/include)%"
+  cxx_builtin_include_directory: "%package(@arm-frc-linux-gnueabi-repo//usr/arm-frc-linux-gnueabi/usr/include)%"
 
   linker_flag: "-lstdc++"
   #linker_flag: "-B/usr/bin/"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/BUILD b/tools/cpp/arm-frc-linux-gnueabi/BUILD
index 4548dbe..64342a9 100644
--- a/tools/cpp/arm-frc-linux-gnueabi/BUILD
+++ b/tools/cpp/arm-frc-linux-gnueabi/BUILD
@@ -17,6 +17,14 @@
 )
 
 filegroup(
+  name = 'as',
+  srcs = [
+    '@arm-frc-linux-gnueabi-repo//:as',
+    'arm-frc-linux-gnueabi-as',
+  ],
+)
+
+filegroup(
   name = 'ld',
   srcs = [
     '@arm-frc-linux-gnueabi-repo//:ld',
@@ -61,6 +69,7 @@
   srcs = [
     ':gcc',
     ':ar',
+    ':as',
     ':ld',
     ':nm',
     ':objcopy',
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo
deleted file mode 120000
index 1c8656d..0000000
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-repo
+++ /dev/null
@@ -1 +0,0 @@
-../../../bazel-out/../../external/arm-frc-linux-gnueabi-repo
\ No newline at end of file
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD
index e579f39..438c9f1 100644
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD
@@ -3,7 +3,7 @@
 filegroup(
   name = 'gcc',
   srcs = [
-    'usr/bin/arm-frc-linux-gnueabi-gcc-4.9',
+    'usr/bin/arm-frc-linux-gnueabi-gcc',
   ],
 )
 
@@ -15,6 +15,13 @@
 )
 
 filegroup(
+  name = 'as',
+  srcs = [
+    'usr/bin/arm-frc-linux-gnueabi-as',
+  ],
+)
+
+filegroup(
   name = 'ld',
   srcs = [
     'usr/bin/arm-frc-linux-gnueabi-ld',
@@ -55,6 +62,8 @@
     'usr/bin/**/*',
     'usr/include/**/*',
     'usr/lib/**/*',
+    'usr/arm-frc-linux-gnueabi/**/*',
+    'usr/lib/x86_64-linux-gnu/gcc/**/*',
   ]),
 )
 
@@ -63,6 +72,7 @@
   srcs = [
     ':gcc',
     ':ar',
+    ':as',
     ':ld',
     ':nm',
     ':objcopy',