Merge branch 'master' into karthik/bazel051
diff --git a/.travis.yml b/.travis.yml
index 556935b..30e1d9a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -25,9 +25,9 @@
 
 before_install:
   # download and install bazel
-  - wget -q 'https://github.com/bazelbuild/bazel/releases/download/0.3.1/bazel-0.3.1-installer-linux-x86_64.sh'
-  - chmod +x bazel-0.3.1-installer-linux-x86_64.sh
-  - ./bazel-0.3.1-installer-linux-x86_64.sh --user
+  - wget -q 'https://github.com/bazelbuild/bazel/releases/download/0.5.4/bazel-0.5.4-installer-linux-x86_64.sh'
+  - chmod +x bazel-0.5.4-installer-linux-x86_64.sh
+  - ./bazel-0.5.4-installer-linux-x86_64.sh --user
 
 before_script:
   # install python module for wheel files
diff --git a/docker/compile/Dockerfile.centos7 b/docker/compile/Dockerfile.centos7
index e83456d..8abb5a1 100644
--- a/docker/compile/Dockerfile.centos7
+++ b/docker/compile/Dockerfile.centos7
@@ -2,9 +2,7 @@
 
 # This is passed to the heron build command via the --config flag
 ENV TARGET_PLATFORM centos
-ENV bazelVersion 0.2.3
-ENV JAVA_VERSION 8u31
-ENV BUILD_VERSION b13
+ENV bazelVersion 0.5.4
 
 RUN yum -y upgrade
 RUN yum -y install \
diff --git a/docker/compile/Dockerfile.ubuntu14.04 b/docker/compile/Dockerfile.ubuntu14.04
index a1bd885..f23f235 100644
--- a/docker/compile/Dockerfile.ubuntu14.04
+++ b/docker/compile/Dockerfile.ubuntu14.04
@@ -2,7 +2,7 @@
 
 # This is passed to the heron build command via the --config flag
 ENV TARGET_PLATFORM ubuntu
-ENV bazelVersion 0.2.3
+ENV bazelVersion 0.5.4
 
 RUN apt-get update && apt-get -y install \
       automake \
diff --git a/docker/compile/Dockerfile.ubuntu15.10 b/docker/compile/Dockerfile.ubuntu15.10
index b7cd58a..b2e50f4 100644
--- a/docker/compile/Dockerfile.ubuntu15.10
+++ b/docker/compile/Dockerfile.ubuntu15.10
@@ -2,7 +2,7 @@
 
 # This is passed to the heron build command via the --config flag
 ENV TARGET_PLATFORM ubuntu
-ENV bazelVersion 0.2.3
+ENV bazelVersion 0.5.4
 
 RUN apt-get update && apt-get -y install \
       automake \
diff --git a/docker/compile/Dockerfile.ubuntu16.04 b/docker/compile/Dockerfile.ubuntu16.04
index e11cd68..073e098 100644
--- a/docker/compile/Dockerfile.ubuntu16.04
+++ b/docker/compile/Dockerfile.ubuntu16.04
@@ -2,7 +2,7 @@
 
 # This is passed to the heron build command via the --config flag
 ENV TARGET_PLATFORM ubuntu
-ENV bazelVersion 0.2.3
+ENV bazelVersion 0.5.4
 
 RUN apt-get update && apt-get -y install \
       automake \
diff --git a/heron/downloaders/src/shell/BUILD b/heron/downloaders/src/shell/BUILD
index 58dac4b..9e8f783 100644
--- a/heron/downloaders/src/shell/BUILD
+++ b/heron/downloaders/src/shell/BUILD
@@ -1,8 +1,6 @@
 package(default_visibility = ["//visibility:public"])
 
