Reorganize BUILD files.

--
MOS_MIGRATED_REVID=108985661
diff --git a/src/BUILD b/src/BUILD
index 0436ea6..5f5f348 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -19,7 +19,7 @@
 [genrule(
     name = "install_base_key-file" + suffix,
     srcs = [
-        "//src/main/java/com/google/devtools/build/lib:bazel-main_deploy.jar",
+        "//src/main/java/com/google/devtools/build/lib:bazel/BazelServer_deploy.jar",
         "//src/main/cpp:client",
         ":libunix",
         "//src/main/tools:build-runfiles",
@@ -93,7 +93,7 @@
         # The script assumes that the embedded tools zip (if exists) is the
         # first item here, the deploy jar the second and install base key is the
         # third
-        "//src/main/java/com/google/devtools/build/lib:bazel-main_deploy.jar",
+        "//src/main/java/com/google/devtools/build/lib:bazel/BazelServer_deploy.jar",
         "install_base_key" + suffix,
         "//src/main/cpp:client",
         ":libunix",
diff --git a/src/main/java/com/google/devtools/build/docgen/BUILD b/src/main/java/com/google/devtools/build/docgen/BUILD
index 399e7b0..7b9b279 100644
--- a/src/main/java/com/google/devtools/build/docgen/BUILD
+++ b/src/main/java/com/google/devtools/build/docgen/BUILD
@@ -1,41 +1,17 @@
-package(default_visibility = ["//src:__subpackages__"])
-
-java_library(
-    name = "docgen",
-    srcs = glob([
-        "**/*.java",
-    ]),
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:common",
-        "//src/main/java/com/google/devtools/build/lib:concurrent",
-        "//src/main/java/com/google/devtools/build/lib:packages",
-        "//src/main/java/com/google/devtools/build/lib:util",
-        "//third_party:apache_velocity",
-        "//third_party:guava",
-    ],
+# Description:
+#   Documentation generator for Bazel
+package(
+    default_visibility = ["//src:__subpackages__"],
 )
 
 java_library(
     name = "docgen_javalib",
-    srcs = glob(
-        ["**/*.java"],
-        exclude = [
-            "BuildEncyclopediaGenerator.java",
-            "SkylarkDocumentationGenerator.java",
-        ],
-    ),
-    resources = [":be-template_files"],
-    exports = [
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
-    ],
+    srcs = glob(["**/*.java"]),
+    resources = [":template_files"],
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:common",
-        "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:packages",
-        "//src/main/java/com/google/devtools/build/lib:util",
         "//third_party:apache_velocity",
         "//third_party:guava",
         "//third_party:jsr305",
@@ -48,13 +24,21 @@
     main_class = "com.google.devtools.build.docgen.BuildEncyclopediaGenerator",
     deps = [
         ":docgen_javalib",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:common",
     ],
 )
 
+java_binary(
+    name = "skydoc_bin",
+    srcs = ["SkylarkDocumentationGenerator.java"],
+    main_class = "com.google.devtools.build.docgen.SkylarkDocumentationGenerator",
+    deps = [":docgen_javalib"],
+)
+
 filegroup(
-    name = "be-template_files",
+    name = "template_files",
     srcs = glob([
         "templates/**/*.html",
         "templates/**/*.vm",
@@ -65,10 +49,3 @@
     name = "srcs",
     srcs = glob(["**"]),
 )
-
-java_binary(
-    name = "skydoc_bin",
-    srcs = ["SkylarkDocumentationGenerator.java"],
-    main_class = "com.google.devtools.build.docgen.SkylarkDocumentationGenerator",
-    deps = [":docgen_javalib"],
-)
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 742b3a8..4691a7a 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -1,192 +1,142 @@
-package(default_visibility = ["//src:__subpackages__"])
+# Description:
+#   Main Java code for Bazel
+package(
+    default_visibility = ["//src:__subpackages__"],
+)
 
 java_library(
-    name = "analysis-exec-rules-skyframe",
-    srcs = glob(
-        [
-            "analysis/**/*.java",
-            "exec/*.java",
-            "ideinfo/**/*.java",
-            "rules/**/*.java",
-            "skyframe/*.java",
-        ],
-        exclude = [
-            "rules/java/JavaToolchainDataParser.java",
-        ],
-    ) + [
-        "runtime/BlazeServerStartupOptions.java",
+    name = "common",
+    srcs = [
+        "Constants.java",
     ],
+    exports = ["//third_party:guava"],
+    deps = [
+        "//third_party:guava",
+    ],
+)
+
+java_library(
+    name = "shell",
+    srcs = glob(["shell/*.java"]),
+    deps = [
+        ":common",
+    ],
+)
+
+filegroup(
+    name = "srcs",
+    srcs = glob(["**"]) + [
+        "//src/main/java/com/google/devtools/build/lib/rules/apple:srcs",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp:srcs",
+        "//src/main/java/com/google/devtools/build/lib/rules/genquery:srcs",
+        "//src/main/java/com/google/devtools/build/lib/rules/objc:srcs",
+        "//src/main/java/com/google/devtools/common/options:srcs",
+        "//src/main/java/com/google/devtools/build/lib/bazel/dash:srcs",
+        "//src/main/java/com/google/devtools/build/lib/sandbox:srcs",
+        "//src/main/java/com/google/devtools/build/skyframe:srcs",
+        "//src/main/java/com/google/devtools/build/lib/standalone:srcs",
+        "//src/main/java/com/google/devtools/build/lib/worker:srcs",
+        "//src/main/java/com/google/devtools/build/lib/query2:srcs",
+        "//src/main/java/com/google/devtools/build/docgen:srcs",
+    ],
+    visibility = ["//src/test/shell/bazel:__pkg__"],
+)
+
+# This package provides a general-purpose directed graph utility class with
+# implementations of numerous textbook graph algorithms and code to read and
+# write AT&T GraphViz files.
+
+java_library(
+    name = "graph",
+    srcs = glob(["graph/*.java"]),
+    deps = [
+        ":common",
+        "//third_party:jsr305",
+    ],
+)
+
+#   Java interfaces to various native UNIX system services.
+java_library(
+    name = "unix",
+    srcs = glob([
+        "unix/*.java",
+    ]) + ["UnixJniLoader.java"],
+    resources = ["//src/main/native:libunix.so"],
+    deps = [
+        ":common",
+        ":shell",
+    ],
+)
+
+# Library of concurrency utilities.
+java_library(
+    name = "concurrent",
+    srcs = glob(["concurrent/*.java"]),
+    deps = [
+        ":common",
+        "//third_party:jsr305",
+    ],
+)
+
+# Library of collection utilities.
+java_library(
+    name = "collect",
+    srcs = glob([
+        "collect/*.java",
+        "collect/nestedset/*.java",
+    ]),
+    deps = [
+        ":common",
+        "//third_party:jsr305",
+    ],
+)
+
+# Virtual file system; do not use externally!
+java_library(
+    name = "vfs",
+    srcs = glob([
+        "profiler/*.java",
+        "vfs/*.java",
+    ]),
     deps = [
         ":base-util",
-        ":collect",
-        ":common",
-        ":concurrent",
-        ":events",
-        ":graph",
-        ":io",
-        ":os_util",
-        ":packages",
-        ":shell",
-        ":util",
-        ":vfs",
-        "//src/main/java/com/google/devtools/build/lib/actions",
-        "//src/main/java/com/google/devtools/build/skyframe",
-        "//src/main/java/com/google/devtools/common/options",
-        "//src/main/protobuf:android_studio_ide_info_proto",
-        "//src/main/protobuf:bundlemerge_proto",
-        "//src/main/protobuf:crosstool_config_proto",
-        "//src/main/protobuf:extra_actions_base_proto",
-        "//src/main/protobuf:test_status_proto",
-        "//src/main/protobuf:xcodegen_proto",
-        "//src/tools/xcode-common/java/com/google/devtools/build/xcode/common",
-        "//src/tools/xcode-common/java/com/google/devtools/build/xcode/util",
-        "//third_party:guava",
-        "//third_party:joda_time",
-        "//third_party:jsr305",
-        "//third_party:protobuf",
-    ],
-)
-
-# String canonicalizer.
-java_library(
-    name = "base-util",
-    srcs = [
-        "util/StringCanonicalizer.java",
-        "util/StringTrie.java",
-        "util/VarInt.java",
-    ],
-    deps = [
-        ":common",
-        "//third_party:guava",
-    ],
-)
-
-java_library(
-    name = "bazel-core",
-    srcs = glob(
-        [
-            "bazel/**/*.java",
-        ],
-        exclude = [
-            "bazel/repository/MavenConnector.java",
-        ],
-    ),
-    resources = glob([
-        "**/*.txt",
-        "**/*.html",
-        "**/*.css",
-        "**/*.js",
-        "**/*.WORKSPACE",
-        "**/*.vm",
-    ]),
-    visibility = [
-        "//src:__subpackages__",
-        "//src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace:__pkg__",
-    ],
-    runtime_deps = [
-        "//third_party:aether",
-        "//third_party:apache_commons_codec",
-        "//third_party:apache_commons_logging",
-        "//third_party:apache_httpclient",
-        "//third_party:apache_httpcore",
-        "//third_party:jsch",
-        "//third_party:maven",
-        "//third_party:maven_model",
-        "//third_party:plexus_interpolation",
-        "//third_party:plexus_utils",
-    ],
-    deps = [
-        ":analysis-exec-rules-skyframe",
-        ":buildtool-runtime",
         ":clock",
-        ":collect",
         ":common",
         ":concurrent",
-        ":events",
-        ":graph",
-        ":io",
-        ":maven-connector",
         ":os_util",
-        ":packages",
-        ":runtime",
-        ":shell",
         ":unix",
-        ":util",
-        ":vfs",
-        "//src/java_tools/singlejar/java/com/google/devtools/build/zip",
-        "//src/main/java/com/google/devtools/build/lib/actions",
-        "//src/main/java/com/google/devtools/build/lib/bazel/dash",
-        "//src/main/java/com/google/devtools/build/lib/query2",
-        "//src/main/java/com/google/devtools/build/lib/rules/genquery",
-        "//src/main/java/com/google/devtools/build/lib/sandbox",
-        "//src/main/java/com/google/devtools/build/lib/standalone",
-        "//src/main/java/com/google/devtools/build/lib/worker",
-        "//src/main/java/com/google/devtools/build/skyframe",
-        "//src/main/java/com/google/devtools/common/options",
-        "//src/main/protobuf:build_proto",
-        "//src/main/protobuf:crosstool_config_proto",
-        "//src/main/protobuf:extra_actions_base_proto",
-        "//src/main/protobuf:test_status_proto",
-        "//src/main/protobuf:worker_protocol_proto",
-        "//third_party:aether",
-        "//third_party:apache_commons_compress",
-        "//third_party:apache_commons_pool2",
-        "//third_party:auto_value",
-        "//third_party:guava",
-        "//third_party:jgit",
-        "//third_party:joda_time",
         "//third_party:jsr305",
-        "//third_party:jsr330_inject",
-        "//third_party:maven",
-        "//third_party:maven_model",
-        "//third_party:plexus_component_annotations",
-        "//third_party:protobuf",
-        "//third_party:slf4j",
     ],
 )
 
-java_binary(
-    name = "bazel-main",
-    main_class = "com.google.devtools.build.lib.bazel.BazelMain",
-    visibility = ["//src:__pkg__"],
-    runtime_deps = [
-        ":bazel-core",
-    ],
-)
-
+# Profiler chart library.
 java_library(
-    name = "buildtool-runtime",
+    name = "profiler-output",
     srcs = glob([
-        "buildtool/**/*.java",
-        "runtime/**/*.java",
+        "profiler/chart/*.java",
+        "profiler/output/*.java",
+        "profiler/statistics/*.java",
     ]),
     deps = [
-        ":analysis-exec-rules-skyframe",
-        ":clock",
-        ":collect",
         ":common",
-        ":concurrent",
-        ":events",
-        ":io",
-        ":os_util",
-        ":packages",
-        ":profiler-output",
-        ":server",
-        ":shell",
         ":util",
         ":vfs",
-        "//src/main/java/com/google/devtools/build/docgen",
         "//src/main/java/com/google/devtools/build/lib/actions",
-        "//src/main/java/com/google/devtools/build/lib/query2",
-        "//src/main/java/com/google/devtools/build/skyframe",
-        "//src/main/java/com/google/devtools/common/options",
-        "//src/main/protobuf:build_proto",
-        "//src/main/protobuf:invocation_policy_proto",
-        "//src/main/protobuf:test_status_proto",
-        "//third_party:guava",
-        "//third_party:joda_time",
         "//third_party:jsr305",
-        "//third_party:protobuf",
+    ],
+)
+
+# In-memory virtual file system.
+java_library(
+    name = "inmemoryfs",
+    srcs = glob(["vfs/inmemoryfs/*.java"]),
+    deps = [
+        ":clock",
+        ":common",
+        ":concurrent",
+        ":unix",
+        ":vfs",
+        "//third_party:jsr305",
     ],
 )
 
@@ -203,85 +153,16 @@
     ],
 )
 
+# String canonicalizer.
 java_library(
-    name = "cmdline",
-    srcs = glob([
-        "cmdline/*.java",
-    ]),
-    deps = [
-        ":base-util",
-        ":common",
-        ":concurrent",
-        ":syntax",
-        ":util",
-        ":vfs",
-        "//third_party:guava",
-        "//third_party:jsr305",
-    ],
-)
-
-java_library(
-    name = "collect",
-    srcs = glob([
-        "collect/**/*.java",
-    ]),
-    deps = [
-        ":common",
-        ":shell",
-        "//third_party:guava",
-        "//third_party:jsr305",
-    ],
-)
-
-java_library(
-    name = "common",
+    name = "base-util",
     srcs = [
-        "Constants.java",
+        "util/StringCanonicalizer.java",
+        "util/StringTrie.java",
+        "util/VarInt.java",
     ],
-    exports = [
-        "//third_party:guava",
-    ],
-    deps = [
-        "//third_party:guava",
-        "//third_party:jsr305",
-    ],
-)
-
-java_library(
-    name = "concurrent",
-    srcs = glob([
-        "concurrent/*.java",
-    ]),
     deps = [
         ":common",
-        "//third_party:guava",
-        "//third_party:jsr305",
-    ],
-)
-
-java_library(
-    name = "events",
-    srcs = glob([
-        "events/*.java",
-    ]),
-    deps = [
-        ":common",
-        ":concurrent",
-        ":io",
-        ":vfs",
-        "//third_party:guava",
-        "//third_party:jsr305",
-    ],
-)
-
-java_library(
-    name = "graph",
-    srcs = glob([
-        "graph/*.java",
-    ]),
-    deps = [
-        "//third_party:guava",
-        "//third_party:jsr305",
     ],
 )
 
@@ -294,29 +175,6 @@
         ":common",
         ":concurrent",
         ":vfs",
-        "//third_party:guava",
-    ],
-)
-
-java_library(
-    name = "java-toolchain-parser",
-    testonly = 1,
-    srcs = glob([
-        # JavaToolchain parser
-        "rules/java/JavaToolchainData.java",
-        "rules/java/JavaToolchainDataParser.java",
-        # Concurrent stuff
-        "concurrent/*.java",
-    ]),
-    visibility = [
-        "//src/java_tools/buildjar:__pkg__",
-    ],
-    deps = [
-        ":common",
-        "//src/main/protobuf:build_proto",
-        "//third_party:guava",
-        "//third_party:jsr305",
-        "//third_party:protobuf",
     ],
 )
 
@@ -327,11 +185,151 @@
 )
 
 java_library(
-    name = "packages",
-    exports = [":packages-internal"],
+    name = "util",
+    srcs = glob(
+        ["util/*.java"],
+        exclude = [
+            "util/BlazeClock.java",
+            "util/Clock.java",
+            "util/ExitCode.java",
+            "util/JavaClock.java",
+            "util/OS.java",
+            "util/StringCanonicalizer.java",
+            "util/StringTrie.java",
+            "util/VarInt.java",
+        ],
+    ),
+    exports = [
+        ":base-util",
+        ":clock",
+        ":collect",
+        ":exitcode-external",
+        ":os_util",
+    ],
+    deps = [
+        ":base-util",
+        ":collect",
+        ":common",
+        ":concurrent",
+        ":exitcode-external",
+        ":os_util",
+        ":shell",
+        ":unix",
+        ":vfs",
+        "//src/main/java/com/google/devtools/common/options",
+        "//third_party:jsr305",
+    ],
 )
 
 java_library(
+    name = "exitcode-external",
+    srcs = [
+        "util/ExitCode.java",
+    ],
+    deps = [
+        "//third_party:guava",
+    ],
+)
+
+# Event reporting infrastructure.
+java_library(
+    name = "events",
+    srcs = glob(["events/*.java"]),
+    deps = [
+        ":common",
+        ":concurrent",
+        ":io",
+        ":vfs",
+        "//third_party:jsr305",
+    ],
+)
+
+########################################################################
+#
+# The "foundation" library (concurrent, events, util, vfs, inmemoryfs, options)
+# Filesystem abstraction, event reporting, options parsing, I/O routines.
+#
+
+# These packages apparently depend on :foundation. I have no idea why, but to
+# avoid breaking them, I allow them to depend on it.
+java_library(
+    name = "foundation",
+    exports = [
+        ":concurrent",
+        ":events",
+        # This should be removed at some point. Production code shouldn't use this.
+        ":inmemoryfs",
+        ":util",
+        ":vfs",
+        "//src/main/java/com/google/devtools/common/options",
+    ],
+)
+
+########################################################################
+#
+# The "cmdline" library: Label validation and target pattern
+# parsing. Both the label syntax and the target pattern syntax are a
+# public interface, and all changes have to be made in a
+# backwards-compatible manner. This library is intentionally
+# standalone so it can be used outside without pulling in any internal
+# code.
+#
+
+java_library(
+    name = "cmdline",
+    srcs = glob(["cmdline/*.java"]),
+    deps = [
+        ":base-util",
+        ":common",
+        ":concurrent",
+        ":syntax",
+        ":util",
+        ":vfs",
+        "//third_party:jsr305",
+    ],
+)
+
+java_library(
+    name = "syntax",
+    srcs = glob([
+        "syntax/**/*.java",
+    ]),
+    deps = [
+        ":collect",
+        ":common",
+        ":concurrent",
+        ":events",
+        ":util",
+        ":vfs",
+        "//third_party:asm",
+        "//third_party:asm-commons",
+        "//third_party:asm-util",
+        "//third_party:auto_value",
+        "//third_party:bytebuddy",
+        "//third_party:jsr305",
+    ],
+)
+
+########################################################################
+#
+# The "packages" library: syntax, packages, pkgcache.
+# BUILD file scanning, parsing and evaluation; package loading and caching.
+#
+
+# IMPORTANT:  NOT A PUBLIC INTERFACE.
+#
+# DO NOT ADD A DEPENDENCY ON THIS TARGET, or any other in this
+# package, without first talking to us.  Here are two good
+# reasons:
+#
+# 1.  FRAGILITY. This is not a stable API, it's an internal interface.
+#     It changes from time to time, and your client *will* be broken.
+#
+# 2.  CORRECTNESS.  The BUILD file parser changes rapidly.  If
+#     your application depends upon it, your application will start to
+#     bit-rot almost immediately.
+
+java_library(
     name = "packages-internal",
     srcs = glob([
         "packages/*.java",
@@ -351,7 +349,7 @@
         ":util",
         ":vfs",
         "//src/main/java/com/google/devtools/common/options",
-        "//src/main/protobuf:build_proto",
+        "//src/main/protobuf:build_proto_v2",
         "//third_party:guava",
         "//third_party:jsr305",
         "//third_party:protobuf",
@@ -359,89 +357,149 @@
 )
 
 java_library(
-    name = "profiler-output",
-    srcs = glob([
-        "profiler/chart/*.java",
-        "profiler/output/*.java",
-        "profiler/statistics/*.java",
-    ]),
-    deps = [
-        ":collect",
-        ":util",
-        ":vfs",
-        "//src/main/java/com/google/devtools/build/lib/actions",
-        "//third_party:guava",
-        "//third_party:jsr305",
+    name = "packages",
+    exports = [
+        ":foundation",
+        ":packages-internal",
     ],
 )
 
 java_library(
-    name = "syntax",
-    srcs = glob(["syntax/**/*.java"]),
+    name = "java-toolchain-parser",
+    srcs = [
+        "rules/java/JavaToolchainData.java",
+        "rules/java/JavaToolchainDataParser.java",
+    ],
+    deps = [
+        ":concurrent",
+        "//src/main/protobuf:build_proto_v2",
+        "//third_party:guava",
+        "//third_party:protobuf",
+    ],
+)
+
+java_library(
+    name = "build-base",
+    srcs = glob(
+        [
+            "analysis/*.java",
+            "analysis/actions/*.java",
+            "analysis/buildinfo/*.java",
+            "analysis/config/*.java",
+            "analysis/constraints/*.java",
+            "exec/*.java",
+            "rules/*.java",
+            "rules/extra/*.java",
+            "rules/filegroup/*.java",
+            "rules/fileset/*.java",
+            "rules/test/*.java",
+            "rules/repository/*.java",
+            "skyframe/*.java",
+        ],
+        exclude = ["analysis/BuildInfo.java"],
+    ) + [
+        "runtime/BlazeServerStartupOptions.java",
+    ],
     deps = [
         ":base-util",
+        ":cmdline",
         ":collect",
         ":common",
         ":concurrent",
         ":events",
+        ":exitcode-external",
+        ":graph",
+        ":io",
+        ":os_util",
+        ":packages-internal",
+        ":shell",
         ":util",
         ":vfs",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/skyframe",
         "//src/main/java/com/google/devtools/common/options",
-        "//src/main/protobuf:build_proto",
-        "//third_party:asm",
-        "//third_party:asm-util",
-        "//third_party:auto_value",
-        "//third_party:bytebuddy",
+        "//src/main/protobuf:extra_actions_base_proto",
+        "//src/main/protobuf:test_status_proto",
         "//third_party:guava",
         "//third_party:jsr305",
+        "//third_party:protobuf",
     ],
 )
 
 java_library(
-    name = "unix",
-    srcs = glob([
-        "unix/*.java",
-    ]) + [
-        "UnixJniLoader.java",
-    ],
-    deps = [
-        ":common",
-        ":shell",
-        "//third_party:guava",
-        "//third_party:jsr305",
-    ],
-)
-
-java_library(
-    name = "util",
+    name = "bazel-rules",
     srcs = glob(
-        ["util/*.java"],
+        [
+            "bazel/rules/**/*.java",
+        ],
         exclude = [
-            "util/BlazeClock.java",
-            "util/Clock.java",
-            "util/JavaClock.java",
-            "util/OS.java",
-            "util/StringCanonicalizer.java",
-            "util/StringTrie.java",
-            "util/VarInt.java",
+            "bazel/rules/workspace/*.java",
         ],
     ),
-    exports = [
-        ":base-util",
-        ":clock",
-        ":collect",
-        ":os_util",
-    ],
+    resources = glob(
+        [
+            "bazel/rules/**/*.txt",
+            "bazel/rules/**/*.WORKSPACE",
+        ],
+    ),
     deps = [
-        ":base-util",
-        ":clock",
+        ":android-rules",
+        ":bazel",
+        ":bazel-repository",
+        ":build-base",
+        ":build-info",
         ":collect",
         ":common",
-        ":concurrent",
-        ":os_util",
-        ":shell",
-        ":unix",
+        ":events",
+        ":ideinfo",
+        ":java-rules",
+        ":packages-internal",
+        ":proto-rules",
+        ":python-rules",
+        ":util",
         ":vfs",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/query2:query-output",
+        "//src/main/java/com/google/devtools/build/lib/rules/apple",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
+        "//src/main/java/com/google/devtools/build/lib/rules/genquery",
+        "//src/main/java/com/google/devtools/build/lib/rules/objc",
+        "//src/main/java/com/google/devtools/build/skyframe",
+        "//src/main/java/com/google/devtools/common/options",
+        "//src/main/protobuf:crosstool_config_proto",
+        "//third_party:guava",
+        "//third_party:joda_time",
+        "//third_party:jsr305",
+    ],
+)
+
+java_library(
+    name = "bazel-main",
+    srcs = glob(["bazel/*.java"]),
+    resources = [
+        "bazel/rules/java/java_stub_template.txt",
+        "bazel/rules/python/stub_template.txt",
+    ],
+    deps = [
+        ":bazel",
+        ":bazel-commands",
+        ":bazel-repository",
+        ":bazel-rules",
+        ":build-base",
+        ":build-info",
+        ":clock",
+        ":events",
+        ":io",
+        ":packages-internal",
+        ":shell",
+        ":util",
+        ":vfs",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/bazel/dash",
+        "//src/main/java/com/google/devtools/build/lib/sandbox",
+        "//src/main/java/com/google/devtools/build/lib/standalone",
+        "//src/main/java/com/google/devtools/build/lib/worker",
+        "//src/main/java/com/google/devtools/build/skyframe",
         "//src/main/java/com/google/devtools/common/options",
         "//third_party:guava",
         "//third_party:jsr305",
@@ -449,22 +507,63 @@
 )
 
 java_library(
-    name = "vfs",
-    srcs = glob([
-        "vfs/**/*.java",
-        "profiler/*.java",
-    ]),
+    name = "bazel-commands",
+    srcs = glob(["bazel/commands/*.java"]),
+    resources = ["bazel/commands/fetch.txt"],
     deps = [
-        ":base-util",
-        ":clock",
         ":common",
-        ":concurrent",
-        ":os_util",
-        ":shell",
-        ":unix",
+        ":events",
+        ":exitcode-external",
+        ":java-rules",
+        ":packages-internal",
+        ":runtime",
+        ":util",
+        "//src/main/java/com/google/devtools/build/lib/query2",
+        "//src/main/java/com/google/devtools/build/lib/query2:query-engine",
         "//src/main/java/com/google/devtools/common/options",
         "//third_party:guava",
+    ],
+)
+
+java_library(
+    name = "bazel-repository",
+    srcs = glob(
+        [
+            "bazel/repository/*.java",
+            "bazel/rules/workspace/*.java",
+        ],
+        exclude = ["bazel/repository/MavenConnector.java"],
+    ),
+    runtime_deps = [
+        "//third_party:aether",
+        "//third_party:apache_commons_codec",
+        "//third_party:apache_commons_logging",
+        "//third_party:apache_httpclient",
+        "//third_party:apache_httpcore",
+        "//third_party:maven",
+        "//third_party:maven_model",
+        "//third_party:plexus_interpolation",
+        "//third_party:plexus_utils",
+        "//third_party:slf4j",
+    ],
+    deps = [
+        ":concurrent",
+        ":events",
+        ":maven-connector",
+        ":util",
+        "//src/java_tools/singlejar/java/com/google/devtools/build/zip",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
+        "//src/main/java/com/google/devtools/build/lib:vfs",
+        "//src/main/java/com/google/devtools/build/skyframe",
+        "//third_party:aether",
+        "//third_party:apache_commons_compress",
+        "//third_party:guava",
+        "//third_party:jgit",
         "//third_party:jsr305",
+        "//third_party:maven",
+        "//third_party:maven_model",
+        "//third_party:plexus_component_annotations",
     ],
 )
 
@@ -478,38 +577,70 @@
     ],
 )
 
+# Rules
 java_library(
-    name = "runtime",
-    srcs = glob([
-        "runtime/**/*.java",
-        "buildtool/**/*.java",
-        "server/**/*.java",
-    ]),
+    name = "nativedeps-rules",
+    srcs = glob(
+        ["rules/nativedeps/*.java"],
+    ),
     deps = [
-        ":analysis-exec-rules-skyframe",
-        ":clock",
-        ":cmdline",
+        ":build-base",
+        ":collect",
+        ":common",
+        ":concurrent",
+        ":packages-internal",
+        ":util",
+        ":vfs",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
+        "//third_party:jsr305",
+        "//third_party:protobuf",
+    ],
+)
+
+java_library(
+    name = "proto-rules",
+    srcs = glob(
+        ["rules/proto/*.java"],
+    ),
+    deps = [
+        ":build-base",
+        ":collect",
+        ":common",
+        ":concurrent",
+        ":packages-internal",
+        ":util",
+        ":vfs",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//third_party:jsr305",
+        "//third_party:protobuf",
+    ],
+)
+
+java_library(
+    name = "java-rules",
+    srcs = glob(
+        ["rules/java/*.java"],
+        exclude = [
+            "rules/java/JavaImplicitAttributes.java",
+            "rules/java/JavaToolchainDataParser.java",
+        ],
+    ),
+    deps = [
+        ":build-base",
         ":collect",
         ":common",
         ":concurrent",
         ":events",
-        ":io",
-        ":os_util",
-        ":packages",
-        ":profiler-output",
+        ":java-implicit-attributes",
+        ":packages-internal",
         ":shell",
-        ":unix",
         ":util",
         ":vfs",
-        "//src/main/java/com/google/devtools/build/docgen",
         "//src/main/java/com/google/devtools/build/lib/actions",
-        "//src/main/java/com/google/devtools/build/lib/query2",
-        "//src/main/java/com/google/devtools/build/skyframe",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
         "//src/main/java/com/google/devtools/common/options",
-        "//src/main/protobuf:build_proto",
-        "//src/main/protobuf:invocation_policy_proto",
-        "//src/main/protobuf:test_status_proto",
-        "//third_party:guava",
+        "//src/main/protobuf:extra_actions_base_proto",
         "//third_party:joda_time",
         "//third_party:jsr305",
         "//third_party:protobuf",
@@ -517,42 +648,201 @@
 )
 
 java_library(
-    name = "server",
-    srcs = glob([
-        "server/**/*.java",
-    ]),
+    name = "java-implicit-attributes",
+    srcs = ["rules/java/JavaImplicitAttributes.java"],
+)
+
+java_library(
+    name = "android-rules",
+    srcs = glob(
+        ["rules/android/*.java"],
+    ),
     deps = [
-        ":clock",
-        ":io",
-        ":unix",
+        ":build-base",
+        ":collect",
+        ":common",
+        ":concurrent",
+        ":events",
+        ":java-rules",
+        ":nativedeps-rules",
+        ":packages-internal",
         ":util",
         ":vfs",
-        "//third_party:guava",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
+        "//src/main/java/com/google/devtools/common/options",
         "//third_party:jsr305",
+        "//third_party:protobuf",
     ],
 )
 
 java_library(
-    name = "shell",
-    srcs = glob([
-        "shell/*.java",
-    ]),
-    deps = ["//third_party:guava"],
+    name = "python-rules",
+    srcs = glob(
+        ["rules/python/*.java"],
+    ),
+    deps = [
+        ":build-base",
+        ":collect",
+        ":common",
+        ":concurrent",
+        ":nativedeps-rules",
+        ":packages-internal",
+        ":util",
+        ":vfs",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
+        "//src/main/java/com/google/devtools/common/options",
+        "//src/main/protobuf:crosstool_config_proto",
+        "//src/main/protobuf:extra_actions_base_proto",
+        "//third_party:jsr305",
+        "//third_party:protobuf",
+    ],
 )
 
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]) + [
-        "//src/main/java/com/google/devtools/common/options:srcs",
-        "//src/main/java/com/google/devtools/build/lib/bazel/dash:srcs",
-        "//src/main/java/com/google/devtools/build/lib/sandbox:srcs",
-        "//src/main/java/com/google/devtools/build/skyframe:srcs",
-        "//src/main/java/com/google/devtools/build/lib/standalone:srcs",
-        "//src/main/java/com/google/devtools/build/lib/worker:srcs",
-        "//src/main/java/com/google/devtools/build/lib/query2:srcs",
-        "//src/main/java/com/google/devtools/build/docgen:srcs",
+java_library(
+    name = "ideinfo",
+    srcs = glob(
+        ["ideinfo/*.java"],
+    ),
+    deps = [
+        ":android-rules",
+        ":build-base",
+        ":collect",
+        ":concurrent",
+        ":java-rules",
+        ":packages-internal",
+        ":util",
+        ":vfs",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/protobuf:android_studio_ide_info_proto",
+        "//third_party:guava",
+        "//third_party:jsr305",
+        "//third_party:protobuf",
     ],
-    visibility = ["//src/test/shell/bazel:__pkg__"],
+)
+
+java_library(
+    name = "shared-base-rules",
+    exports = [
+        ":android-rules",
+        ":java-rules",
+        ":nativedeps-rules",
+        ":proto-rules",
+        ":python-rules",
+    ],
+)
+
+java_library(
+    name = "runtime",
+    srcs = glob(
+        [
+            "runtime/*.java",
+            "server/**/*.java",
+            "runtime/commands/*.java",
+            "buildtool/*.java",
+            "buildtool/buildevent/*.java",
+        ],
+    ),
+    deps = [
+        ":build-base",
+        ":clock",
+        ":cmdline",
+        ":collect",
+        ":common",
+        ":concurrent",
+        ":events",
+        ":exitcode-external",
+        ":io",
+        ":packages-internal",
+        ":profiler-output",
+        ":shared-base-rules",
+        ":shell",
+        ":unix",
+        ":util",
+        ":vfs",
+        "//src/main/java/com/google/devtools/build/docgen:docgen_javalib",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/query2",
+        "//src/main/java/com/google/devtools/build/lib/query2:query-engine",
+        "//src/main/java/com/google/devtools/build/lib/query2:query-output",
+        "//src/main/java/com/google/devtools/build/skyframe",
+        "//src/main/java/com/google/devtools/common/options",
+        "//src/main/protobuf:build_proto_v2",
+        "//src/main/protobuf:invocation_policy_proto",
+        "//src/main/protobuf:test_status_proto",
+        "//third_party:joda_time",
+        "//third_party:jsr305",
+        "//third_party:protobuf",
+    ],
+)
+
+java_library(
+    name = "bazel",
+    resources = glob(["runtime/commands/*.txt"]),
+    exports = [":runtime"],
+)
+
+java_library(
+    name = "all-build-rules",
+    exports = [
+        ":build-base",
+        ":common",
+        ":concurrent",
+        ":graph",
+        ":packages-internal",
+        ":util",
+        ":vfs",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/rules/objc",
+        "//src/main/java/com/google/devtools/common/options",
+    ],
+)
+
+java_library(
+    name = "build",
+    exports = [
+        ":all-build-rules",
+        ":build-base",
+        ":foundation",
+        ":packages",
+        ":query2",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+    ],
+)
+
+########################################################################
+#
+# The Blaze query language, revision 2: query2.
+#
+
+java_library(
+    name = "query2",
+    exports = [
+        ":common",
+        ":concurrent",
+        ":events",
+        ":foundation",
+        ":graph",
+        ":packages",
+        ":util",
+        ":vfs",
+        "//src/main/java/com/google/devtools/build/lib/query2",
+        "//src/main/java/com/google/devtools/common/options",
+        "//src/main/protobuf:build_proto_v2",
+    ],
+)
+
+java_binary(
+    name = "bazel/BazelServer",
+    javacopts = [
+        "-Xlint:all",
+        "-Xlint:-path",
+    ],
+    main_class = "com.google.devtools.build.lib.bazel.BazelMain",
+    runtime_deps = [
+        ":bazel-main",
+    ],
 )
 
 filegroup(
@@ -586,7 +876,6 @@
     tools = ["//src/main/java/com/google/devtools/build/docgen:skydoc_bin"],
 )
 
-#
 # Bootstrapping SingleJar using Skylark rules
 #
 load("/tools/build_rules/java_rules_skylark", "bootstrap_java_library")
@@ -596,3 +885,19 @@
     srcs = glob(["shell/*.java"]),
     jars = ["//third_party:guava"],
 )
+
+########################################################################
+#
+# Miscellaneous targets
+#
+
+# A library for just the BuildInfo class, so it can be used by the external
+# SingleJar implementation.
+
+java_library(
+    name = "build-info",
+    srcs = [
+        "analysis/BuildInfo.java",
+    ],
+    deps = ["//third_party:joda_time"],
+)
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/dash/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/dash/BUILD
index b83dfdd..a92e7f7 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/dash/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/bazel/dash/BUILD
@@ -1,21 +1,13 @@
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-    visibility = ["//src/main/java/com/google/devtools/build/lib:__pkg__"],
-)
+package(default_visibility = ["//src:__subpackages__"])
 
 java_library(
     name = "dash",
     srcs = glob(["*.java"]),
-    visibility = [
-        "//src/main/java/com/google/devtools/build/lib:__pkg__",
-    ],
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:events",
-        "//src/main/java/com/google/devtools/build/lib:packages",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
         "//src/main/java/com/google/devtools/build/lib:runtime",
-        "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/common/options",
         "//src/main/protobuf:dash_proto",
         "//third_party:apache_httpclient",
@@ -24,3 +16,8 @@
         "//third_party:protobuf",
     ],
 )
