blob: d9d2645c7773b3c5769a6fd672c77a412e929f67 [file] [log] [blame]
# Copyright 2017 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/board.gni")
import("//build/components.gni")
import("//build/dist/resource.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_library.gni")
import("//build/testing/environments.gni")
import("//src/recovery/system/system_recovery_args.gni")
import("//src/sys/core/build/core_shard.gni")
# Generate rust library for the config
fuchsia_component_manifest("ui_config_manifest") {
# Note: This component name is unused since this manifest target is only added to
# generate the rust config library
component_name = "config_system_recovery"
# Config structure is currently defined in this shard
manifest = "meta/shards/ui.shard.cml"
}
fuchsia_structured_config_rust_lib("recovery_ui_config") {
cm_label = ":ui_config_manifest"
}
group("system") {
testonly = true
deps = [
":system_recovery",
":system_recovery_tests",
]
}
group("fdr") {
testonly = true
deps = [
":system_recovery_fdr",
# TODO (fxbug.dev/103089): Handle FDR via integration tests.
# ":system_recovery_fdr_test",
]
}
group("installer") {
testonly = true
deps = [
":system_recovery_installer",
# TODO (fxbug.dev/102239): This directive does not pick up any tests.
#":system_recovery_installer_tests",
]
}
group("ota") {
testonly = true
deps = [
":component_ota",
":ota_lib_unittests",
":ota_unittests",
]
}
group("tests") {
testonly = true
deps = [
":installer",
":ota",
":system",
# TODO (fxbug.dev/103089): Handle FDR via integration tests.
# ":fdr",
]
}
core_shard("system_recovery_core_shard") {
shard_file = "meta/core_shards/system_recovery.core_shard.cml"
}
core_shard("system_recovery_fdr_core_shard") {
shard_file = "meta/core_shards/system_recovery_fdr.core_shard.cml"
}
core_shard("system_recovery_installer_core_shard") {
shard_file = "meta/core_shards/system_recovery_installer.core_shard.cml"
}
resource("recovery_logo") {
sources = [ recovery_logo_path ]
outputs = [ "data/logo.riv" ]
}
resource("icons") {
sources = [ icons_path ]
outputs = [ "data/ota_icons.riv" ]
}
resource("instructions") {
sources = [ instructions_path ]
outputs = [ "data/instructions.txt" ]
}
resource("qr_codes") {
sources = [ qr_codes_path ]
outputs = [ "data/qr_codes.riv" ]
}
resource("roboto_regular") {
sources = [ "//prebuilt/third_party/fonts/roboto/Roboto-Regular.ttf" ]
outputs = [ "data/fonts/Roboto-Regular.ttf" ]
}
rustc_library("fdr_lib") {
edition = "2021"
with_unit_tests = true
deps = [
"//sdk/fidl/fuchsia.input.report:fuchsia.input.report_rust",
"//sdk/fidl/fuchsia.recovery:fuchsia.recovery_rust",
"//src/lib/fuchsia-component",
"//src/lib/ui/carnelian",
"//third_party/rust_crates:anyhow",
]
source_root = "src/fdr.rs"
sources = [ "src/fdr.rs" ]
}
rustc_library("ota_lib") {
edition = "2021"
with_unit_tests = true
deps = [
":fdr_lib",
"//sdk/fidl/fuchsia.boot:fuchsia.boot_rust",
"//sdk/fidl/fuchsia.buildinfo:fuchsia.buildinfo_rust",
"//sdk/fidl/fuchsia.component:fuchsia.component_rust",
"//sdk/fidl/fuchsia.component.decl:fuchsia.component.decl_rust",
"//sdk/fidl/fuchsia.fshost:fuchsia.fshost_rust",
"//sdk/fidl/fuchsia.io:fuchsia.io_rust",
"//sdk/fidl/fuchsia.logger:fuchsia.logger_rust",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/fuchsia-hyper",
"//src/lib/storage/vfs/rust:vfs",
"//src/lib/syslog/rust:syslog-listener",
"//src/lib/zircon/rust:fuchsia-zircon",
"//src/sys/pkg/lib/isolated-ota",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:async-trait",
"//third_party/rust_crates:bytes",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:hyper",
"//third_party/rust_crates:serde",
"//third_party/rust_crates:serde_json",
"//third_party/rust_crates:tempfile",
]
test_deps = [
"//src/lib/fuchsia",
"//src/lib/fuchsia-runtime",
"//src/sys/lib/fidl-fuchsia-pkg-ext",
"//src/sys/pkg/lib/fuchsia-merkle",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//src/sys/pkg/testing/blobfs-ramdisk",
"//src/sys/pkg/testing/mock-boot-arguments:lib",
"//third_party/rust_crates:assert_matches",
"//third_party/rust_crates:maplit",
"//third_party/rust_crates:pretty_assertions",
]
source_root = "src/ota_lib.rs"
sources = [
"src/config.rs",
"src/ota.rs",
"src/ota_lib.rs",
"src/setup.rs",
"src/storage.rs",
]
}
fuchsia_unittest_package("ota_lib_unittests") {
deps = [ ":ota_lib_test" ]
}
rustc_binary("bin") {
name = "system_recovery"
edition = "2021"
with_unit_tests = true
deps = [
":fdr_lib",
":ota_lib",
":recovery_ui_config",
"//sdk/fidl/fuchsia.input.report:fuchsia.input.report_rust",
"//sdk/fidl/fuchsia.recovery.policy:fuchsia.recovery.policy_rust",
"//sdk/fidl/fuchsia.recovery.ui:fuchsia.recovery.ui_rust",
"//sdk/fidl/fuchsia.wlan.policy:fuchsia.wlan.policy_rust",
"//src/graphics/lib/compute/rive-rs",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/fuchsia-runtime",
"//src/lib/ui/carnelian",
"//src/lib/zircon/rust:fuchsia-zircon",
"//src/recovery/lib/recovery-ui",
"//src/recovery/lib/recovery-util",
"//src/sys/lib/stdout-to-debuglog/rust",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:async-channel",
"//third_party/rust_crates:euclid",
"//third_party/rust_crates:futures",
]
test_deps = [
"//src/lib/fuchsia",
"//src/storage/testing:storage_driver_test_realm",
"//third_party/rust_crates:async-trait",
]
features = [
"debug_console",
"http_setup_server",
]
sources = [ "src/main.rs" ]
if (enable_recovery_ui_v2) {
deps += [
":icons",
":qr_codes",
]
features += [ "ota_ui" ]
sources += [ "src/ui_v2.rs" ]
}
}
rustc_binary("bin_ota") {
name = "system_recovery_ota"
edition = "2021"
with_unit_tests = true
source_root = "src/ota_main.rs"
deps = [
":ota_lib",
"//sdk/fidl/fuchsia.io:fuchsia.io_rust",
"//sdk/fidl/fuchsia.recovery.ui:fuchsia.recovery.ui_rust",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/fuchsia-runtime",
"//src/lib/storage/vfs/rust:vfs",
"//src/lib/zircon/rust:fuchsia-zircon",
"//src/sys/lib/stdout-to-debuglog/rust",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:futures",
]
features = [
"http_setup_server",
"debug_console",
]
test_deps = [ "//third_party/rust_crates:assert_matches" ]
sources = [ "src/ota_main.rs" ]
}
# Start system_recovery_ota component
fuchsia_component_manifest("manifest_ota") {
component_name = "system_recovery_ota"
manifest = "meta/system_recovery_ota.cml"
}
fuchsia_component("component_ota") {
cm_label = ":manifest_ota"
deps = [
":bin_ota",
"//src/storage/bin/blobfs:blobfs-component",
"//src/sys/pkg/lib/isolated-swd:pkg-component",
]
}
fuchsia_unittest_package("ota_unittests") {
deps = [ ":bin_ota_test" ]
}
# End system_recovery_ota component
# Start system_recovery component
fuchsia_component_manifest("manifest") {
component_name = "system_recovery"
manifest = "meta/system_recovery.cml"
}
fuchsia_component("component") {
cm_label = ":manifest"
deps = [
":bin",
":instructions",
":recovery_logo",
":roboto_regular",
]
}
fuchsia_structured_config_values("values_from_gn") {
cm_label = ":manifest"
values = {
display_rotation = board_display_rotation
}
}
fuchsia_package("system_recovery") {
deps = [
":component",
":component_ota",
":values_from_gn",
]
}
# End system_recovery component
rustc_binary("bin_fdr") {
name = "system_recovery_fdr"
edition = "2021"
with_unit_tests = true
deps = [
":fdr_lib",
":recovery_ui_config",
"//sdk/fidl/fuchsia.input.report:fuchsia.input.report_rust",
"//sdk/fidl/fuchsia.recovery.policy:fuchsia.recovery.policy_rust",
"//src/graphics/lib/compute/rive-rs",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/ui/carnelian",
"//src/lib/zircon/rust:fuchsia-zircon",
"//src/recovery/lib/recovery-ui",
"//src/sys/lib/stdout-to-debuglog/rust",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:euclid",
"//third_party/rust_crates:futures",
]
test_deps = [ "//src/lib/fuchsia" ]
sources = [ "src/main.rs" ]
}
# Start system_recovery_fdr component TODO(fxbug.dev/105564)
fuchsia_component_manifest("manifest_fdr") {
component_name = "system_recovery_fdr"
manifest = "meta/system_recovery_fdr.cml"
}
fuchsia_component("component_fdr") {
cm_label = ":manifest_fdr"
deps = [
":bin_fdr",
":instructions",
":recovery_logo",
":roboto_regular",
]
}
fuchsia_structured_config_values("values_from_gn_fdr") {
cm_label = ":manifest_fdr"
values = {
display_rotation = board_display_rotation
}
}
fuchsia_package("system_recovery_fdr") {
deps = [
":component_fdr",
":values_from_gn_fdr",
]
}
# End system_recovery_fdr component
fuchsia_test_component("system_recovery_bin_test") {
deps = [ ":bin_test" ]
manifest = "meta/tests/system_recovery_bin_test.cml"
}
fuchsia_test_package("system_recovery_tests") {
test_components = [ ":system_recovery_bin_test" ]
deps = [
":instructions",
":recovery_logo",
":roboto_regular",
"//src/sys/pkg/bin/pm:pm_bin",
"//src/sys/pkg/lib/fuchsia-pkg-testing/certs",
"//src/sys/pkg/tests/pkg-resolver:empty-repo",
]
test_specs = {
environments = [ nuc_env ]
log_settings = {
max_severity = "ERROR"
}
}
}
rustc_binary("bin_installer") {
name = "system_recovery_installer"
edition = "2021"
source_root = "installer/main.rs"
with_unit_tests = true
deps = [
":recovery_ui_config",
"//sdk/fidl/fuchsia.boot:fuchsia.boot_rust",
"//sdk/fidl/fuchsia.fshost:fuchsia.fshost_rust",
"//sdk/fidl/fuchsia.hardware.block:fuchsia.hardware.block_rust",
"//sdk/fidl/fuchsia.hardware.block.partition:fuchsia.hardware.block.partition_rust",
"//sdk/fidl/fuchsia.hardware.display:fuchsia.hardware.display_rust",
"//sdk/fidl/fuchsia.hardware.power.statecontrol:fuchsia.hardware.power.statecontrol_rust",
"//sdk/fidl/fuchsia.mem:fuchsia.mem_rust",
"//sdk/fidl/fuchsia.paver:fuchsia.paver_rust",
"//sdk/fidl/fuchsia.sysinfo:fuchsia.sysinfo_rust",
"//src/graphics/lib/compute/rive-rs",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/fuchsia-fs",
"//src/lib/storage/block_client/rust:remote-block-device",
"//src/lib/storage/fuchsia-vfs-watcher",
"//src/lib/ui/carnelian",
"//src/lib/zircon/rust:fuchsia-zircon",
"//src/recovery/lib/recovery-util",
"//src/sys/lib/payload_streamer",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:euclid",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:regex",
"//third_party/rust_crates:tracing",
]
test_deps = [
"//sdk/fidl/fuchsia.hardware.block:fuchsia.hardware.block_rust",
"//src/storage/testing:storage_driver_test_realm",
]
sources = [
"installer/installer.rs",
"installer/main.rs",
"installer/menu.rs",
"installer/partition.rs",
]
}
# Start system_recovery_installer component
fuchsia_component_manifest("manifest_installer") {
component_name = "system_recovery_installer"
manifest = "meta/system_recovery_installer.cml"
}
fuchsia_component("component_installer") {
cm_label = ":manifest_installer"
deps = [
":bin_installer",
":instructions",
":recovery_logo",
":roboto_regular",
]
}
fuchsia_structured_config_values("values_from_gn_installer") {
cm_label = ":manifest_installer"
values = {
display_rotation = board_display_rotation
}
}
fuchsia_package("system_recovery_installer") {
deps = [
":component_installer",
":values_from_gn_installer",
]
}
# End system_recovery_installer component
fuchsia_component("system_recovery_installer_bin_test") {
testonly = true
deps = [ ":bin_installer_test" ]
manifest = "meta/tests/system_recovery_installer_bin_test.cml"
}
fuchsia_test_package("system_recovery_installer_tests") {
test_components = [ ":system_recovery_installer_bin_test" ]
deps = [
":instructions",
":recovery_logo",
":roboto_regular",
"//src/sys/pkg/bin/pm:pm_bin",
"//src/sys/pkg/lib/fuchsia-pkg-testing/certs",
"//src/sys/pkg/tests/pkg-resolver:empty-repo",
]
test_specs = {
environments = [ nuc_env ]
log_settings = {
max_severity = "ERROR"
}
}
}