# 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("//src/sys/pkg/sysmgr_config.gni")

group("pkg") {
  testonly = true
  deps = [
    "bin",
    "lib",
  ]
}

group("tests") {
  testonly = true
  public_deps = [
    "bin:tests",
    "lib:tests",
    "scripts:merge_sysmgr_config_test($host_toolchain)",
    "testing:tests",
    "tests",
    "//src/sys/lib/fidl-fuchsia-pkg-ext:tests",
  ]
}

group("e2e_tests") {
  testonly = true
  public_deps = [ "tests:e2e_tests" ]
}

# Targets to include in the base package set for the core product.
group("core") {
  public_deps = [
    ":core_config",
    "bin/pkg-cache",
    "bin/pkg-resolver",
    "bin/pkgfs",
    "bin/system-update-committer",
    "bin/system-updater",
  ]
}

# Targets to include in the base package set for the core recovery image.
group("recovery-core") {
  public_deps = [
    "bin/pkg-cache",
    "bin/pkg-resolver",
    "bin/system-update-committer",
  ]
}

# Targets to include in the base package set for the recovery image.
group("recovery") {
  public_deps = [
    ":recovery-core",
    "bin/omaha-client",
    "bin/system-updater",
  ]
}

# Shell control commands
group("tools") {
  public_deps = [
    "bin/amber:amberctl",
    "bin/pkgctl:pkgctl-bin",
    "bin/update:update-bin",
  ]
  deps = [ "//build/validate:non_production_tag" ]
}

group("system-update-checker") {
  public_deps = [
    "bin/system-update-checker",
    "bin/system-update-checker:config",
  ]
  # TODO(fxbug.dev/51214): Remove the comment after we update to omaha-client
  # for migration build.
  # deps = [ "//build/validate:non_production_tag" ]
}

merge_sysmgr_config("core_config") {
  output = "pkg.config"
  deps = [
    "bin/pkg-resolver:config",
    "bin/system-updater:config",
  ]
}

group("omaha-client") {
  public_deps = [
    "bin/omaha-client",
    "bin/omaha-client:omaha-client-config",
    "bin/omaha-client:omaha-client-sysmgr-config",
  ]
}

group("pkgfs-disable-executability-restrictions") {
  public_deps = [ "bin/pkgfs:disable-executability-restrictions" ]
  deps = [ "//build/validate:non_production_tag" ]
}
