# 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 -= [
  "devmgr.log-to-debuglog=true",
  "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",
  "//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/cobalt/bin/system-metrics:config",
  "//src/connectivity/bluetooth:core",
  "//src/connectivity/management/reachability",
  "//src/connectivity/management/reachability:reachability_sysmgr_config",
  "//src/connectivity/management:network_config_default",
  "//src/connectivity/network/mdns/bundles:config",
  "//src/connectivity/network/mdns/bundles:services",
  "//src/connectivity/network:config",
  "//src/connectivity/wlan:packages",
  "//src/connectivity/wlan/config:default",
  "//src/developer/forensics:pkg",
  "//src/developer/forensics/bugreport",
  "//src/developer/forensics/crash_reports:crash-reports",
  "//src/developer/forensics/exceptions",
  "//src/developer/forensics/last_reboot:last-reboot",
  "//src/diagnostics/archivist",
  "//src/diagnostics/archivist:with_default_config",
  "//src/hwinfo:hwinfo",
  "//src/hwinfo:default_product_config",
  "//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/appmgr:core_component_id_index",
  "//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",
]

# 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:install-cargo-gnaw" ]

cache_package_labels += [ "//src/developer/ffx:runtime" ]

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