# 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: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/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/core",
  "//src/sys/device_settings:device_settings_manager",
  "//src/sys/pkg:core",
  "//src/sys/pkg:system-update-checker",
  "//src/sys/timekeeper",
  "//third_party/openssh-portable/fuchsia/developer-keys:ssh_config",
]

cache_package_labels += []

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