# 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",
    "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-cache:config",
    "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" ]
}
