# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can
# 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",
  ]
}

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/amber",
    "bin/amber:pkgfs",
    "bin/pkg-cache",
    "bin/pkg-resolver",
    "bin/system-updater",
  ]
}

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

group("system-update-checker") {
  public_deps = [
    "bin/system-update-checker",
    "bin/system-update-checker:config",
  ]
}

merge_sysmgr_config("core_config") {
  output = "pkg.config"
  deps = [
    "bin/pkg-cache:config",
    "bin/pkg-resolver: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" ]
}
