# 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/config/fuchsia/zbi.gni")
import("//build/images/assemble_system.gni")
import("//garnet/build/pkgfs.gni")

recovery_packages = [
  "//garnet:build-info",
  "//garnet/bin/appmgr:appmgr_scheme_config",
  "//garnet/bin/appmgr",
  "//garnet/bin/netcfg:config",
  "//garnet/bin/netcfg",
  "//garnet/bin/network_time",
  "//garnet/bin/omaha_client",
  "//garnet/bin/pkg_cache",
  "//garnet/bin/pkg_resolver",
  "//garnet/bin/sysmgr",
  "//garnet/go/src/amber",
  "//garnet/lib/root_ssl_certificates",
  "//src/connectivity/network/netstack",
  "//src/connectivity/wlan/wlancfg",
  "//src/connectivity/wlan/wlanstack:wlanstack2",
  "//src/recovery/system",
  pkgfs_package_label,
]

shell_commands("shell-commands") {
  testonly = true
  visibility = [ ":*" ]
  deps = recovery_packages
}

config_package("config-data") {
  testonly = true
  visibility = [ ":*" ]
  deps = recovery_packages
}

recovery_packages += [
  ":shell-commands",
  ":config-data",
]

assemble_system("recovery") {
  base_packages = recovery_packages
  netboot = true
  devmgr_config = [ "virtcon.disable=true" ]

  metadata = {
    test_runtime_deps = [ "$root_out_dir/${target_name}.zbi" ]
  }
}