-genrule(
-  name = "heron-downloader-shell",
-  srcs = [":heron-downloader.sh"],
-  outs = ["heron-downloader"],
-  cmd  = "cp $< $@",
+sh_binary(
+  name = "heron-downloader",
+  srcs = ["heron-downloader.sh"],
 )
diff --git a/heron/metricsmgr/src/java/com/twitter/heron/metricsmgr/sink/WebSink.java b/heron/metricsmgr/src/java/com/twitter/heron/metricsmgr/sink/WebSink.java
index d81e9c3..a488a42 100644
--- a/heron/metricsmgr/src/java/com/twitter/heron/metricsmgr/sink/WebSink.java
+++ b/heron/metricsmgr/src/java/com/twitter/heron/metricsmgr/sink/WebSink.java
@@ -26,6 +26,7 @@
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import java.util.stream.Stream;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 
@@ -122,9 +123,8 @@
     int port = TypeUtils.getInteger(conf.getOrDefault(KEY_PORT, 0));
     if (port == 0) {
       if (!Strings.isNullOrEmpty(portFile)) {
-        try {
-          port = TypeUtils.getInteger(Files.lines(Paths.get(portFile)).findFirst()
-                  .get().trim());
+        try (Stream<String> lines = Files.lines(Paths.get(portFile))) {
+          port = TypeUtils.getInteger(lines.findFirst().get().trim());
         } catch (IOException | SecurityException | IllegalArgumentException e) {
           throw new IllegalArgumentException("Could not parse " + KEY_PORT_FILE + " " + portFile
                   + " Make sure the file is readable,"
diff --git a/heron/spi/src/java/com/twitter/heron/spi/common/Config.java b/heron/spi/src/java/com/twitter/heron/spi/common/Config.java
index 5a82937..e942e1d 100644
--- a/heron/spi/src/java/com/twitter/heron/spi/common/Config.java
+++ b/heron/spi/src/java/com/twitter/heron/spi/common/Config.java
@@ -290,7 +290,7 @@
   }
 
   public boolean containsKey(Key key) {
-    return cfgMap.containsKey(key);
+    return cfgMap.containsKey(key.value());
   }
 
   public Set<String> getKeySet() {
diff --git a/heron/stmgr/tests/cpp/server/stmgr_unittest.cpp b/heron/stmgr/tests/cpp/server/stmgr_unittest.cpp
index 66b443b..e0d33cc 100644
--- a/heron/stmgr/tests/cpp/server/stmgr_unittest.cpp
+++ b/heron/stmgr/tests/cpp/server/stmgr_unittest.cpp
@@ -388,11 +388,11 @@
   sp_string zkhostportlist_;
   sp_string topology_name_;
   sp_string topology_id_;
-  sp_int32 num_stmgrs_;
-  sp_int32 num_spouts_;
-  sp_int32 num_spout_instances_;
-  sp_int32 num_bolts_;
-  sp_int32 num_bolt_instances_;
+  size_t num_stmgrs_;
+  size_t num_spouts_;
+  size_t num_spout_instances_;
+  size_t num_bolts_;
+  size_t num_bolt_instances_;
 
   // store the stmgr server port returned by bind/listen 0
   std::vector<sp_int32> stmgr_ports_;
diff --git a/heron/tmaster/src/cpp/manager/tmaster.cpp b/heron/tmaster/src/cpp/manager/tmaster.cpp
index c617ede..267ff79 100644
--- a/heron/tmaster/src/cpp/manager/tmaster.cpp
+++ b/heron/tmaster/src/cpp/manager/tmaster.cpp
@@ -170,7 +170,7 @@
       // In case a assignment already exists, we will throw this
       // list out and re-init with whats in assignment.
       absent_stmgrs_.clear();
-      for (sp_uint32 i = 0; i < packing_plan_->container_plans_size(); ++i) {
+      for (sp_int32 i = 0; i < packing_plan_->container_plans_size(); ++i) {
         LOG(INFO) << "Adding container id " << packing_plan_->container_plans(i).id()
                   << " to absent_stmgrs_";
         // the packing plan represents container ids by the numerical id of the container. The
diff --git a/scripts/packages/BUILD b/scripts/packages/BUILD
index bb8aaed..18fdfbe 100644
--- a/scripts/packages/BUILD
+++ b/scripts/packages/BUILD
@@ -85,7 +85,7 @@
 pkg_tar(
     name = "heron-core",
     extension = "tar.gz",
-    files = generated_release_files,
+    srcs = generated_release_files,
     deps = [
         ":heron-core-bin",
         ":heron-core-lib-scheduler",
@@ -104,67 +104,67 @@
 pkg_tar(
     name = "heron-core-bin",
     package_dir = "heron-core/bin",
-    files = heron_core_bin_files(),
+    srcs = heron_core_bin_files(),
 )
 
 pkg_tar(
     name = "heron-core-lib-scheduler",
     package_dir = "heron-core/lib/scheduler",
-    files = heron_core_lib_scheduler_files(),
+    srcs = heron_core_lib_scheduler_files(),
 )
 
 pkg_tar(
     name = "heron-core-lib-packing",
     package_dir = "heron-core/lib/packing",
-    files = heron_core_lib_packing_files(),
+    srcs = heron_core_lib_packing_files(),
 )
 
 pkg_tar(
     name = "heron-core-lib-healthmgr",
     package_dir = "heron-core/lib/healthmgr",
-    files = heron_core_lib_healthmgr_files(),
+    srcs = heron_core_lib_healthmgr_files(),
 )
 
 pkg_tar(
     name = "heron-core-lib-metricsmgr",
     package_dir = "heron-core/lib/metricsmgr",
-    files = heron_core_lib_metricsmgr_files(),
+    srcs = heron_core_lib_metricsmgr_files(),
 )
 
 pkg_tar(
     name = "heron-core-lib-metricscachemgr",
     package_dir = "heron-core/lib/metricscachemgr",
-    files = heron_core_lib_metricscachemgr_files(),
+    srcs = heron_core_lib_metricscachemgr_files(),
 )
 
 pkg_tar(
     name = "heron-core-lib-statemgr",
     package_dir = "heron-core/lib/statemgr",
-    files = heron_core_lib_statemgr_files(),
+    srcs = heron_core_lib_statemgr_files(),
 )
 
 pkg_tar(
     name = "heron-core-lib-instance",
     package_dir = "heron-core/lib/instance",
-    files = heron_core_lib_instance_files(),
+    srcs = heron_core_lib_instance_files(),
 )
 
 pkg_tar(
     name = "heron-core-lib-ckptmgr",
     package_dir = "heron-core/lib/ckptmgr",
-    files = heron_core_lib_ckptmgr_files(),
+    srcs = heron_core_lib_ckptmgr_files(),
 )
 
 pkg_tar(
     name = "heron-core-lib-statefulstorage",
     package_dir = "heron-core/lib/statefulstorage",
-    files = heron_core_lib_statefulstorage_files(),
+    srcs = heron_core_lib_statefulstorage_files(),
 )
 
 pkg_tar(
     name = "heron-core-lib-downloader",
     package_dir = "heron-core/lib/downloaders",
-    files = heron_core_lib_downloader_files(),
+    srcs = heron_core_lib_downloader_files(),
 )
 
 ################################################################################
@@ -173,26 +173,26 @@
 pkg_tar(
     name = "heron-tools-bin",
     package_dir = "bin",
-    files = heron_tools_bin_files(),
+    srcs = heron_tools_bin_files(),
 )
 
 pkg_tar(
     name = "heron-tools-lib",
     package_dir = "lib",
-    files = heron_tools_lib_files(),
+    srcs = heron_tools_lib_files(),
 )
 
 pkg_tar(
     name = "heron-tools-conf",
     package_dir = "conf",
-    files = heron_tools_conf_files()
+    srcs = heron_tools_conf_files()
 )
 
 pkg_tar(
     name = "heron-tools-cluster-conf",
     strip_prefix = "/heron/config/src/yaml/conf",
     package_dir = "conf",
-    files = [
+    srcs = [
       "//heron/config/src/yaml:conf-yaml"
     ],
 )
@@ -200,7 +200,7 @@
 pkg_tar(
     name = "heron-tools",
     extension = "tar.gz",
-    files = generated_release_files,
+    srcs = generated_release_files,
     deps = [
         ":heron-tools-bin",
         ":heron-tools-lib",
@@ -215,56 +215,56 @@
 pkg_tar(
     name = "heron-client-bin",
     package_dir = "bin",
-    files = heron_client_bin_files(),
+    srcs = heron_client_bin_files(),
 )
 
 pkg_tar(
     name = "heron-client-lib-scheduler",
     package_dir = "lib/scheduler",
-    files = heron_client_lib_scheduler_files(),
+    srcs = heron_client_lib_scheduler_files(),
 )
 
 pkg_tar(
     name = "heron-client-lib-packing",
     package_dir = "lib/packing",
-    files = heron_client_lib_packing_files(),
+    srcs = heron_client_lib_packing_files(),
 )
 
 pkg_tar(
     name = "heron-client-lib-statemgr",
     package_dir = "lib/statemgr",
-    files = heron_client_lib_statemgr_files(),
+    srcs = heron_client_lib_statemgr_files(),
 )
 
 pkg_tar(
     name = "heron-client-lib-uploader",
     package_dir = "lib/uploader",
-    files = heron_client_lib_uploader_files(),
+    srcs = heron_client_lib_uploader_files(),
 )
 
 pkg_tar(
     name = "heron-client-lib-healthmgr",
     package_dir = "lib/healthmgr",
-    files = heron_client_lib_healthmgr_files(),
+    srcs = heron_client_lib_healthmgr_files(),
 )
 
 pkg_tar(
     name = "heron-client-lib-third_party",
     package_dir = "lib/third_party",
-    files = heron_client_lib_third_party_files(),
+    srcs = heron_client_lib_third_party_files(),
 )
 
 pkg_tar(
     name = "heron-client-examples",
     package_dir = "examples",
-    files = heron_examples_files(),
+    srcs = heron_examples_files(),
 )
 
 pkg_tar(
     name = "heron-client-conf",
     strip_prefix = "/heron/config/src/yaml/conf",
     package_dir = "conf",
-    files = [
+    srcs = [
         "//heron/config/src/yaml:conf-yaml",
     ]
 )
@@ -272,13 +272,13 @@
 pkg_tar(
     name = "heron-client-dist",
     package_dir = "dist",
-    files = [":heron-core"],
+    srcs = [":heron-core"],
 )
 
 pkg_tar(
     name = "heron-client",
     extension = "tar.gz",
-    files = generated_release_files,
+    srcs = generated_release_files,
     deps = [
         ":heron-client-bin",
         ":heron-client-conf",
@@ -299,7 +299,7 @@
 pkg_tar(
     name = "heron-tests-bin",
     package_dir = "bin",
-    files = [
+    srcs = [
         "//integration_test/src/python/http_server:http-server",
         "//integration_test/src/python/test_runner:test-runner",
     ]
@@ -308,7 +308,7 @@
 pkg_tar(
     name = "heron-tests-data-java",
     package_dir = "data/java",
-    files = [
+    srcs = [
         "//integration_test/src/java:test-data-files",
     ],
 )
@@ -316,7 +316,7 @@
 pkg_tar(
     name = "heron-tests-data-python",
     package_dir = "data/python",
-    files = [
+    srcs = [
         "//integration_test/src/python/integration_test/topology:test-data-files",
     ],
 )
@@ -324,7 +324,7 @@
 pkg_tar(
     name = "heron-tests-lib",
     package_dir = "lib",
-    files = [
+    srcs = [
        "//integration_test/src/java:integration-tests",
        "//integration_test/src/python/integration_test/topology:heron_integ_topology",
     ],
@@ -333,7 +333,7 @@
 pkg_tar(
     name = "heron-tests",
     extension = "tar.gz",
-    files = generated_release_files,
+    srcs = generated_release_files,
     deps = [
         ":heron-tests-bin",
         ":heron-tests-data-java",
@@ -348,7 +348,7 @@
 pkg_tar(
     name = "heron-api",
     extension = "tar.gz",
-    files = generated_release_files + heron_api_files(),
+    srcs = generated_release_files + heron_api_files(),
 )
 
 ################################################################################
diff --git a/third_party/gflags/BUILD b/third_party/gflags/BUILD
index 5aefe91..094cef1 100644
--- a/third_party/gflags/BUILD
+++ b/third_party/gflags/BUILD
@@ -2,11 +2,11 @@
 
 package(default_visibility = ["//visibility:public"])
 
-package_name = "gflags"
-package_version = "2.2.1"
+pkg_name = "gflags"
+pkg_version = "2.2.1"
 
-package_file = package_name + "-" + package_version + ".tar.gz"
-package_dir = package_name + "-" + package_version
+package_file = pkg_name + "-" + pkg_version + ".tar.gz"
+package_dir = pkg_name + "-" + pkg_version
 
 include_files = [
     "include/gflags/gflags.h",
diff --git a/third_party/gflags/empty.cc b/third_party/gflags/empty.cc
index e69de29..9bbe779 100644
--- a/third_party/gflags/empty.cc
+++ b/third_party/gflags/empty.cc
@@ -0,0 +1,2 @@
+void _empty_xyz() {
+}
diff --git a/third_party/glog/BUILD b/third_party/glog/BUILD
index 1b2eca9..f2d681c 100644
--- a/third_party/glog/BUILD
+++ b/third_party/glog/BUILD
@@ -2,11 +2,11 @@
 
 package(default_visibility = ["//visibility:public"])
 
-package_name = "glog"
-package_version = "0.3.5"
+pkg_name = "glog"
+pkg_version = "0.3.5"
 
-package_file = package_name + "-" + package_version + ".tar.gz"
-package_dir = package_name + "-" + package_version
+package_file = pkg_name + "-" + pkg_version + ".tar.gz"
+package_dir = pkg_name + "-" + pkg_version
 
 include_files = [
     "include/glog/log_severity.h",
diff --git a/third_party/glog/empty.cc b/third_party/glog/empty.cc
index e69de29..9bbe779 100644
--- a/third_party/glog/empty.cc
+++ b/third_party/glog/empty.cc
@@ -0,0 +1,2 @@
+void _empty_xyz() {
+}
diff --git a/third_party/gperftools/BUILD b/third_party/gperftools/BUILD
index 195b2e2..f492644 100644
--- a/third_party/gperftools/BUILD
+++ b/third_party/gperftools/BUILD
@@ -2,11 +2,11 @@
 
 package(default_visibility = ["//visibility:public"])
 
-package_name = "gperftools"
-package_version = "2.4"
+pkg_name = "gperftools"
+pkg_version = "2.4"
 
-package_file = package_name + "-" + package_version + ".tar.gz"
-package_dir = package_name + "-" + package_version
+package_file = pkg_name + "-" + pkg_version + ".tar.gz"
+package_dir = pkg_name + "-" + pkg_version
 
 COMMON_EXECUTE = [
     "export UNWIND_DIR=$$(pwd)/$(GENDIR)/third_party/libunwind",
diff --git a/third_party/gperftools/empty.cc b/third_party/gperftools/empty.cc
index e69de29..9bbe779 100644
--- a/third_party/gperftools/empty.cc
+++ b/third_party/gperftools/empty.cc
@@ -0,0 +1,2 @@
+void _empty_xyz() {
+}
diff --git a/third_party/gtest/BUILD b/third_party/gtest/BUILD
index 64b21c5..baca57d 100644
--- a/third_party/gtest/BUILD
+++ b/third_party/gtest/BUILD
@@ -2,11 +2,11 @@
 
 package(default_visibility = ["//visibility:public"])
 
-package_name = "googletest-release"
-package_version = "1.8.0"
+pkg_name = "googletest-release"
+pkg_version = "1.8.0"
 
-package_file = package_name + "-" + package_version + ".zip"
-package_dir = package_name + "-" + package_version
+package_file = pkg_name + "-" + pkg_version + ".zip"
+package_dir = pkg_name + "-" + pkg_version
 
 gtest_include_files = [
     "include/gtest/gtest-death-test.h",
diff --git a/third_party/gtest/empty.cc b/third_party/gtest/empty.cc
index e69de29..9bbe779 100644
--- a/third_party/gtest/empty.cc
+++ b/third_party/gtest/empty.cc
@@ -0,0 +1,2 @@
+void _empty_xyz() {
+}
diff --git a/third_party/kashmir/empty.cc b/third_party/kashmir/empty.cc
index e69de29..9bbe779 100644
--- a/third_party/kashmir/empty.cc
+++ b/third_party/kashmir/empty.cc
@@ -0,0 +1,2 @@
+void _empty_xyz() {
+}
diff --git a/third_party/libevent/BUILD b/third_party/libevent/BUILD
index dc81e92..6e19c4a 100644
--- a/third_party/libevent/BUILD
+++ b/third_party/libevent/BUILD
@@ -2,11 +2,11 @@
 
 package(default_visibility = ["//visibility:public"])
 
-package_name = "libevent"
-package_version = "2.1.8-stable"
+pkg_name = "libevent"
+pkg_version = "2.1.8-stable"
 
-package_file = package_name + "-" + package_version + ".tar.gz"
-package_dir = package_name + "-" + package_version
+package_file = pkg_name + "-" + pkg_version + ".tar.gz"
+package_dir = pkg_name + "-" + pkg_version
 
 include_files = [
     "include/evdns.h",
diff --git a/third_party/libevent/empty.cc b/third_party/libevent/empty.cc
index e69de29..9bbe779 100644
--- a/third_party/libevent/empty.cc
+++ b/third_party/libevent/empty.cc
@@ -0,0 +1,2 @@
+void _empty_xyz() {
+}
diff --git a/third_party/libunwind/BUILD b/third_party/libunwind/BUILD
index 0104b6b..4f56e5f 100644
--- a/third_party/libunwind/BUILD
+++ b/third_party/libunwind/BUILD
@@ -2,11 +2,11 @@
 
 package(default_visibility = ["//visibility:public"])
 
-package_name = "libunwind"
-package_version = "1.1"
+pkg_name = "libunwind"
+pkg_version = "1.1"
 
-package_file = package_name + "-" + package_version + ".tar.gz"
-package_dir = package_name + "-" + package_version
+package_file = pkg_name + "-" + pkg_version + ".tar.gz"
+package_dir = pkg_name + "-" + pkg_version
 lzma_patch = "libunwind-1.1-lzma-link.patch"
 config_patch = "libunwind-1.1-config.patch"
 cache_patch = "libunwind-1.1-cache.patch"
diff --git a/third_party/libunwind/empty.cc b/third_party/libunwind/empty.cc
index e69de29..9bbe779 100644
--- a/third_party/libunwind/empty.cc
+++ b/third_party/libunwind/empty.cc
@@ -0,0 +1,2 @@
+void _empty_xyz() {
+}
diff --git a/third_party/protobuf/BUILD b/third_party/protobuf/BUILD
index af55ea9..a9adca7 100644
--- a/third_party/protobuf/BUILD
+++ b/third_party/protobuf/BUILD
@@ -2,12 +2,12 @@
 
 package(default_visibility = ["//visibility:public"])
 
-package_name = "protobuf"
-package_version = "2.5.0"
+pkg_name = "protobuf"
+pkg_version = "2.5.0"
 
-package_file = package_name + "-" + package_version + ".tar.gz"
-package_dir = package_name + "-" + package_version
-package_patch = package_name + "-" + package_version + ".patch"
+package_file = pkg_name + "-" + pkg_version + ".tar.gz"
+package_dir = pkg_name + "-" + pkg_version
+package_patch = pkg_name + "-" + pkg_version + ".patch"
 
 bin_files = [
     "bin/protoc",
diff --git a/third_party/protobuf/empty.cc b/third_party/protobuf/empty.cc
index e69de29..9bbe779 100644
--- a/third_party/protobuf/empty.cc
+++ b/third_party/protobuf/empty.cc
@@ -0,0 +1,2 @@
+void _empty_xyz() {
+}
diff --git a/third_party/python/cpplint/cpplint.py b/third_party/python/cpplint/cpplint.py
index eb64099..79516dd 100755
--- a/third_party/python/cpplint/cpplint.py
+++ b/third_party/python/cpplint/cpplint.py
@@ -6245,8 +6245,18 @@
   # When reading from stdin, the extension is unknown, so no cpplint tests
   # should rely on the extension.
   if filename != '-' and file_extension not in GetAllExtensions():
-    _cpplint_state.PrintError('Ignoring %s; not a valid file name '
-                     '(%s)\n' % (filename, ', '.join(GetAllExtensions())))
+    # bazel 0.5.1> uses four distinct generated files that gives a warning
+    # we suppress the warning for these files
+    bazel_gen_files = set([ 
+        "external/local_config_cc/libtool",
+        "external/local_config_cc/make_hashed_objlist.py", 
+        "external/local_config_cc/wrapped_ar",
+        "external/local_config_cc/wrapped_clang",
+        "external/local_config_cc/xcrunwrapper.sh",
+    ])
+    if not filename in bazel_gen_files:
+       _cpplint_state.PrintError('Ignoring %s; not a valid file name '
+                                 '(%s)\n' % (filename, ', '.join(GetAllExtensions())))
   else:
     ProcessFileData(filename, file_extension, lines, Error,
                     extra_check_functions)
diff --git a/third_party/yaml-cpp/BUILD b/third_party/yaml-cpp/BUILD
index 54030c2..7d1f5d7 100644
--- a/third_party/yaml-cpp/BUILD
+++ b/third_party/yaml-cpp/BUILD
@@ -2,11 +2,11 @@
 
 package(default_visibility = ["//visibility:public"])
 
-package_name = "yaml-cpp"
-package_version = "noboost"
+pkg_name = "yaml-cpp"
+pkg_version = "noboost"
 
-package_file = package_name + "-" + package_version + ".tar.gz"
-package_dir = package_name + "-" + package_version
+package_file = pkg_name + "-" + pkg_version + ".tar.gz"
+package_dir = pkg_name + "-" + pkg_version
 
 include_files = [
     "include/yaml-cpp/yaml.h",
diff --git a/third_party/yaml-cpp/empty.cc b/third_party/yaml-cpp/empty.cc
index e69de29..9bbe779 100644
--- a/third_party/yaml-cpp/empty.cc
+++ b/third_party/yaml-cpp/empty.cc
@@ -0,0 +1,2 @@
+void _empty_xyz() {
+}
diff --git a/third_party/zookeeper/BUILD b/third_party/zookeeper/BUILD
index 6d4c74c..c227d14 100644
--- a/third_party/zookeeper/BUILD
+++ b/third_party/zookeeper/BUILD
@@ -2,11 +2,11 @@
 
 package(default_visibility = ["//visibility:public"])
 
-package_name = "zookeeper"
-package_version = "3.4.10"
+pkg_name = "zookeeper"
+pkg_version = "3.4.10"
 
-package_file = package_name + "-" + package_version + ".tar.gz"
-package_dir = package_name + "-" + package_version
+package_file = pkg_name + "-" + pkg_version + ".tar.gz"
+package_dir = pkg_name + "-" + pkg_version
 
 genrule(
     name = "zookeeper-srcs",
diff --git a/third_party/zookeeper/empty.cc b/third_party/zookeeper/empty.cc
index e69de29..9bbe779 100644
--- a/third_party/zookeeper/empty.cc
+++ b/third_party/zookeeper/empty.cc
@@ -0,0 +1,2 @@
+void _empty_xyz() {
+}
diff --git a/tools/applatix/bazel.rc b/tools/applatix/bazel.rc
index a83220d..81d760a 100644
--- a/tools/applatix/bazel.rc
+++ b/tools/applatix/bazel.rc
@@ -24,7 +24,7 @@
 build --workspace_status_command scripts/release/status.sh
 
 # This is so we use a recent enough GCC when building.
-build --crosstool_top //tools/applatix/toolchain:CROSSTOOL
+# build --crosstool_top //tools/applatix/toolchain:CROSSTOOL
 
 # This is so we don't use sandboxed execution. Sandboxed execution
 # runs stuff in a container, and since Applatix already runs its script
diff --git a/tools/java/BUILD b/tools/java/BUILD
index f5ab4ab..95c4db9 100644
--- a/tools/java/BUILD
+++ b/tools/java/BUILD
@@ -4,21 +4,27 @@
 
 java_toolchain(
     name = "heron_java_toolchain",
-    encoding = "UTF-8",
-    source_version = "8",
-    target_version = "8",
     bootclasspath = ["@bazel_tools//tools/jdk:bootclasspath"],
+    encoding = "UTF-8",
     extclasspath = ["@bazel_tools//tools/jdk:extdir"],
-    javac = ["@bazel_tools//third_party/java/jdk/langtools:javac_jar"],
-    javabuilder = ["@bazel_tools//tools/jdk:JavaBuilder_deploy.jar"],
-    singlejar = ["@bazel_tools//tools/jdk:SingleJar_deploy.jar"],
-    genclass = ["@bazel_tools//tools/jdk:GenClass_deploy.jar"],
+    forcibly_disable_header_compilation = 0,
+    genclass = ["@bazel_tools//tools/jdk:genclass"],
+    header_compiler = ["@bazel_tools//tools/jdk:turbine"],
     ijar = ["@bazel_tools//tools/jdk:ijar"],
+    javabuilder = ["@bazel_tools//tools/jdk:javabuilder"],
+    javac = ["@bazel_tools//third_party/java/jdk/langtools:javac_jar"],
+    jvm_opts = [
+        "-Xbootclasspath/p:$(location @bazel_tools//third_party/java/jdk/langtools:javac_jar)",
+    ],
     misc = [
-        "-extra_checks:on",
+#        "-XepDisableAllChecks",
+#        "-extra_checks:on",
         "-Xlint:all",
         "-Werror",
     ],
+    singlejar = ["@bazel_tools//tools/jdk:singlejar"],
+    source_version = "8",
+    target_version = "8",
 )
 
 action_listener(
diff --git a/tools/java/src/com/twitter/bazel/checkstyle/JavaCheckstyle.java b/tools/java/src/com/twitter/bazel/checkstyle/JavaCheckstyle.java
index 6f2b0ec..8852581 100644
--- a/tools/java/src/com/twitter/bazel/checkstyle/JavaCheckstyle.java
+++ b/tools/java/src/com/twitter/bazel/checkstyle/JavaCheckstyle.java
@@ -109,6 +109,7 @@
   private static String[] getHeronSourceFiles(String extraActionFile) {
     return getSourceFiles(extraActionFile, Predicates.not(Predicates.or(
         Predicates.containsPattern("heron/storm.src.java"),
+        Predicates.containsPattern("tools/test/LcovMerger"),
         Predicates.containsPattern("contrib")
     )));
   }
diff --git a/tools/rules/heron_core.bzl b/tools/rules/heron_core.bzl
index d9e60fa..ae4c6aa 100644
--- a/tools/rules/heron_core.bzl
+++ b/tools/rules/heron_core.bzl
@@ -11,7 +11,7 @@
         "//heron/stmgr/src/cpp:heron-stmgr",
         "//heron/tmaster/src/cpp:heron-tmaster",
         "//heron/instance/src/python:heron-python-instance",
-        "//heron/downloaders/src/shell:heron-downloader-shell"
+        "//heron/downloaders/src/shell:heron-downloader"
     ]
 
 def heron_core_conf_files():
diff --git a/tools/rules/jarjar_rules.bzl b/tools/rules/jarjar_rules.bzl
index 2cd04c1..0695999 100644
--- a/tools/rules/jarjar_rules.bzl
+++ b/tools/rules/jarjar_rules.bzl
@@ -46,6 +46,7 @@
             default = Label("//third_party/java/jarjar:jarjar_bin"),
             allow_files = True,
             executable = True,
+            cfg = 'host',
         ),
     },
     outputs = {
diff --git a/tools/rules/pex_rules.bzl b/tools/rules/pex_rules.bzl
index 64899bf..1e28818 100644
--- a/tools/rules/pex_rules.bzl
+++ b/tools/rules/pex_rules.bzl
@@ -237,6 +237,7 @@
             default = Label("//third_party/pex:_pex"),
             allow_files = False,
             executable = True,
+            cfg = 'host',
         ),
     },
 )
@@ -249,6 +250,7 @@
             default = Label("//third_party/pex:_pex"),
             allow_files = False,
             executable = True,
+            cfg = 'host',
         ),
     },
     test = True,
diff --git a/tools/travis/bazel.rc b/tools/travis/bazel.rc
index 9d20d90..18c18a3 100644
--- a/tools/travis/bazel.rc
+++ b/tools/travis/bazel.rc
@@ -24,7 +24,7 @@
 build --workspace_status_command scripts/release/status.sh
 
 # This is so we use a recent enough GCC when building.
-build --crosstool_top //tools/travis/toolchain:CROSSTOOL
+# build --crosstool_top //tools/travis/toolchain:CROSSTOOL
 
 # This is so we don't use sandboxed execution. Sandboxed execution
 # runs stuff in a container, and since Travis already runs its script
diff --git a/website/config.yaml b/website/config.yaml
index ebd4651..9ac35f5 100755
--- a/website/config.yaml
+++ b/website/config.yaml
@@ -19,9 +19,9 @@
   author: Twitter, Inc.
   description: A realtime, distributed, fault-tolerant stream processing engine from Twitter
   versions:
-    heron: 0.15.0
-    bazel: 0.3.1
-    heronpy: 0.15.0
+    heron: 0.15.1
+    bazel: 0.5.4
+    heronpy: 0.15.1
   assets:
     favicon:
       small: /img/favicon-16x16.png
diff --git a/website/content/docs/developers/compiling/docker.md b/website/content/docs/developers/compiling/docker.md
index 5ffe370..2e11da2 100644
--- a/website/content/docs/developers/compiling/docker.md
+++ b/website/content/docs/developers/compiling/docker.md
@@ -172,7 +172,7 @@
 Here's an example:
 
 ```dockerfile
-RUN wget -O /tmp/bazel.sh https://github.com/bazelbuild/bazel/releases/download/0.3.1/bazel-0.3.1-installer-linux-x86_64.sh \
+RUN wget -O /tmp/bazel.sh https://github.com/bazelbuild/bazel/releases/download/0.5.4/bazel-0.5.4-installer-linux-x86_64.sh \
          && chmod +x /tmp/bazel.sh \
          && /tmp/bazel.sh
 ```
diff --git a/website/content/docs/developers/compiling/linux.md b/website/content/docs/developers/compiling/linux.md
index 31b144b..ed04702 100644
--- a/website/content/docs/developers/compiling/linux.md
+++ b/website/content/docs/developers/compiling/linux.md
@@ -44,7 +44,7 @@
 #### Step 5 - Install Bazel {{% bazelVersion %}}
 
 ```bash
-wget -O /tmp/bazel.sh https://github.com/bazelbuild/bazel/releases/download/0.3.1/bazel-0.3.1-installer-linux-x86_64.sh
+wget -O /tmp/bazel.sh https://github.com/bazelbuild/bazel/releases/download/0.5.4/bazel-0.5.4-installer-linux-x86_64.sh
 chmod +x /tmp/bazel.sh
 /tmp/bazel.sh --user
 ```
@@ -195,7 +195,7 @@
 #### Step 5 - Install Bazel {{% bazelVersion %}}
 
 ```bash
-wget -O /tmp/bazel.sh https://github.com/bazelbuild/bazel/releases/download/0.3.1/bazel-0.3.1-installer-linux-x86_64.sh
+wget -O /tmp/bazel.sh https://github.com/bazelbuild/bazel/releases/download/0.5.4/bazel-0.5.4-installer-linux-x86_64.sh
 chmod +x /tmp/bazel.sh
 /tmp/bazel.sh --user
 ```
diff --git a/website/content/docs/developers/compiling/mac.md b/website/content/docs/developers/compiling/mac.md
index 694017f..20d44b6 100644
--- a/website/content/docs/developers/compiling/mac.md
+++ b/website/content/docs/developers/compiling/mac.md
@@ -33,7 +33,7 @@
 #### Step 4 - Install Bazel {{% bazelVersion %}}
 
 ```bash
-wget -O /tmp/bazel.sh  https://github.com/bazelbuild/bazel/releases/download/0.3.1/bazel-0.3.1-installer-darwin-x86_64.sh
+wget -O /tmp/bazel.sh  https://github.com/bazelbuild/bazel/releases/download/0.5.4/bazel-0.5.4-installer-darwin-x86_64.sh
 chmod +x /tmp/bazel.sh
 /tmp/bazel.sh --user
 ```