+
+filegroup(
+    name = "srcs",
+    srcs = glob(["**"]),
+)
diff --git a/src/main/java/com/google/devtools/build/lib/query2/BUILD b/src/main/java/com/google/devtools/build/lib/query2/BUILD
index 641eedaa..306ef7a 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/query2/BUILD
@@ -1,28 +1,52 @@
 package(
-    default_visibility = [
-        "//src:__subpackages__",
-    ],
+    default_visibility = ["//src:__subpackages__"],
 )
 
 java_library(
     name = "query2",
-    srcs = glob([
-        "**/*.java",
-    ]),
+    srcs = glob(["*.java"]),
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:collect",
+        ":query-engine",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:common",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:graph",
-        "//src/main/java/com/google/devtools/build/lib:packages",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/skyframe",
+        "//third_party:jsr305",
+    ],
+)
+
+java_library(
+    name = "query-output",
+    srcs = glob(["output/*.java"]),
+    deps = [
+        ":query-engine",
+        ":query2",
+        "//src/main/java/com/google/devtools/build/lib:collect",
+        "//src/main/java/com/google/devtools/build/lib:common",
+        "//src/main/java/com/google/devtools/build/lib:events",
+        "//src/main/java/com/google/devtools/build/lib:graph",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
+        "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/common/options",
-        "//src/main/protobuf:build_proto",
-        "//third_party:guava",
+        "//src/main/protobuf:build_proto_v2",
+        "//third_party:jsr305",
+    ],
+)
+
+# Query library.
+java_library(
+    name = "query-engine",
+    srcs = glob(["engine/*.java"]),
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:common",
+        "//src/main/java/com/google/devtools/build/lib:concurrent",
+        "//src/main/java/com/google/devtools/build/lib:graph",
+        "//src/main/java/com/google/devtools/build/lib:util",
         "//third_party:jsr305",
     ],
 )
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD b/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD
new file mode 100644
index 0000000..b78d8ae
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD
@@ -0,0 +1,28 @@
+# Description:
+#   Apple platform support
+
+package(
+    default_visibility = ["//src:__subpackages__"],
+)
+
+java_library(
+    name = "apple",
+    srcs = glob(["*.java"]),
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:build-base",
+        "//src/main/java/com/google/devtools/build/lib:cmdline",
+        "//src/main/java/com/google/devtools/build/lib:common",
+        "//src/main/java/com/google/devtools/build/lib:concurrent",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
+        "//src/main/java/com/google/devtools/build/lib:syntax",
+        "//src/main/java/com/google/devtools/common/options",
+        "//src/main/protobuf:xcodegen_proto",
+        "//third_party:guava",
+        "//third_party:jsr305",
+    ],
+)
+
+filegroup(
+    name = "srcs",
+    srcs = glob(["**"]),
+)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD b/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
new file mode 100644
index 0000000..1b7db3d
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
@@ -0,0 +1,36 @@
+# Description:
+#   C++ rule support
+
+package(
+    default_visibility = ["//src:__subpackages__"],
+)
+
+java_library(
+    name = "cpp",
+    srcs = glob(["**/*.java"]),
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:build-base",
+        "//src/main/java/com/google/devtools/build/lib:collect",
+        "//src/main/java/com/google/devtools/build/lib:common",
+        "//src/main/java/com/google/devtools/build/lib:concurrent",
+        "//src/main/java/com/google/devtools/build/lib:events",
+        "//src/main/java/com/google/devtools/build/lib:io",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
+        "//src/main/java/com/google/devtools/build/lib:shell",
+        "//src/main/java/com/google/devtools/build/lib:util",
+        "//src/main/java/com/google/devtools/build/lib:vfs",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/rules/apple",
+        "//src/main/java/com/google/devtools/build/skyframe",
+        "//src/main/java/com/google/devtools/common/options",
+        "//src/main/protobuf:crosstool_config_proto",
+        "//src/main/protobuf:extra_actions_base_proto",
+        "//third_party:jsr305",
+        "//third_party:protobuf",
+    ],
+)
+
+filegroup(
+    name = "srcs",
+    srcs = glob(["**"]),
+)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD b/src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD
index 72de625..1f43419 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD
@@ -1,28 +1,27 @@
-package(default_visibility = ["//src:__subpackages__"])
+# Description:
+#   Genquery support
+
+package(
+    default_visibility = ["//src:__subpackages__"],
+)
 
 java_library(
     name = "genquery",
-    srcs = glob([
-        "*.java",
-    ]),
+    srcs = glob(["*.java"]),
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:common",
-        "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:events",
-        "//src/main/java/com/google/devtools/build/lib:graph",
-        "//src/main/java/com/google/devtools/build/lib:packages",
-        "//src/main/java/com/google/devtools/build/lib:shell",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
         "//src/main/java/com/google/devtools/build/lib/query2",
+        "//src/main/java/com/google/devtools/build/lib/query2:query-engine",
+        "//src/main/java/com/google/devtools/build/lib/query2:query-output",
         "//src/main/java/com/google/devtools/build/skyframe",
         "//src/main/java/com/google/devtools/common/options",
-        "//src/main/protobuf:crosstool_config_proto",
-        "//src/main/protobuf:extra_actions_base_proto",
-        "//third_party:guava",
         "//third_party:jsr305",
         "//third_party:protobuf",
     ],
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD b/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD
new file mode 100644
index 0000000..26da7d0
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD
@@ -0,0 +1,37 @@
+# Description:
+#   Objective-C rule support
+
+package(
+    default_visibility = ["//src:__subpackages__"],
+)
+
+java_library(
+    name = "objc",
+    srcs = glob(["*.java"]),
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:build-base",
+        "//src/main/java/com/google/devtools/build/lib:build-info",
+        "//src/main/java/com/google/devtools/build/lib:collect",
+        "//src/main/java/com/google/devtools/build/lib:common",
+        "//src/main/java/com/google/devtools/build/lib:concurrent",
+        "//src/main/java/com/google/devtools/build/lib:java-rules",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
+        "//src/main/java/com/google/devtools/build/lib:proto-rules",
+        "//src/main/java/com/google/devtools/build/lib:shell",
+        "//src/main/java/com/google/devtools/build/lib:util",
+        "//src/main/java/com/google/devtools/build/lib:vfs",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/rules/apple",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
+        "//src/main/java/com/google/devtools/common/options",
+        "//src/main/protobuf:bundlemerge_proto",
+        "//src/main/protobuf:xcodegen_proto",
+        "//third_party:guava",
+        "//third_party:jsr305",
+    ],
+)
+
+filegroup(
+    name = "srcs",
+    srcs = glob(["**"]),
+)
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/BUILD b/src/main/java/com/google/devtools/build/lib/sandbox/BUILD
index 78510cf..e236e24 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/BUILD
@@ -1,26 +1,27 @@
 package(
-    default_visibility = [
-        "//src:__subpackages__",
-    ],
+    default_visibility = ["//src:__subpackages__"],
 )
 
 java_library(
     name = "sandbox",
     srcs = glob(["*.java"]),
+    data = [
+        "//src/main/tools:namespace-sandbox",
+    ],
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:buildtool-runtime",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:common",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:io",
-        "//src/main/java/com/google/devtools/build/lib:os_util",
-        "//src/main/java/com/google/devtools/build/lib:packages",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
+        "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib:shell",
         "//src/main/java/com/google/devtools/build/lib:unix",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
         "//src/main/java/com/google/devtools/build/lib/standalone",
         "//src/main/java/com/google/devtools/common/options",
         "//third_party:guava",
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/BUILD b/src/main/java/com/google/devtools/build/lib/standalone/BUILD
index ef1bc84..ea18314 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/standalone/BUILD
@@ -1,23 +1,24 @@
 package(
-    default_visibility = [
-        "//src:__subpackages__",
-    ],
+    default_visibility = ["//src:__subpackages__"],
 )
 
 java_library(
     name = "standalone",
     srcs = glob(["*.java"]),
+    data = [
+        "//src/main/tools:process-wrapper",
+    ],
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:buildtool-runtime",
-        "//src/main/java/com/google/devtools/build/lib:common",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:io",
-        "//src/main/java/com/google/devtools/build/lib:os_util",
-        "//src/main/java/com/google/devtools/build/lib:packages",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
+        "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib:shell",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/rules/apple",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
         "//third_party:guava",
     ],
 )
