Remove lib.runtime.commands from lib.runtime

Pre-work for splitting `.../lib:runtime`.

This change
  - Renames `runtime/commands/ProjectFileSupport.java` to `runtime/ProjectFileSupport.java` (which was an oversight in #11417)
  - Moves `runtime.commands.CleanCommand.CleanStartingEvent` into `runtime/commands/events` to avoid having `.../lib/worker` depend on all of `.../lib/runtime/commands`.
  - Renames `runtime/commands/GotProjectFileEvent.java` to `runtime/events/GotProjectFileEvent.java` for similar reasons as above.
  - Moves License generation into a dedicated package.

Updates #10930

Closes #11452.

PiperOrigin-RevId: 312540107
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index a7bd1cc..9f991fa 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -1,5 +1,4 @@
 load("@rules_java//java:defs.bzl", "java_library")
-load(":merge_licenses.bzl", "merge_licenses")
 
 ########################################################################
 # Description:
@@ -74,6 +73,8 @@
         "//src/main/java/com/google/devtools/build/lib/remote:srcs",
         "//src/main/java/com/google/devtools/build/lib/repository:srcs",
         "//src/main/java/com/google/devtools/build/lib/rules:srcs",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands:srcs",
+        "//src/main/java/com/google/devtools/build/lib/runtime/events:srcs",
         "//src/main/java/com/google/devtools/build/lib/runtime/mobileinstall:srcs",
         "//src/main/java/com/google/devtools/build/lib/sandbox:srcs",
         "//src/main/java/com/google/devtools/build/lib/server:srcs",
@@ -255,8 +256,6 @@
     srcs = glob(
         [
             "runtime/*.java",
-            "runtime/commands/*.java",
-            "runtime/commands/info/*.java",
             "buildtool/*.java",
             "buildtool/buildevent/*.java",
         ],
@@ -268,16 +267,12 @@
             "runtime/LoadingPhaseThreadsOption.java",
         ],
     ),
