# 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/components.gni")
import("//build/config.gni")
import("//build/dist/resource.gni")
import("//build/rust/rustc_binary.gni")
import("//build/testing/environments.gni")
import("//src/recovery/system/system_recovery_args.gni")

group("system") {
  testonly = true
  deps = [
    # Directory aggregates should not modify the product behavior: ":config",
    ":system_recovery",
    ":tests",
  ]
}

group("fdr") {
  testonly = true
  deps = [
    ":system_recovery_fdr",
    ":tests",
  ]
}

group("installer") {
  testonly = true
  deps = [
    ":system_recovery_installer",
    ":tests",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":system_installer_tests",
    ":system_recovery",
    ":system_recovery_installer",

    # TODO(fxbug.dev/96719): This test is flaky because it is not hermetic.
    # Re-enable after fixing the hermeticity issue.
    # ":system_recovery_tests",

    "//src/lib/storage/ramdevice_client:ramdisk-isolated-devmgr",
    "//src/sys/pkg/lib/isolated-swd:isolated-swd-components",
  ]
}

resource("recovery_logo") {
  sources = [ recovery_logo_path ]
  outputs = [ "data/logo.riv" ]
}

resource("roboto_regular") {
  sources = [ "//prebuilt/third_party/fonts/roboto/Roboto-Regular.ttf" ]
  outputs = [ "data/fonts/Roboto-Regular.ttf" ]
}

rustc_binary("bin") {
  name = "system_recovery"
  edition = "2021"
  with_unit_tests = true
  deps = [
    "//sdk/fidl/fuchsia.buildinfo:fuchsia.buildinfo-rustc",
    "//sdk/fidl/fuchsia.hardware.block.volume:fuchsia.hardware.block.volume-rustc",
    "//sdk/fidl/fuchsia.input.report:fuchsia.input.report-rustc",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.paver:fuchsia.paver-rustc",
    "//sdk/fidl/fuchsia.recovery:fuchsia.recovery-rustc",
    "//sdk/fidl/fuchsia.recovery.policy:fuchsia.recovery.policy-rustc",
    "//sdk/fidl/fuchsia.wlan.policy:fuchsia.wlan.policy-rustc",
    "//src/graphics/lib/compute/rive-rs",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-hyper",
    "//src/lib/mapped-vmo",
    "//src/lib/storage/fs_management/rust:fs_management",
    "//src/lib/ui/carnelian",
    "//src/lib/ui/fuchsia-framebuffer",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/recovery/lib/recovery-util",
    "//src/sys/pkg/lib/isolated-ota",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:argh",
    "//third_party/rust_crates:async-channel",
    "//third_party/rust_crates:bytes",
    "//third_party/rust_crates:euclid",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:hyper",
    "//third_party/rust_crates:mockall",
    "//third_party/rust_crates:png",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:tempfile",
    "//third_party/rust_crates:thiserror",
  ]
  test_deps = [
    "//src/lib/storage/ramdevice_client",
    "//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-paver",
  ]
  features = [
    "http_setup_server",
    "debug_console",
  ]
  sources = [
    "src/button.rs",
    "src/console.rs",
    "src/fdr.rs",
    "src/font.rs",
    "src/keyboard.rs",
    "src/keys.rs",
    "src/main.rs",
    "src/ota.rs",
    "src/proxy_view_assistant.rs",
    "src/setup.rs",
    "src/storage.rs",
  ]
}

config_data("config") {
  for_pkg = "sysmgr"
  sources = [ "config/recovery.config" ]
  outputs = [ "recovery.config" ]
}

fuchsia_package_with_single_component("system_recovery") {
  deps = [
    ":bin",
    ":recovery_logo",
    ":roboto_regular",
    "//src/storage/bin/blobfs",
    "//src/storage/bin/minfs",
  ]
  manifest = "meta/system_recovery.cmx"
}

rustc_binary("bin_fdr") {
  name = "system_recovery_fdr"
  edition = "2018"
  with_unit_tests = true
  deps = [
    "//sdk/fidl/fuchsia.hardware.block.volume:fuchsia.hardware.block.volume-rustc",
    "//sdk/fidl/fuchsia.input.report:fuchsia.input.report-rustc",
    "//sdk/fidl/fuchsia.paver:fuchsia.paver-rustc",
    "//sdk/fidl/fuchsia.recovery:fuchsia.recovery-rustc",
    "//sdk/fidl/fuchsia.recovery.policy:fuchsia.recovery.policy-rustc",
    "//src/graphics/lib/compute/rive-rs",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/mapped-vmo",
    "//src/lib/storage/fs_management/rust:fs_management",
    "//src/lib/ui/carnelian",
    "//src/lib/ui/fuchsia-framebuffer",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:argh",
    "//third_party/rust_crates:euclid",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:mockall",
    "//third_party/rust_crates:png",
    "//third_party/rust_crates:thiserror",
  ]
  sources = [
    "src/fdr.rs",
    "src/font.rs",
    "src/main.rs",
    "src/proxy_view_assistant.rs",
  ]
}

