load("@rules_java//java:defs.bzl", "java_library")

package(default_visibility = ["//src:__subpackages__"])

filegroup(
    name = "srcs",
    srcs = glob(["**"]),
    visibility = ["//src:__subpackages__"],
)

# Do not depend on this target when making a worker. To use WorkRequestHandler, depend on :work_request_handlers.
java_library(
    name = "worker",
    srcs = glob(
        ["*.java"],
        exclude = [
            "WorkerFilesHash.java",
            "WorkerSpawnRunner.java",
            "WorkerModule.java",
            "WorkerParser.java",
            "WorkerSpawnStrategy.java",
            "WorkerKey.java",
            "WorkerMetricsCollector.java",
            "WorkerMetric.java",
            "WorkerMetricsEvent.java",
            "WorkerOptions.java",
            "WorkerLifecycleManager.java",
            "JsonWorkerMessageProtocol.java",
            "JsonWorkerProtocol.java",
            "ProtoWorkerMessageProtocol.java",
            "ProtoWorkerProtocol.java",
            "WorkerProtocolImpl.java",
        ],
    ),
    deps = [
        ":worker_key",
        ":worker_protocol",
        "//src/main/java/com/google/devtools/build/lib/actions",
        "//src/main/java/com/google/devtools/build/lib/events",
        "//src/main/java/com/google/devtools/build/lib/sandbox:sandbox_helpers",
        "//src/main/java/com/google/devtools/build/lib/shell",
        "//src/main/java/com/google/devtools/build/lib/vfs",
        "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
        "//src/main/protobuf:failure_details_java_proto",
        "//src/main/protobuf:worker_protocol_java_proto",
        "//third_party:apache_commons_pool2",
        "//third_party:auto_value",
        "//third_party:flogger",
        "//third_party:gson",
        "//third_party:guava",
        "//third_party:jsr305",
        "//third_party/protobuf:protobuf_java",
        "//third_party/protobuf:protobuf_java_util",
    ],
)

java_library(
    name = "worker_protocol",
    srcs = [
        "JsonWorkerProtocol.java",
        "ProtoWorkerProtocol.java",
        "WorkerProtocolImpl.java",
    ],
    deps = [
        "//src/main/java/com/google/devtools/common/options",
        "//src/main/protobuf:worker_protocol_java_proto",
        "//third_party:gson",
        "//third_party:guava",
        "//third_party/protobuf:protobuf_java",
        "//third_party/protobuf:protobuf_java_util",
    ],
)

java_library(
    name = "worker_files_hash",
    srcs = ["WorkerFilesHash.java"],
    deps = [
        "//src/main/java/com/google/devtools/build/lib/actions",
        "//src/main/java/com/google/devtools/build/lib/actions:action_input_helper",
        "//src/main/java/com/google/devtools/build/lib/actions:artifacts",
        "//src/main/java/com/google/devtools/build/lib/actions:file_metadata",
        "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
        "//third_party:guava",
        "//third_party:jsr305",
    ],
)

java_library(
    name = "worker_spawn_runner",
    srcs = [
        "WorkerLifecycleManager.java",
        "WorkerParser.java",
        "WorkerSpawnRunner.java",
    ],
    deps = [
        ":worker",
        ":worker_files_hash",
        ":worker_key",
        ":worker_metric",
        ":worker_options",
        "//src/main/java/com/google/devtools/build/lib/actions",
        "//src/main/java/com/google/devtools/build/lib/actions:action_input_helper",
        "//src/main/java/com/google/devtools/build/lib/actions:artifacts",
        "//src/main/java/com/google/devtools/build/lib/actions:execution_requirements",
        "//src/main/java/com/google/devtools/build/lib/actions:file_metadata",
        "//src/main/java/com/google/devtools/build/lib/actions:localhost_capacity",
        "//src/main/java/com/google/devtools/build/lib/actions:resource_manager",
        "//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/exec:bin_tools",
        "//src/main/java/com/google/devtools/build/lib/exec:runfiles_tree_updater",
        "//src/main/java/com/google/devtools/build/lib/exec:spawn_runner",
        "//src/main/java/com/google/devtools/build/lib/exec/local",
        "//src/main/java/com/google/devtools/build/lib/profiler",
        "//src/main/java/com/google/devtools/build/lib/sandbox:sandbox_helpers",
        "//src/main/java/com/google/devtools/build/lib/util/io",
        "//src/main/java/com/google/devtools/build/lib/vfs",
        "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
        "//src/main/protobuf:failure_details_java_proto",
        "//src/main/protobuf:worker_protocol_java_proto",
        "//third_party:apache_commons_pool2",
        "//third_party:flogger",
        "//third_party:guava",
        "//third_party/protobuf:protobuf_java",
    ],
)

java_library(
    name = "worker_module",
    srcs = [
        "WorkerModule.java",
        "WorkerSpawnStrategy.java",
    ],
    deps = [
        ":worker",
        ":worker_metric",
        ":worker_options",
        ":worker_spawn_runner",
        "//src/main/java/com/google/devtools/build/lib:runtime",
        "//src/main/java/com/google/devtools/build/lib/events",
        "//src/main/java/com/google/devtools/build/lib/exec:abstract_spawn_strategy",
        "//src/main/java/com/google/devtools/build/lib/exec:execution_options",
        "//src/main/java/com/google/devtools/build/lib/exec:runfiles_tree_updater",
        "//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/runtime/commands/events",
        "//src/main/java/com/google/devtools/build/lib/sandbox:sandbox_helpers",
        "//src/main/java/com/google/devtools/build/lib/vfs",
        "//src/main/java/com/google/devtools/common/options",
        "//third_party:guava",
        "//third_party:jsr305",
    ],
)

java_library(
    name = "work_request_handlers",
    srcs = [
        "JsonWorkerMessageProcessor.java",
        "ProtoWorkerMessageProcessor.java",
        "WorkRequestHandler.java",
    ],
    deps = [
        "//src/main/protobuf:worker_protocol_java_proto",
        "//third_party:gson",
        "//third_party:guava",
        "//third_party/protobuf:protobuf_java",
        "//third_party/protobuf:protobuf_java_util",
    ],
)

java_library(
    name = "worker_key",
    srcs = [
        "WorkerKey.java",
    ],
    deps = [
        "//src/main/java/com/google/devtools/build/lib/actions:execution_requirements",
        "//src/main/java/com/google/devtools/build/lib/util:command",
        "//src/main/java/com/google/devtools/build/lib/vfs",
        "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
        "//third_party:guava",
    ],
)

java_library(
    name = "worker_metric",
    srcs = [
        "WorkerMetric.java",
        "WorkerMetricsCollector.java",
    ],
    deps = [
        "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto",
        "//src/main/java/com/google/devtools/build/lib/clock",
        "//src/main/java/com/google/devtools/build/lib/util:os",
        "//third_party:auto_value",
        "//third_party:flogger",
        "//third_party:guava",
        "//third_party:jsr305",
    ],
)

java_library(
    name = "worker_options",
    srcs = ["WorkerOptions.java"],
    deps = [
        "//src/main/java/com/google/devtools/build/lib/util:ram_resource_converter",
        "//src/main/java/com/google/devtools/build/lib/util:resource_converter",
        "//src/main/java/com/google/devtools/common/options",
        "//third_party:guava",
    ],
)