-    resources = glob([
-        "runtime/commands/*.txt",
-    ]),
     deps = [
         ":build-request-options",
         ":keep-going-option",
         ":loading-phase-threads-option",
         ":runtime/blaze_command_result",
         ":runtime/command_dispatcher",
-        ":shared-base-rules",
         "//src/main/java/com/google/devtools/build/lib/actions",
         "//src/main/java/com/google/devtools/build/lib/actions:localhost_capacity",
         "//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
@@ -291,19 +286,13 @@
         "//src/main/java/com/google/devtools/build/lib/analysis:config/build_options",
         "//src/main/java/com/google/devtools/build/lib/analysis:config/core_option_converters",
         "//src/main/java/com/google/devtools/build/lib/analysis:config/core_options",
-        "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment",
-        "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_options",
-        "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_provider",
         "//src/main/java/com/google/devtools/build/lib/analysis:config/invalid_configuration_exception",
-        "//src/main/java/com/google/devtools/build/lib/analysis:config/run_under",
         "//src/main/java/com/google/devtools/build/lib/analysis:configured_target",
         "//src/main/java/com/google/devtools/build/lib/analysis:file_provider",
         "//src/main/java/com/google/devtools/build/lib/analysis:no_build_event",
         "//src/main/java/com/google/devtools/build/lib/analysis:no_build_request_finished_event",
-        "//src/main/java/com/google/devtools/build/lib/analysis:print_action_visitor",
         "//src/main/java/com/google/devtools/build/lib/analysis:server_directories",
         "//src/main/java/com/google/devtools/build/lib/analysis:test/coverage_report_action_factory",
-        "//src/main/java/com/google/devtools/build/lib/analysis:test/test_configuration",
         "//src/main/java/com/google/devtools/build/lib/analysis:top_level_artifact_context",
         "//src/main/java/com/google/devtools/build/lib/analysis:transitive_info_collection",
         "//src/main/java/com/google/devtools/build/lib/analysis:view_creation_failed_exception",
@@ -328,14 +317,11 @@
         "//src/main/java/com/google/devtools/build/lib/exec:module_action_context_registry",
         "//src/main/java/com/google/devtools/build/lib/exec:remote_local_fallback_registry",
         "//src/main/java/com/google/devtools/build/lib/exec:single_build_file_cache",
-        "//src/main/java/com/google/devtools/build/lib/exec:spawn_action_context_maps",
         "//src/main/java/com/google/devtools/build/lib/exec:spawn_cache",
         "//src/main/java/com/google/devtools/build/lib/exec:spawn_strategy_registry",
         "//src/main/java/com/google/devtools/build/lib/exec:spawn_strategy_resolver",
-        "//src/main/java/com/google/devtools/build/lib/exec:symlink_tree_helper",
         "//src/main/java/com/google/devtools/build/lib/exec:symlink_tree_strategy",
         "//src/main/java/com/google/devtools/build/lib/exec:test_log_helper",
-        "//src/main/java/com/google/devtools/build/lib/exec:test_policy",
         "//src/main/java/com/google/devtools/build/lib/exec/local:options",
         "//src/main/java/com/google/devtools/build/lib/metrics:event",
         "//src/main/java/com/google/devtools/build/lib/packages",
@@ -346,14 +332,13 @@
         "//src/main/java/com/google/devtools/build/lib/platform:suspend_counter",
         "//src/main/java/com/google/devtools/build/lib/profiler",
         "//src/main/java/com/google/devtools/build/lib/profiler:google-auto-profiler-utils",
-        "//src/main/java/com/google/devtools/build/lib/profiler:profiler-output",
         "//src/main/java/com/google/devtools/build/lib/profiler/memory:allocationtracker",
         "//src/main/java/com/google/devtools/build/lib/query2",
-        "//src/main/java/com/google/devtools/build/lib/query2/common:abstract-blaze-query-env",
+        "//src/main/java/com/google/devtools/build/lib/query2:aquery-utils",
         "//src/main/java/com/google/devtools/build/lib/query2/engine",
         "//src/main/java/com/google/devtools/build/lib/query2/query/output",
         "//src/main/java/com/google/devtools/build/lib/rules:alias",
-        "//src/main/java/com/google/devtools/build/lib/rules/android",
+        "//src/main/java/com/google/devtools/build/lib/runtime/events",
         "//src/main/java/com/google/devtools/build/lib/server:rpc_server",
         "//src/main/java/com/google/devtools/build/lib/server/signal",
         "//src/main/java/com/google/devtools/build/lib/shell",
@@ -383,18 +368,16 @@
         "//src/main/java/com/google/devtools/build/lib/util",
         "//src/main/java/com/google/devtools/build/lib/util:TestType",
         "//src/main/java/com/google/devtools/build/lib/util:abrupt_exit_exception",
-        "//src/main/java/com/google/devtools/build/lib/util:command",
         "//src/main/java/com/google/devtools/build/lib/util:crash_failure_details",
         "//src/main/java/com/google/devtools/build/lib/util:custom_exit_code_publisher",
         "//src/main/java/com/google/devtools/build/lib/util:custom_failure_detail_publisher",
         "//src/main/java/com/google/devtools/build/lib/util:debug-logger-configurator",
         "//src/main/java/com/google/devtools/build/lib/util:detailed_exit_code",
         "//src/main/java/com/google/devtools/build/lib/util:exit_code",
-        "//src/main/java/com/google/devtools/build/lib/util:filetype",
         "//src/main/java/com/google/devtools/build/lib/util:interrupted_failure_details",
+        "//src/main/java/com/google/devtools/build/lib/util:logging",
         "//src/main/java/com/google/devtools/build/lib/util:os",
         "//src/main/java/com/google/devtools/build/lib/util:process",
-        "//src/main/java/com/google/devtools/build/lib/util:shell_escaper",
         "//src/main/java/com/google/devtools/build/lib/util:string",
         "//src/main/java/com/google/devtools/build/lib/util/io",
         "//src/main/java/com/google/devtools/build/lib/util/io:out-err",
@@ -408,11 +391,8 @@
         "//src/main/java/com/google/devtools/common/options:invocation_policy",
         "//src/main/protobuf:action_cache_java_proto",
         "//src/main/protobuf:analysis_java_proto",
-        "//src/main/protobuf:bazel_flags_java_proto",
-        "//src/main/protobuf:build_java_proto",
         "//src/main/protobuf:command_line_java_proto",
         "//src/main/protobuf:command_server_java_proto",
-        "//src/main/protobuf:extra_actions_base_java_proto",
         "//src/main/protobuf:failure_details_java_proto",
         "//src/main/protobuf:invocation_policy_java_proto",
         "//src/main/protobuf:option_filters_java_proto",
@@ -420,22 +400,12 @@
         "//third_party:auto_value",
         "//third_party:error_prone_annotations",
         "//third_party:flogger",
-        "//third_party:gson",
         "//third_party:guava",
         "//third_party:jsr305",
-        "//third_party/protobuf:protobuf_java",
+        "@com_google_protobuf//:protobuf_java",
     ],
 )
 