diff --git a/src/main/java/com/google/devtools/build/lib/worker/BUILD b/src/main/java/com/google/devtools/build/lib/worker/BUILD
index 4bb1630..a1beb96 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/worker/BUILD
@@ -1,20 +1,17 @@
 package(
-    default_visibility = [
-        "//src:__subpackages__",
-    ],
+    default_visibility = ["//src:__subpackages__"],
 )
 
 java_library(
     name = "worker",
     srcs = glob(["*.java"]),
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:buildtool-runtime",
-        "//src/main/java/com/google/devtools/build/lib:common",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:io",
-        "//src/main/java/com/google/devtools/build/lib:packages",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
+        "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
diff --git a/src/main/protobuf/BUILD b/src/main/protobuf/BUILD
index fcb8920..6254b6a 100644
--- a/src/main/protobuf/BUILD
+++ b/src/main/protobuf/BUILD
@@ -22,6 +22,11 @@
     src = s + ".proto",
 ) for s in FILES]
 
+proto_java_library(
+    name = "build_proto_v2",
+    src = "build.proto",
+)
+
 filegroup(
     name = "srcs",
     srcs = glob(["**"]),
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index ee85750..52626e0 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -15,8 +15,9 @@
     srcs = glob(["testutil/*.java"]),
     visibility = ["//visibility:public"],
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:clock",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
@@ -45,8 +46,9 @@
         ":analysis_testutil",
         ":foundations_testutil",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:clock",
         "//src/main/java/com/google/devtools/build/lib:cmdline",
         "//src/main/java/com/google/devtools/build/lib:collect",
@@ -83,9 +85,9 @@
         ":packages_testutil",
         ":skyframe_testutil",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
-        "//src/main/java/com/google/devtools/build/lib:buildtool-runtime",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:clock",
         "//src/main/java/com/google/devtools/build/lib:cmdline",
         "//src/main/java/com/google/devtools/build/lib:collect",
@@ -93,6 +95,7 @@
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:io",
         "//src/main/java/com/google/devtools/build/lib:packages",
+        "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
@@ -118,7 +121,7 @@
     ],
     deps = [
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
         "//src/main/java/com/google/devtools/build/lib:clock",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:events",
@@ -176,7 +179,7 @@
         ":test_runner",
         ":testutil",
         "//src/main/java/com/google/devtools/build/lib:base-util",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
         "//src/main/java/com/google/devtools/build/lib:clock",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
@@ -211,8 +214,9 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
         "//src/main/java/com/google/devtools/build/lib:clock",
+        "//src/main/java/com/google/devtools/build/lib:inmemoryfs",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/common/options",
@@ -232,8 +236,9 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:clock",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:events",
@@ -264,16 +269,19 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:clock",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:events",
+        "//src/main/java/com/google/devtools/build/lib:java-rules",
         "//src/main/java/com/google/devtools/build/lib:packages",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
         "//src/main/java/com/google/devtools/common/options",
         "//third_party:guava",
         "//third_party:guava-testlib",
@@ -304,21 +312,28 @@
         ":foundations_testutil",
         ":packages_testutil",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
-        "//src/main/java/com/google/devtools/build/lib:buildtool-runtime",
+        "//src/main/java/com/google/devtools/build/lib:android-rules",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:clock",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:io",
+        "//src/main/java/com/google/devtools/build/lib:java-rules",
         "//src/main/java/com/google/devtools/build/lib:packages",
+        "//src/main/java/com/google/devtools/build/lib:python-rules",
         "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
         "//src/main/java/com/google/devtools/build/lib/query2",
+        "//src/main/java/com/google/devtools/build/lib/query2:query-output",
+        "//src/main/java/com/google/devtools/build/lib/rules/apple",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
         "//src/main/java/com/google/devtools/build/lib/rules/genquery",
+        "//src/main/java/com/google/devtools/build/lib/rules/objc",
         "//src/main/java/com/google/devtools/build/skyframe",
         "//src/main/java/com/google/devtools/common/options",
         "//src/main/protobuf:extra_actions_base_proto",
@@ -345,8 +360,9 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:io",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
@@ -373,12 +389,16 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:common",
+        "//src/main/java/com/google/devtools/build/lib:java-rules",
         "//src/main/java/com/google/devtools/build/lib:packages",
+        "//src/main/java/com/google/devtools/build/lib:python-rules",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
         "//src/main/java/com/google/devtools/common/options",
         "//src/main/protobuf:extra_actions_base_proto",
         "//third_party:guava",
@@ -403,8 +423,9 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:packages",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
@@ -428,8 +449,9 @@
         ":packages_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:packages",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//third_party:guava",
@@ -451,14 +473,17 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:events",
+        "//src/main/java/com/google/devtools/build/lib:java-rules",
         "//src/main/java/com/google/devtools/build/lib:packages",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
         "//src/main/java/com/google/devtools/build/skyframe",
         "//third_party:guava",
         "//third_party:guava-testlib",
@@ -498,14 +523,15 @@
     deps = [
         ":foundations_testutil",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/docgen",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
-        "//src/main/java/com/google/devtools/build/lib:buildtool-runtime",
+        "//src/main/java/com/google/devtools/build/docgen:docgen_javalib",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:clock",
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:io",
         "//src/main/java/com/google/devtools/build/lib:packages",
+        "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/skyframe",
@@ -540,8 +566,9 @@
         ":packages_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:packages",
         "//src/main/java/com/google/devtools/build/lib:util",
@@ -569,10 +596,12 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:events",
+        "//src/main/java/com/google/devtools/build/lib:ideinfo",
         "//src/main/java/com/google/devtools/build/lib:packages",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
@@ -605,7 +634,7 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:shell",
         "//third_party:guava",
@@ -628,10 +657,10 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:io",
-        "//src/main/java/com/google/devtools/build/lib:server",
+        "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib:unix",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
@@ -649,8 +678,8 @@
     srcs = ["syntax/SkylarkShell.java"],
     main_class = "com.google.devtools.build.lib.syntax.SkylarkShell",
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:packages",
     ],
@@ -667,8 +696,9 @@
         ":syntax_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:events",
@@ -694,7 +724,8 @@
     deps = [
         ":foundations_testutil",
         ":packages_testutil",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
         "//src/main/java/com/google/devtools/build/lib:packages",
         "//third_party:guava",
         "//third_party:guava-testlib",
@@ -713,8 +744,8 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:events",
@@ -740,8 +771,9 @@
         ":foundations_testutil",
         ":syntax_testutil",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:events",
@@ -769,12 +801,15 @@
         ":skylark_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:collect",
         "//src/main/java/com/google/devtools/build/lib:concurrent",
         "//src/main/java/com/google/devtools/build/lib:events",
+        "//src/main/java/com/google/devtools/build/lib:java-rules",
         "//src/main/java/com/google/devtools/build/lib:packages",
+        "//src/main/java/com/google/devtools/build/lib:python-rules",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
@@ -796,8 +831,9 @@
         ":actions_testutil",
         ":analysis_testutil",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//third_party:guava",
@@ -817,8 +853,9 @@
         ":actions_testutil",
         ":analysis_testutil",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:java-rules",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//third_party:guava",
         "//third_party:guava-testlib",
@@ -837,12 +874,14 @@
         ":actions_testutil",
         ":analysis_testutil",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:cmdline",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
         "//src/main/java/com/google/devtools/common/options",
         "//src/main/protobuf:crosstool_config_proto",
         "//third_party:guava",
@@ -865,7 +904,8 @@
     deps = [
         ":foundations_testutil",
         ":test_runner",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/dtesevtools/build/lib:util",
@@ -887,8 +927,10 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-repository",
         "//src/main/java/com/google/devtools/build/lib:collect",
+        "//src/main/java/com/google/devtools/build/lib:inmemoryfs",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//third_party:guava",
         "//third_party:guava-testlib",
@@ -906,11 +948,12 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:buildtool-runtime",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:clock",
         "//src/main/java/com/google/devtools/build/lib:io",
         "//src/main/java/com/google/devtools/build/lib:packages",
+        "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/common/options",
@@ -933,7 +976,8 @@
         ":analysis_testutil",
         ":foundations_testutil",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:clock",
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:os_util",
@@ -959,7 +1003,8 @@
         ":analysis_testutil",
         ":foundations_testutil",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:clock",
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:os_util",
@@ -967,6 +1012,7 @@
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/rules/apple",
         "//src/main/java/com/google/devtools/build/lib/standalone",
         "//src/main/java/com/google/devtools/common/options",
         "//third_party:guava",
@@ -986,7 +1032,9 @@
         ":foundations_testutil",
         ":test_runner",
         ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
+        "//src/main/java/com/google/devtools/build/lib:inmemoryfs",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/build/lib/actions",
diff --git a/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/BUILD b/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/BUILD
index f378973..3704319 100644
--- a/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/BUILD
+++ b/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/BUILD
@@ -3,12 +3,13 @@
     srcs = glob(["*.java"]),
     visibility = ["//src/tools/generate_workspace:__pkg__"],
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:analysis-exec-rules-skyframe",
-        "//src/main/java/com/google/devtools/build/lib:bazel-core",
-        "//src/main/java/com/google/devtools/build/lib:buildtool-runtime",
+        "//src/main/java/com/google/devtools/build/lib:bazel-main",
+        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
+        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:os_util",
         "//src/main/java/com/google/devtools/build/lib:packages",
+        "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib:vfs",
         "//src/main/java/com/google/devtools/common/options",
         "//src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/maven",