blob: 67aaa30ef9240a7ece660420182fd96c5365ec26 [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/rust/rustc_binary.gni")
import("//build/rust/rustc_fuzzer.gni")
import("//build/rust/rustc_library.gni")
import("//tools/fidl/measure-tape/measure_tape.gni")
measure_tape("logmessage_measure_tape") {
target_binding = "rust"
target_type = "fuchsia.logger/LogMessage"
fidls = [ "//sdk/fidl/fuchsia.logger" ]
}
rustc_library("lib") {
name = "archivist_lib"
with_unit_tests = true
edition = "2018"
deps = [
":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/selectors",
"//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/rust",
"//src/lib/diagnostics/log/encoding/rust",
"//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:chrono",
"//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:matches" ]
sources = [
"src/accessor.rs",
"src/archive.rs",
"src/archivist.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/source_registry.rs",
"src/events/sources/core.rs",
"src/events/sources/legacy.rs",
"src/events/sources/log_connector.rs",
"src/events/sources/mod.rs",
"src/events/sources/static_event_stream.rs",
"src/events/sources/unattributed_log_sink.rs",
"src/events/types.rs",
"src/formatter.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/asbestos.rs",
"src/logs/listener/filter.rs",
"src/logs/message.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/testing.rs",
"src/pipeline.rs",
"src/repository.rs",
]
}
rustc_binary("bin") {
name = "archivist"
with_unit_tests = true
edition = "2018"
force_opt = "z"
# Archivist must always be small (even in debug builds) since it is part of bootfs.
#
# The add/remove/add ensures we get the configuration without producing errors for builds which
# enable ThinLTO themselves.
configs += [ "//build/config/lto:thinlto" ]
configs -= [ "//build/config/lto:thinlto" ]
configs += [ "//build/config/lto:thinlto" ]
# we can't dynamically link std when we're in the zbi :(
configs -= [ "//build/config/fuchsia:dynamic_rust_standard_library" ]
deps = [
":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/diagnostics/lib/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("archivist-with-klog") {
manifest = "meta/archivist-with-klog.cmx"
deps = [
":bin",
":embedding-config-file",
]
}
fuchsia_component("archivist-for-embedding-v1") {
component_name = "archivist-for-embedding"
manifest = "meta/archivist-for-embedding.cmx"
deps = [
":bin",
":embedding-config-file",
]
}
fuchsia_component("archivist-for-embedding-v2") {
component_name = "archivist-for-embedding"
manifest = "meta/archivist-for-embedding.cml"
deps = [
":bin",
":embedding-config-file",
]
}
component_manifest_resources("root-manifest") {
sources = [ "meta/archivist.cml" ]
}
resource("root-config") {
sources = [ "configs/root-config.json" ]
outputs = "config/archivist/archivist_config.json"
}
resource("default-service-config") {
sources = [ "configs/default-service-config.json" ]
outputs = "config/archivist/archivist_service_config.json"
}
resource("no-detect-service-config") {
sources = [ "configs/no-detect-service-config.json" ]
outputs = "config/archivist/archivist_service_config.json"
}
group("bootfs") {
deps = [
":bin",
":root-config",
":root-manifest",
]
}
fuchsia_package("archivist-for-embedding") {
deps = [
":archivist-for-embedding-v1",
":archivist-for-embedding-v2",
":archivist-with-klog",
]
}
resource("embedding-config-file") {
sources = [ "configs/embedding-config.json" ]
outputs = "data/{{source_file_part}}"
}
group("with_default_config") {
}
rustc_fuzzer("convert_debuglog_to_log_message_fuzzer") {
deps = [
":lib",
"//src/lib/fuzzing/rust:fuzz",
"//src/lib/syslog/rust:syslog",
"//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_tests.cmx"
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",
"bench",
"tests",
]
}