-merge_licenses(
-    name = "merge_licenses",
-    srcs = [
-        "//:LICENSE",
-        "//third_party:srcs",
-    ],
-    out = "runtime/commands/LICENSE",
-)
-
 java_library(
     name = "all-build-rules",
     exports = [
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/BUILD
index eb9ca50..1c8e9cf 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/bazel/BUILD
@@ -59,8 +59,8 @@
     name = "builtin_command_module",
     srcs = ["BazelBuiltinCommandModule.java"],
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib/exec:standalone_test_strategy",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands",
     ],
 )
 
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/commands/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/commands/BUILD
index 37714f3..c3ff16d 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/commands/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/bazel/commands/BUILD
@@ -16,7 +16,6 @@
     resources = [
         "fetch.txt",
         "sync.txt",
-        "//src/main/java/com/google/devtools/build/lib:merge_licenses",  # license
     ],
     deps = [
         "//src/main/java/com/google/devtools/build/lib:keep-going-option",
@@ -36,6 +35,7 @@
         "//src/main/java/com/google/devtools/build/lib/query2/engine",
         "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_directory_value",
         "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_function",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands",
         "//src/main/java/com/google/devtools/build/lib/skyframe:package_lookup_value",
         "//src/main/java/com/google/devtools/build/lib/skyframe:precomputed_value",
         "//src/main/java/com/google/devtools/build/lib/skyframe:skyframe_cluster",
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeOptionHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeOptionHandler.java
index 251767f..8e91928 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeOptionHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeOptionHandler.java
@@ -22,7 +22,6 @@
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.EventHandler;
 import com.google.devtools.build.lib.events.ExtendedEventHandler;
-import com.google.devtools.build.lib.runtime.commands.ProjectFileSupport;
 import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
 import com.google.devtools.build.lib.util.ExitCode;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java b/src/main/java/com/google/devtools/build/lib/runtime/ProjectFileSupport.java
similarity index 82%
rename from src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java
rename to src/main/java/com/google/devtools/build/lib/runtime/ProjectFileSupport.java
index b3de6d6..4e17dc9 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/ProjectFileSupport.java
@@ -11,14 +11,13 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-package com.google.devtools.build.lib.runtime.commands;
+package com.google.devtools.build.lib.runtime;
 
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.ExtendedEventHandler;
 import com.google.devtools.build.lib.pkgcache.PackageOptions;
 import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
-import com.google.devtools.build.lib.runtime.CommonCommandOptions;
-import com.google.devtools.build.lib.runtime.ProjectFile;
+import com.google.devtools.build.lib.runtime.events.GotProjectFileEvent;
 import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -35,7 +34,7 @@
  */
 public final class ProjectFileSupport {
   static final String PROJECT_FILE_PREFIX = "+";
-  
+
   private ProjectFileSupport() {}
 
   /**
@@ -44,18 +43,24 @@
    * are not enabled, then it throws an exception instead.
    */
   public static void handleProjectFiles(
-      ExtendedEventHandler eventHandler, ProjectFile.Provider projectFileProvider,
-      Path workspaceDir, Path workingDir, OptionsParser optionsParser, String command)
-          throws OptionsParsingException {
+      ExtendedEventHandler eventHandler,
+      ProjectFile.Provider projectFileProvider,
+      Path workspaceDir,
+      Path workingDir,
+      OptionsParser optionsParser,
+      String command)
+      throws OptionsParsingException {
     List<String> targets = optionsParser.getResidue();
-    if (projectFileProvider != null && !targets.isEmpty()
+    if (projectFileProvider != null
+        && !targets.isEmpty()
         && targets.get(0).startsWith(PROJECT_FILE_PREFIX)) {
       if (targets.size() > 1) {
         throw new OptionsParsingException("Cannot handle more than one +<file> argument yet");
       }
       if (!optionsParser.getOptions(CommonCommandOptions.class).allowProjectFiles) {
-        throw new OptionsParsingException("project file support is not enabled. "
-                                          + "Pass --experimental_allow_project_files to enable.");
+        throw new OptionsParsingException(
+            "project file support is not enabled. "
+                + "Pass --experimental_allow_project_files to enable.");
       }
       // TODO(bazel-team): This is currently treated as a path relative to the workspace - if the
       // cwd is a subdirectory of the workspace, that will be surprising, and we should interpret it
@@ -73,8 +78,9 @@
                   workingDir,
                   BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY)
               .getPathEntries();
-      ProjectFile projectFile = projectFileProvider.getProjectFile(
-          workingDir, packagePath, projectFilePath, optionsParser);
+      ProjectFile projectFile =
+          projectFileProvider.getProjectFile(
+              workingDir, packagePath, projectFilePath, optionsParser);
       eventHandler.handle(Event.info("Using " + projectFile.getName()));
 
       optionsParser.parse(
@@ -91,7 +97,8 @@
   public static List<String> getTargets(
       ProjectFile.Provider projectFileProvider, OptionsParsingResult options) {
     List<String> targets = options.getResidue();
-    if (projectFileProvider != null && !targets.isEmpty()
+    if (projectFileProvider != null
+        && !targets.isEmpty()
         && targets.get(0).startsWith(PROJECT_FILE_PREFIX)) {
       return targets.subList(1, targets.size());
     }
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/BUILD b/src/main/java/com/google/devtools/build/lib/runtime/commands/BUILD
new file mode 100644
index 0000000..5e67bfe
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/BUILD
@@ -0,0 +1,103 @@
+load("@rules_java//java:defs.bzl", "java_library")
+
+package(default_visibility = ["//src:__subpackages__"])
+
+filegroup(
+    name = "srcs",
+    srcs = glob(["**"]) + [
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands/events:srcs",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands/info:srcs",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands/license:srcs",
+    ],
+    visibility = ["//src:__subpackages__"],
+)
+
+java_library(
+    name = "commands",
+    srcs = glob([
+        "*.java",
+    ]),
+    resources = glob(["*.txt"]) + [
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands/license",
+    ],
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:build-request-options",
+        "//src/main/java/com/google/devtools/build/lib:keep-going-option",
+        "//src/main/java/com/google/devtools/build/lib:loading-phase-threads-option",
+        "//src/main/java/com/google/devtools/build/lib:runtime",
+        "//src/main/java/com/google/devtools/build/lib:runtime/blaze_command_result",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
+        "//src/main/java/com/google/devtools/build/lib/analysis:analysis_options",
+        "//src/main/java/com/google/devtools/build/lib/analysis:blaze_version_info",
+        "//src/main/java/com/google/devtools/build/lib/analysis:config/build_configuration",
+        "//src/main/java/com/google/devtools/build/lib/analysis:config/core_options",
+        "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment",
+        "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_options",
+        "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_provider",
+        "//src/main/java/com/google/devtools/build/lib/analysis:config/invalid_configuration_exception",
+        "//src/main/java/com/google/devtools/build/lib/analysis:config/run_under",
+        "//src/main/java/com/google/devtools/build/lib/analysis:configured_target",
+        "//src/main/java/com/google/devtools/build/lib/analysis:file_provider",
+        "//src/main/java/com/google/devtools/build/lib/analysis:no_build_event",
+        "//src/main/java/com/google/devtools/build/lib/analysis:no_build_request_finished_event",
+        "//src/main/java/com/google/devtools/build/lib/analysis:print_action_visitor",
+        "//src/main/java/com/google/devtools/build/lib/analysis:test/test_configuration",
+        "//src/main/java/com/google/devtools/build/lib/buildeventstream",
+        "//src/main/java/com/google/devtools/build/lib/cmdline",
+        "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
+        "//src/main/java/com/google/devtools/build/lib/events",
+        "//src/main/java/com/google/devtools/build/lib/exec:execution_options",
+        "//src/main/java/com/google/devtools/build/lib/exec:symlink_tree_helper",
+        "//src/main/java/com/google/devtools/build/lib/exec:test_policy",
+        "//src/main/java/com/google/devtools/build/lib/exec/local:options",
+        "//src/main/java/com/google/devtools/build/lib/packages",
+        "//src/main/java/com/google/devtools/build/lib/packages:build_type",
+        "//src/main/java/com/google/devtools/build/lib/packages:type",
+        "//src/main/java/com/google/devtools/build/lib/pkgcache",
+        "//src/main/java/com/google/devtools/build/lib/profiler",
+        "//src/main/java/com/google/devtools/build/lib/profiler:profiler-output",
+        "//src/main/java/com/google/devtools/build/lib/profiler/memory:allocationtracker",
+        "//src/main/java/com/google/devtools/build/lib/query2",
+        "//src/main/java/com/google/devtools/build/lib/query2/common:abstract-blaze-query-env",
+        "//src/main/java/com/google/devtools/build/lib/query2/engine",
+        "//src/main/java/com/google/devtools/build/lib/query2/query/output",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands/events",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands/info",
+        "//src/main/java/com/google/devtools/build/lib/shell",
+        "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value",
+        "//src/main/java/com/google/devtools/build/lib/skyframe:loading_phase_started_event",
+        "//src/main/java/com/google/devtools/build/lib/skyframe:package_progress_receiver",
+        "//src/main/java/com/google/devtools/build/lib/skyframe:sky_functions",
+        "//src/main/java/com/google/devtools/build/lib/skyframe:skyframe_cluster",
+        "//src/main/java/com/google/devtools/build/lib/util",
+        "//src/main/java/com/google/devtools/build/lib/util:abrupt_exit_exception",
+        "//src/main/java/com/google/devtools/build/lib/util:command",
+        "//src/main/java/com/google/devtools/build/lib/util:detailed_exit_code",
+        "//src/main/java/com/google/devtools/build/lib/util:exit_code",
+        "//src/main/java/com/google/devtools/build/lib/util:filetype",
+        "//src/main/java/com/google/devtools/build/lib/util:interrupted_failure_details",
+        "//src/main/java/com/google/devtools/build/lib/util:os",
+        "//src/main/java/com/google/devtools/build/lib/util:process",
+        "//src/main/java/com/google/devtools/build/lib/util:shell_escaper",
+        "//src/main/java/com/google/devtools/build/lib/util:string",
+        "//src/main/java/com/google/devtools/build/lib/util/io",
+        "//src/main/java/com/google/devtools/build/lib/util/io:out-err",
+        "//src/main/java/com/google/devtools/build/lib/vfs",
+        "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
+        "//src/main/java/com/google/devtools/build/skyframe",
+        "//src/main/java/com/google/devtools/common/options",
+        "//src/main/java/com/google/devtools/common/options:invocation_policy",
+        "//src/main/protobuf:analysis_java_proto",
+        "//src/main/protobuf:bazel_flags_java_proto",
+        "//src/main/protobuf:command_server_java_proto",
+        "//src/main/protobuf:extra_actions_base_java_proto",
+        "//src/main/protobuf:failure_details_java_proto",
+        "//src/main/protobuf:invocation_policy_java_proto",
+        "//third_party:flogger",
+        "//third_party:gson",
+        "//third_party:guava",
+        "//third_party:jsr305",
+        "//third_party/protobuf:protobuf_java",
+    ],
+)
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java
index ecb1915..4cc8de6 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java
@@ -26,6 +26,7 @@
 import com.google.devtools.build.lib.runtime.BlazeRuntime;
 import com.google.devtools.build.lib.runtime.Command;
 import com.google.devtools.build.lib.runtime.CommandEnvironment;
+import com.google.devtools.build.lib.runtime.commands.events.CleanStartingEvent;
 import com.google.devtools.build.lib.server.FailureDetails;
 import com.google.devtools.build.lib.server.FailureDetails.CleanCommand.Code;
 import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
@@ -100,19 +101,6 @@
     public boolean async;
   }
 
-  /** Posted on the public event stream to announce that a clean is happening. */
-  public static class CleanStartingEvent {
-    private final OptionsParsingResult optionsParsingResult;
-
-    public CleanStartingEvent(OptionsParsingResult optionsParsingResult) {
-      this.optionsParsingResult = optionsParsingResult;
-    }
-
-    public OptionsParsingResult getOptionsProvider() {
-      return optionsParsingResult;
-    }
-  }
-
   private final OS os;
 
   public CleanCommand() {
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/LicenseCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/LicenseCommand.java
index 805c815..58b910b 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/LicenseCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/LicenseCommand.java
@@ -43,8 +43,10 @@
   private static final ImmutableSet<String> JAVA_LICENSE_FILES =
       ImmutableSet.of("ASSEMBLY_EXCEPTION", "DISCLAIMER", "LICENSE", "THIRD_PARTY_README");
 
+  private static final String BAZEL_LICENSE = "license/LICENSE";
+
   public static boolean isSupported() {
-    return ResourceFileLoader.resourceExists(LicenseCommand.class, "LICENSE");
+    return ResourceFileLoader.resourceExists(LicenseCommand.class, BAZEL_LICENSE);
   }
 
   @Override
@@ -55,7 +57,7 @@
     outErr.printOutLn("Licenses of all components included in this binary:\n");
 
     try {
-      outErr.printOutLn(ResourceFileLoader.loadResource(this.getClass(), "LICENSE"));
+      outErr.printOutLn(ResourceFileLoader.loadResource(this.getClass(), BAZEL_LICENSE));
     } catch (IOException e) {
       throw new IllegalStateException(
           "I/O error while trying to print 'LICENSE' resource: " + e.getMessage(), e);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/TargetPatternsHelper.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/TargetPatternsHelper.java
index 8f6b644..8dc8f3b 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/TargetPatternsHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/TargetPatternsHelper.java
@@ -20,6 +20,7 @@
 import com.google.devtools.build.lib.profiler.Profiler;
 import com.google.devtools.build.lib.profiler.SilentCloseable;
 import com.google.devtools.build.lib.runtime.CommandEnvironment;
+import com.google.devtools.build.lib.runtime.ProjectFileSupport;
 import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
 import com.google.devtools.build.lib.server.FailureDetails.TargetPatterns;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/events/BUILD b/src/main/java/com/google/devtools/build/lib/runtime/commands/events/BUILD
new file mode 100644
index 0000000..8e17fb7
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/events/BUILD
@@ -0,0 +1,17 @@
+load("@rules_java//java:defs.bzl", "java_library")
+
+package(default_visibility = ["//src:__subpackages__"])
+
+filegroup(
+    name = "srcs",
+    srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
+)
+
+java_library(
+    name = "events",
+    srcs = glob(["*.java"]),
+    deps = [
+        "//src/main/java/com/google/devtools/common/options",
+    ],
+)
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/events/CleanStartingEvent.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/events/CleanStartingEvent.java
new file mode 100644
index 0000000..909807b
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/events/CleanStartingEvent.java
@@ -0,0 +1,30 @@
+// Copyright 2020 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.runtime.commands.events;
+
+import com.google.devtools.common.options.OptionsParsingResult;
+
+/** Posted on the public event stream to announce that a clean is happening. */
+public class CleanStartingEvent {
+  private final OptionsParsingResult optionsParsingResult;
+
+  public CleanStartingEvent(OptionsParsingResult optionsParsingResult) {
+    this.optionsParsingResult = optionsParsingResult;
+  }
+
+  public OptionsParsingResult getOptionsProvider() {
+    return optionsParsingResult;
+  }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BUILD b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BUILD
new file mode 100644
index 0000000..d47c7c2
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BUILD
@@ -0,0 +1,36 @@
+load("@rules_java//java:defs.bzl", "java_library")
+
+package(default_visibility = ["//src:__subpackages__"])
+
+filegroup(
+    name = "srcs",
+    srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
+)
+
+java_library(
+    name = "info",
+    srcs = glob(["*.java"]),
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:runtime",
+        "//src/main/java/com/google/devtools/build/lib/analysis:blaze_version_info",
+        "//src/main/java/com/google/devtools/build/lib/analysis:config/build_configuration",
+        "//src/main/java/com/google/devtools/build/lib/cmdline:cmdline-primitives",
+        "//src/main/java/com/google/devtools/build/lib/packages",
+        "//src/main/java/com/google/devtools/build/lib/packages:build_type",
+        "//src/main/java/com/google/devtools/build/lib/packages:starlark_semantics_options",
+        "//src/main/java/com/google/devtools/build/lib/packages:type",
+        "//src/main/java/com/google/devtools/build/lib/pkgcache",
+        "//src/main/java/com/google/devtools/build/lib/skyframe:skyframe_cluster",
+        "//src/main/java/com/google/devtools/build/lib/syntax:evaluator",
+        "//src/main/java/com/google/devtools/build/lib/util:abrupt_exit_exception",
+        "//src/main/java/com/google/devtools/build/lib/util:debug-logger-configurator",
+        "//src/main/java/com/google/devtools/build/lib/util:process",
+        "//src/main/java/com/google/devtools/build/lib/util:string",
+        "//src/main/java/com/google/devtools/build/lib/vfs",
+        "//src/main/java/com/google/devtools/common/options",
+        "//src/main/protobuf:build_java_proto",
+        "//third_party:flogger",
+        "//third_party:guava",
+    ],
+)
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/license/BUILD b/src/main/java/com/google/devtools/build/lib/runtime/commands/license/BUILD
new file mode 100644
index 0000000..884b564
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/license/BUILD
@@ -0,0 +1,21 @@
+load(":merge_licenses.bzl", "merge_licenses")
+
+package(default_visibility = ["//src:__subpackages__"])
+
+licenses(["notice"])  # Apache 2.0
+
+filegroup(
+    name = "srcs",
+    srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
+)
+
+# Satisfy the rules in runtime/commands/BUILD which use a generated LICENSE file in Bazel open source
+merge_licenses(
+    name = "license",
+    srcs = [
+        "//:LICENSE",
+        "//third_party:srcs",
+    ],
+    out = "LICENSE",
+)
diff --git a/src/main/java/com/google/devtools/build/lib/merge_licenses.bzl b/src/main/java/com/google/devtools/build/lib/runtime/commands/license/merge_licenses.bzl
similarity index 100%
rename from src/main/java/com/google/devtools/build/lib/merge_licenses.bzl
rename to src/main/java/com/google/devtools/build/lib/runtime/commands/license/merge_licenses.bzl
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/events/BUILD b/src/main/java/com/google/devtools/build/lib/runtime/events/BUILD
new file mode 100644
index 0000000..2195d8a
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/runtime/events/BUILD
@@ -0,0 +1,15 @@
+load("@rules_java//java:defs.bzl", "java_library")
+
+package(default_visibility = ["//src:__subpackages__"])
+
+filegroup(
+    name = "srcs",
+    srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
+)
+
+java_library(
+    name = "events",
+    srcs = glob(["*.java"]),
+    deps = ["//src/main/java/com/google/devtools/build/lib/events"],
+)
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/GotProjectFileEvent.java b/src/main/java/com/google/devtools/build/lib/runtime/events/GotProjectFileEvent.java
similarity index 89%
rename from src/main/java/com/google/devtools/build/lib/runtime/commands/GotProjectFileEvent.java
rename to src/main/java/com/google/devtools/build/lib/runtime/events/GotProjectFileEvent.java
index 4b6c58f..2d88330 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/GotProjectFileEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/events/GotProjectFileEvent.java
@@ -11,18 +11,18 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-package com.google.devtools.build.lib.runtime.commands;
+
+package com.google.devtools.build.lib.runtime.events;
 
 import com.google.devtools.build.lib.events.ExtendedEventHandler.Postable;
 
-/**
- * An event describing a project file which has been parsed.
- */
+/** An event describing a project file which has been parsed. */
 public class GotProjectFileEvent implements Postable {
   private final String projectFile;
 
   /**
    * Construct the event.
+   *
    * @param projectFile The workspace-relative path of the project file.
    */
   public GotProjectFileEvent(String projectFile) {
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/BUILD b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/BUILD
index b071470..c35afcd 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/BUILD
@@ -23,6 +23,7 @@
         "//src/main/java/com/google/devtools/build/lib/analysis:test/test_configuration",
         "//src/main/java/com/google/devtools/build/lib/events",
         "//src/main/java/com/google/devtools/build/lib/rules/android",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands",
         "//src/main/java/com/google/devtools/build/lib/shell",
         "//src/main/java/com/google/devtools/build/lib/util:command",
         "//src/main/java/com/google/devtools/build/lib/util:detailed_exit_code",
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
index 20954ca..16c1647 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
@@ -34,8 +34,8 @@
 import com.google.devtools.build.lib.runtime.Command;
 import com.google.devtools.build.lib.runtime.CommandEnvironment;
 import com.google.devtools.build.lib.runtime.CommonCommandOptions;
+import com.google.devtools.build.lib.runtime.ProjectFileSupport;
 import com.google.devtools.build.lib.runtime.commands.BuildCommand;
-import com.google.devtools.build.lib.runtime.commands.ProjectFileSupport;
 import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
 import com.google.devtools.build.lib.server.FailureDetails.Interrupted;
 import com.google.devtools.build.lib.server.FailureDetails.MobileInstall;
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 0aeec78..27f6381 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/worker/BUILD
@@ -22,6 +22,7 @@
         "//src/main/java/com/google/devtools/build/lib/exec:spawn_strategy_registry",
         "//src/main/java/com/google/devtools/build/lib/exec/local",
         "//src/main/java/com/google/devtools/build/lib/exec/local:options",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands/events",
         "//src/main/java/com/google/devtools/build/lib/sandbox",
         "//src/main/java/com/google/devtools/build/lib/shell",
         "//src/main/java/com/google/devtools/build/lib/util:resource_converter",
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java
index 89b8a3f..4da4f4a 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java
@@ -32,7 +32,7 @@
 import com.google.devtools.build.lib.runtime.Command;
 import com.google.devtools.build.lib.runtime.CommandEnvironment;
 import com.google.devtools.build.lib.runtime.ProcessWrapper;
-import com.google.devtools.build.lib.runtime.commands.CleanCommand.CleanStartingEvent;
+import com.google.devtools.build.lib.runtime.commands.events.CleanStartingEvent;
 import com.google.devtools.build.lib.sandbox.SandboxHelpers;
 import com.google.devtools.build.lib.sandbox.SandboxOptions;
 import com.google.devtools.build.lib.vfs.Path;
@@ -50,7 +50,7 @@
   private WorkerPool workerPool;
   private WorkerOptions options;
   private ImmutableMap<String, Integer> workerPoolConfig;
-  
+
   @Override
   public Iterable<Class<? extends OptionsBase>> getCommandOptions(Command command) {
     return "build".equals(command.name())
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index bc1411d..a1dcc09 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -390,6 +390,7 @@
         "//src/main/java/com/google/devtools/build/lib/packages:starlark_semantics_options",
         "//src/main/java/com/google/devtools/build/lib/query2",
         "//src/main/java/com/google/devtools/build/lib/query2/engine",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands",
         "//src/main/java/com/google/devtools/build/lib/sandbox",
         "//src/main/java/com/google/devtools/build/lib/skyframe:loading_phase_started_event",
         "//src/main/java/com/google/devtools/build/lib/skyframe:package_progress_receiver",
diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/BUILD b/src/test/java/com/google/devtools/build/lib/buildtool/BUILD
index 9d64e52..41d6f0b 100644
--- a/src/test/java/com/google/devtools/build/lib/buildtool/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/buildtool/BUILD
@@ -472,6 +472,7 @@
         "//src/main/java/com/google/devtools/build/lib/query2/common:abstract-blaze-query-env",
         "//src/main/java/com/google/devtools/build/lib/query2/engine",
         "//src/main/java/com/google/devtools/build/lib/query2/query/output",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands",
         "//src/main/java/com/google/devtools/common/options",
         "//src/main/protobuf:build_java_proto",
         "//src/main/protobuf:invocation_policy_java_proto",
@@ -580,6 +581,7 @@
         "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib/query2",
         "//src/main/java/com/google/devtools/build/lib/query2/engine",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands",
         "//src/main/java/com/google/devtools/common/options",
         "//src/test/java/com/google/devtools/build/lib/buildtool/util",
         "//third_party:guava",
diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD b/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD
index 15da144..a0b4989 100644
--- a/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD
@@ -66,6 +66,7 @@
         "//src/main/java/com/google/devtools/build/lib/pkgcache",
         "//src/main/java/com/google/devtools/build/lib/profiler",
         "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_function",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands",
         "//src/main/java/com/google/devtools/build/lib/sandbox",
         "//src/main/java/com/google/devtools/build/lib/shell",
         "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_and_data",
diff --git a/src/test/java/com/google/devtools/build/lib/packages/BUILD b/src/test/java/com/google/devtools/build/lib/packages/BUILD
index cf6ebf2..ec361e4 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/packages/BUILD
@@ -142,6 +142,7 @@
         "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_function",
         "//src/main/java/com/google/devtools/build/lib/rules/cpp",
         "//src/main/java/com/google/devtools/build/lib/rules/proto",
+        "//src/main/java/com/google/devtools/build/lib/runtime/commands",
         "//src/main/java/com/google/devtools/build/lib/skyframe:precomputed_value",
         "//src/main/java/com/google/devtools/build/lib/skyframe:skyframe_cluster",
         "//src/main/java/com/google/devtools/build/lib/skyframe/packages:PackageFactoryBuilderWithSkyframeForTesting",