config_data("config_fdr") {
  for_pkg = "sysmgr"
  sources = [ "config/recovery_fdr.config" ]
  outputs = [ "recovery_fdr.config" ]
}

fuchsia_package_with_single_component("system_recovery_fdr") {
  deps = [
    ":bin_fdr",
    ":recovery_logo",
    ":roboto_regular",
    "//src/storage/bin/blobfs",
    "//src/storage/bin/minfs",
  ]
  manifest = "meta/system_recovery_fdr.cmx"
}

fuchsia_component("system_recovery_bin_test") {
  testonly = true
  deps = [ ":bin_test" ]
  manifest = "meta/system_recovery_bin_test.cmx"
}

fuchsia_test_package("system_recovery_tests") {
  test_components = [ ":system_recovery_bin_test" ]
  deps = [
    ":recovery_logo",
    ":roboto_regular",
    "//src/connectivity/network/dns:component-legacy",
    "//src/connectivity/network/netstack:component-legacy",
    "//src/storage/bin/blobfs",
    "//src/storage/bin/minfs",
    "//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 = [
    "//sdk/fidl/fuchsia.boot:fuchsia.boot-rustc",
    "//sdk/fidl/fuchsia.device:fuchsia.device-rustc",
    "//sdk/fidl/fuchsia.fshost:fuchsia.fshost-rustc",
    "//sdk/fidl/fuchsia.hardware.block:fuchsia.hardware.block-rustc",
    "//sdk/fidl/fuchsia.hardware.block.partition:fuchsia.hardware.block.partition-rustc",
    "//sdk/fidl/fuchsia.hardware.block.volume:fuchsia.hardware.block.volume-rustc",
    "//sdk/fidl/fuchsia.hardware.display:fuchsia.hardware.display-rustc",
    "//sdk/fidl/fuchsia.input.report:fuchsia.input.report-rustc",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.mem:fuchsia.mem-rustc",
    "//sdk/fidl/fuchsia.paver:fuchsia.paver-rustc",
    "//sdk/fidl/fuchsia.recovery:fuchsia.recovery-rustc",
    "//sdk/fidl/fuchsia.recovery.policy:fuchsia.recovery.policy-rustc",
    "//sdk/fidl/fuchsia.sysinfo:fuchsia.sysinfo-rustc",
    "//src/graphics/lib/compute/rive-rs",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-hyper",
    "//src/lib/mapped-vmo",
    "//src/lib/storage/fs_management/rust:fs_management",
    "//src/lib/storage/fuchsia-watch",
    "//src/lib/ui/carnelian",
    "//src/lib/ui/fuchsia-framebuffer",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/lib/zircon/rust:fuchsia-zircon-status",
    "//src/recovery/lib/recovery-util",
    "//src/sys/lib/payload_streamer",
    "//src/sys/pkg/lib/isolated-ota",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:argh",
    "//third_party/rust_crates:async-channel",
    "//third_party/rust_crates:bytes",
    "//third_party/rust_crates:euclid",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:hyper",
    "//third_party/rust_crates:mockall",
    "//third_party/rust_crates:png",
    "//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",
  ]
  test_deps = [
    "//src/lib/storage/ramdevice_client",
    "//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-paver",
  ]
  sources = [
    "installer/installer.rs",
    "installer/main.rs",
    "installer/menu.rs",
    "installer/partition.rs",
  ]
}

config_data("config_installer") {
  for_pkg = "sysmgr"
  sources = [ "config/recovery-installer.config" ]
  outputs = [ "recovery_installer.config" ]
}

fuchsia_package_with_single_component("system_recovery_installer") {
  deps = [
    ":bin_installer",
    ":recovery_logo",
    ":roboto_regular",
    "//src/storage/bin/blobfs",
    "//src/storage/bin/minfs",
  ]
  manifest = "meta/system_recovery_installer.cmx"
}

fuchsia_component("system_installer_bin_test") {
  testonly = true
  deps = [ ":bin_installer_test" ]
  manifest = "meta/system_installer_bin_test.cmx"
}

fuchsia_test_package("system_installer_tests") {
  test_components = [ ":system_installer_bin_test" ]
  deps = [
    ":recovery_logo",
    ":roboto_regular",
    "//src/connectivity/network/dns:component-legacy",
    "//src/connectivity/network/netstack:component-legacy",
    "//src/storage/bin/blobfs",
    "//src/storage/bin/minfs",
    "//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"
    }
  }
}
