# 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.

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

group("tests") {
  testonly = true
  public_deps = [
    "bin:tests",
    "lib:tests",
    "scripts:tests",
    "testing:tests",
    "tests",
    "//src/sys/lib/fidl-fuchsia-pkg-ext:tests",
    "//src/sys/lib/fidl-fuchsia-pkg-rewrite-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 = [
    "bin/pkg-cache",
    "bin/pkg-resolver",
    "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",

    # system-update-committer is a dependency of pkg-cache, but we don't want to do any verification
    # in recovery mode, so we completely disable it.
    "bin/system-update-committer",
    "bin/system-update-committer:disable",
  ]
}

# 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/pkgctl:pkgctl-bin",
    "bin/update:update-bin",
  ]
  deps = [ "//build/validate:non_production_tag" ]
}

group("system-update-configurator") {
  public_deps = [
    "bin/system-update-configurator",
    "bin/system-update-configurator:core-shard",
  ]
}

group("system-update-configurator-route-to-omaha-client") {
  public_deps = [ "bin/system-update-configurator:route-to-omaha-core-shard" ]
}

group("system-update-checker") {
  public_deps = [ "bin/system-update-checker" ]
  deps = [ "//build/validate:non_production_tag" ]
}

group("omaha-client") {
  public_deps = [
    "bin/omaha-client",
    "bin/omaha-client:omaha-client-config",
    "//src/diagnostics/config/triage:omaha-client-detect",
  ]
}

group("omaha-client-no-restart") {
  public_deps = [
    "bin/omaha-client:omaha-client-config",
    "bin/omaha-client:omaha-client-no-restart",
    "//src/diagnostics/config/triage:omaha-client-detect",
  ]
}

group("omaha-client-delayed-start") {
  public_deps = [
    "bin/omaha-client:omaha-client-config",
    "bin/omaha-client:omaha-client-delayed-start",
    "//src/diagnostics/config/triage:omaha-client-detect",
  ]
}

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