# Copyright 2018 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("//products/bringup.gni")

# bringup.gni turns off filtering for Astro, but here we reeeeaaally want to
# turn it off to keep the image size reasonable.
on_second_thought_keep_on_astro = false

bootfs_only = false

kernel_cmdline_args -= [ "kernel.oom.behavior=jobkill" ]
kernel_cmdline_args += [ "kernel.oom.behavior=reboot" ]

meta_package_labels += [
  "//build/images:config-data",
  "//build/images:shell-commands",
  "//src/sys/component_index:component_index",
]

base_package_labels += [
  "//build/info:build-info",
  "//garnet/bin/http",
  "//src/connectivity/network/http_client",
  "//garnet/bin/log_listener:log_listener",
  "//garnet/bin/log_listener:log_listener_shell",
  "//garnet/bin/network_time_service",
  "//garnet/bin/scpi",
  "//garnet/bin/setui:setui_service",
  "//garnet/bin/sshd-host",
  "//garnet/bin/sshd-host:config",
  "//garnet/bin/sysmgr",
  "//garnet/bin/sysmgr:network_config",
  "//garnet/bin/sysmgr:services_config",
  "//garnet/bin/timezone",
  "//src/cobalt/bin/app:cobalt",
  "//src/cobalt/bin/app:cobalt_registry",
  "//src/cobalt/bin/app:config",
  "//src/cobalt/bin/system-metrics:cobalt_system_metrics",
  "//src/connectivity/bluetooth:core",
  "//src/connectivity/management/reachability",
  "//src/connectivity/management/reachability:reachability_sysmgr_config",
  "//src/connectivity/network/mdns/bundles:config",
  "//src/connectivity/network/mdns/bundles:services",
  "//src/connectivity/network/net-cli",
  "//src/connectivity/network/netcfg",
  "//src/connectivity/network/netcfg:config",
  "//src/connectivity/network/netcfg:filter_config",
  "//src/connectivity/network:config",
  "//src/connectivity/wlan:packages",
  "//src/connectivity/wlan/config:default",
  "//src/developer/exception_broker",
  "//src/developer/feedback/boot_log_checker",
  "//src/developer/feedback/bugreport",
  "//src/developer/feedback/crashpad_agent",
  "//src/developer/feedback/feedback_agent",
  "//src/developer/remote-control:pkg",
  "//src/diagnostics/archivist",
  "//src/diagnostics/archivist:with_default_config",
  "//src/hwinfo:hwinfo",
  "//src/identity/bin:core",
  "//src/media/audio/bundles:audio_config",
  "//src/recovery/factory_reset",
  "//src/security/policy:appmgr_policy_eng",
  "//src/security/root_ssl_certificates",
  "//src/sys/appmgr",
  "//src/sys/appmgr:appmgr_scheme_config",
  "//src/sys/core",
  "//src/sys/device_settings:device_settings_manager",
  "//src/sys/pkg:core",
  "//src/sys/pkg:pkgfs-disable-executability-restrictions",
  "//src/sys/pkg:system-update-checker",
  "//src/sys/pkg/bin/pkg-resolver:enable_dynamic_configuration",
  "//src/sys/stash:pkg",
  "//src/sys/timekeeper",
  "//third_party/openssh-portable/fuchsia/developer-keys:ssh_config",

  # TODO remove when third party is built by GN
  "//build/rust:cargo_toml_gen",
]

# Tools to control the pkg subsystem are in the base package set by default
# so the software delivery system can be debugged and reconfigured without
# access to the full universe package set.
# Product configurations that lack an accessible shell environment should
# remove these tools from the base package set.
base_package_labels += [ "//src/sys/pkg:tools" ]

# cargo-gnaw is currently part of all build graphs, but it should only
# built by fx tooling
base_package_labels += [ "//tools/cargo-gnaw" ]

cache_package_labels += []

universe_package_labels += [ "//bundles:tools" ]
