# 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" ]

zircon_enable_netsvc_debugging_features = false

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

base_package_labels += [
  "//build/info:build-info",
  "//garnet/bin/http",
  "//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/stash:stash",
  "//garnet/bin/stash_ctl:stash_ctl",
  "//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/lowpan/service",
  "//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:service",
  "//src/developer/exception_broker",
  "//src/developer/feedback/boot_log_checker",
  "//src/developer/feedback/boot_log_checker:config",
  "//src/developer/feedback/bugreport",
  "//src/developer/feedback/crashpad_agent",
  "//src/developer/feedback/feedback_agent",
  "//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_package_resolver_allowlist_userdebug",
  "//src/security/root_ssl_certificates",
  "//src/sys/appmgr",
  "//src/sys/appmgr:appmgr_component_event_provider_allowlist",
  "//src/sys/appmgr:appmgr_deprecated_shell_allowlist",
  "//src/sys/appmgr:appmgr_global_data_allowlist",
  "//src/sys/appmgr:appmgr_scheme_config",
  "//src/sys/device_settings:device_settings_manager",
  "//src/sys/pkg:core",
  "//src/sys/timekeeper",
  "//third_party/openssh-portable/fuchsia/developer-keys:ssh_config",
]

cache_package_labels += []

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