blob: 8fefe00c0a991252514ed17bbfd666d0a02996d8 [file] [log] [blame]
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/components.gni")
import("//build/config.gni")
import("//build/dist/component_manifest_resources.gni")
import("//build/fuzzing/fuzzer.gni")
import("//build/images/filesystem_limits.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_fuzzer.gni")
import("//build/rust/rustc_library.gni")
import("//src/diagnostics/archivist/build/archivist.gni")
import("//src/diagnostics/archivist/configs.gni")
import("//tools/fidl/measure-tape/measure_tape.gni")
measure_tape("logmessage_measure_tape") {
target_binding = "rust"
target_types = [ "fuchsia.logger/LogMessage" ]
fidls = [ "//sdk/fidl/fuchsia.logger" ]
}
rustc_library("lib") {
name = "archivist_lib"
with_unit_tests = true
edition = "2018"
visibility = [
"//src/diagnostics/archivist/*",
"//src/diagnostics/launcher/*",
]
deps = [
":archivist-config",
":logmessage_measure_tape",
"fidl:controller-rustc",
"//garnet/lib/rust/files_async",
"//garnet/lib/rust/io_util",
"//sdk/fidl/fuchsia.boot:fuchsia.boot-rustc",
"//sdk/fidl/fuchsia.component:fuchsia.component-rustc",
"//sdk/fidl/fuchsia.diagnostics:fuchsia.diagnostics-rustc",
"//sdk/fidl/fuchsia.diagnostics.stream:fuchsia.diagnostics.stream-rustc",
"//sdk/fidl/fuchsia.inspect:fuchsia.inspect-rustc",
"//sdk/fidl/fuchsia.inspect.deprecated:fuchsia.inspect.deprecated-rustc",
"//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
"//sdk/fidl/fuchsia.logger:fuchsia.logger-rustc",
"//sdk/fidl/fuchsia.mem:fuchsia.mem-rustc",
"//sdk/fidl/fuchsia.process.lifecycle:fuchsia.process.lifecycle-rustc",
"//sdk/fidl/fuchsia.sys.internal:fuchsia.sys.internal-rustc",
"//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
"//src/diagnostics/lib/inspect-fidl-load",
"//src/diagnostics/lib/validating-log-listener",
"//src/lib/diagnostics/data/rust",
"//src/lib/diagnostics/hierarchy/rust",
"//src/lib/diagnostics/inspect/contrib/rust",
"//src/lib/diagnostics/inspect/derive",
"//src/lib/diagnostics/inspect/format/rust",
"//src/lib/diagnostics/inspect/runtime/rust",
"//src/lib/diagnostics/inspect/rust",
"//src/lib/diagnostics/log/encoding/rust",
"//src/lib/diagnostics/log/message/rust",
"//src/lib/diagnostics/selectors",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fidl_table_validation",
"//src/lib/fuchsia",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/fuchsia-runtime",
"//src/lib/storage/fuchsia-watch",
"//src/lib/storage/vfs/rust:vfs",
"//src/lib/syslog/rust:syslog",
"//src/lib/syslog/rust:syslog-listener",
"//src/lib/zircon/rust:fuchsia-zircon",
"//src/lib/zircon/rust:fuchsia-zircon-status",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:async-trait",
"//third_party/rust_crates:byteorder",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:itertools",
"//third_party/rust_crates:lazy_static",
"//third_party/rust_crates:libc",
"//third_party/rust_crates:parking_lot",
"//third_party/rust_crates:paste",
"//third_party/rust_crates:pin-project",
"//third_party/rust_crates:pin-utils",
"//third_party/rust_crates:pretty_assertions",
"//third_party/rust_crates:proptest",
"//third_party/rust_crates:regex",
"//third_party/rust_crates:serde",
"//third_party/rust_crates:serde_json",
"//third_party/rust_crates:tempfile",
"//third_party/rust_crates:thiserror",
"//third_party/rust_crates:tracing",
]
test_deps = [ "//third_party/rust_crates:assert_matches" ]
sources = [
"src/accessor.rs",
"src/archivist.rs",
"src/component_lifecycle.rs",
"src/configs.rs",
"src/constants.rs",
"src/container.rs",
"src/diagnostics.rs",
"src/error.rs",
"src/events/error.rs",
"src/events/mod.rs",
"src/events/router.rs",
"src/events/sources/event_source.rs",
"src/events/sources/legacy.rs",
"src/events/sources/log_connector.rs",
"src/events/sources/mod.rs",
"src/events/sources/unattributed_log_sink.rs",
"src/events/types.rs",
"src/formatter.rs",
"src/identity.rs",
"src/inspect/collector.rs",
"src/inspect/container.rs",
"src/inspect/mod.rs",
"src/lib.rs",
"src/lifecycle/container.rs",
"src/lifecycle/mod.rs",
"src/logs/budget.rs",
"src/logs/buffer.rs",
"src/logs/buffer/arc_list.rs",
"src/logs/container.rs",
"src/logs/debuglog.rs",
"src/logs/error.rs",
"src/logs/listener.rs",
"src/logs/listener/filter.rs",
"src/logs/mod.rs",
"src/logs/multiplex.rs",
"src/logs/redact.rs",
"src/logs/redact/serialize.rs",
"src/logs/socket.rs",
"src/logs/stats.rs",
"src/logs/stored_message.rs",
"src/logs/testing.rs",
"src/moniker_rewriter.rs",
"src/pipeline.rs",
"src/repository.rs",
"src/testing.rs",
"src/utils.rs",
]
}
archivist_optimized_binary("bin") {
name = "archivist"
with_unit_tests = true
edition = "2018"
deps = [
":archivist-config",
":lib",
"//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
"//sdk/fidl/fuchsia.logger:fuchsia.logger-rustc",
"//sdk/fidl/fuchsia.sys.internal:fuchsia.sys.internal-rustc",
"//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
"//src/lib/diagnostics/inspect/rust",
"//src/lib/diagnostics/selectors",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/fuchsia-runtime",
"//src/lib/syslog/rust:syslog",
"//src/lib/zircon/rust:fuchsia-zircon",
"//src/sys/lib/stdout-to-debuglog/rust",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:argh",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:log",
"//third_party/rust_crates:thiserror",
"//third_party/rust_crates:tracing",
]
sources = [ "src/main.rs" ]
}
fuchsia_component_manifest("root-manifest") {
manifest = "meta/archivist.cml"
component_name = "archivist"
restricted_features = [ "structured_config" ]
}
fuchsia_component_manifest("archivist-for-embedding-v2-manifest") {
manifest = "meta/archivist-for-embedding.cml"
component_name = "archivist-for-embedding"
restricted_features = [ "structured_config" ]
}
# fxbug.dev/83213 Retain this component while out of tree tests depend on it
fuchsia_component("archivist-with-klog") {
manifest = "meta/archivist-with-klog.cmx"
deps = [ ":bin" ]
}
fuchsia_component("archivist-for-embedding-v1") {
component_name = "archivist-for-embedding"
manifest = "meta/archivist-for-embedding.cmx"
deps = [ ":bin" ]
}
fuchsia_component("archivist-for-embedding-v2-component") {
cm_label = ":archivist-for-embedding-v2-manifest"
deps = [ ":bin" ]
}
fuchsia_structured_config_values("default-service-config") {
cm_label = ":root-manifest"
values = default_config
}
fuchsia_structured_config_values("archivist-embedded-config") {
cm_label = ":archivist-for-embedding-v2-manifest"
values = embedded_config
}
fuchsia_structured_config_rust_lib("archivist-config") {
cm_label = ":root-manifest"
}
fuchsia_structured_config_values("no-detect-service-config") {
cm_label = ":root-manifest"
values = no_detect_config
}
fuchsia_structured_config_values("no-service-config") {
cm_label = ":root-manifest"
values = no_service_config
}
group("bootfs") {
deps = [
":bin",
":root-manifest",
]
}
group("archivist-for-embedding-v2") {
deps = [
":archivist-embedded-config",
":archivist-for-embedding-v2-component",
]
}
fuchsia_package("archivist-for-embedding") {
deps = [
":archivist-for-embedding-v1",
":archivist-for-embedding-v2",
":archivist-with-klog",
]
}
rustc_fuzzer("convert_debuglog_to_log_message_fuzzer") {
deps = [
":lib",
"//src/lib/diagnostics/data/rust",
"//src/lib/fuzzing/rust:fuzz",
"//src/lib/syslog/rust:syslog",
"//src/lib/zircon/rust:fuchsia-zircon",
"//zircon/system/ulib/syslog",
]
non_rust_deps = []
source_root = "src/fuzzer.rs"
sources = [ "src/fuzzer.rs" ]
}
fuzzers_package("archivist-fuzzers") {
rust_fuzzers = [ ":convert_debuglog_to_log_message_fuzzer" ]
}
fuchsia_unittest_component("archivist-unittests") {
manifest = "meta/archivist-unittests.cml"
deps = [ ":lib_test" ]
}
fuchsia_test_package("archivist-tests") {
test_components = [ ":archivist-unittests" ]
}
group("archivist") {
testonly = true
deps = [
":archivist-for-embedding",
":bootfs",
":tests",
]
}
group("tests") {
testonly = true
public_deps = [
":archivist-fuzzers",
":archivist-tests",
"tests",
]
}
group("benchmarks") {
testonly = true
public_deps = [ "bench" ]
}