blob: b8094fae1cb96a07c1c77d565fd40ecb478aa129 [file] [log] [blame]
# Copyright 2022 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("//build/assembly/assembly_input_bundle.gni")
import("//build/assembly/assembly_resources_directory.gni")
import("//build/assembly/kernel_aib.gni")
import("//build/bazel/bazel_inputs.gni")
import("//build/config/clang/clang.gni")
import("//build/icu/icu_assembly_input_bundle.gni")
import("//bundles/assembly/platform_aibs.gni")
import("//src/lib/icu/tzdata/icu_tzres_source.gni")
import("//third_party/sbase/binaries.gni")
import("//zircon/kernel/phys/qemu.gni")
import("//zircon/system/ulib/c/libc_toolchain.gni")
########
# Guaranteed Invariants
#
#
# Invariants that are guaranteed by these platform-defined Assembly Input
# Bundles (AIBs):
#
# 1) Their contents are bitwise identical for all boards and products, for a
# given architecture and "debug" vs. "release". They could be built once-
# each for the following, and then used as prebuilts if the build supported
# that:
# - x64-release
# - x64-debug
# - arm64-release
# - arm64-debug
# This is not currently possible given the state of the in-tree build, but it
# is a contract that we have for using these with our OOT product assembly
# environments.
#
# 2) Each AIB directly lists files that it includes, or the label to the exact
# GN target that it includes. They do not include group() targets.
#
# 3) Any single artifact is only included in one AIB.
########
# Maintenance Guidelines
#
# DO: Prefer verboseness and clarity over abstractions and delegation.
#
# The template used in this file requires the direct listing of the package,
# config_data, and bootfs labels or entries.
#
# DO NOT: import a file that defines, for example, a list of labels or a set of
# config_data entries, that are added to an AIB using a GN variable.
#
# Importing other files which define variables used to provide the contents for
# an AIB reduces the clarity of how an artifact gets included first in AIBs, and
# later the assembled image. This makes it harder to reason about how and when
# the artifacts are included within the assembled product.
assert(is_fuchsia,
"Assembly Input Bundles can only be in the Fuchsia toolchain")
# All of the platform assembly input bundles.
group("assembly") {
testonly = true
# eng_platform_aib_labels come from //bundles/assembly/platform_aibs.gni.
deps = eng_platform_aib_labels
# Coverage and sanitizer builders rename the shared libs, therefore ignore them.
# RISCV skips some artifacts, therefore we also ignore that.
if (!is_coverage && !is_asan && !is_hwasan && current_cpu != "riscv64") {
deps += [ "//bundles/assembly/scrutiny" ]
}
}
########
#
# The Zircon kernel itself
#
# This uses a specialized template to create the AIB.
kernel_assembly_input_bundle("zircon") {
}
########
#
# The /bootstrap realm AIBs
#
# The most-common, most-basic, Assembly Input Bundles that are included by all
# assembled systems. No system can function without these.
#
# These provide the `/bootstrap` realm and its children that are always present
# in each of the build-types.
#
# The most-common, most-basic, AIB that is included in all assembled systems,
# regardless of build-type.
#
# WARNING: The only way to remove items from this AIB for a given product is to
# move them to other AIBs that are included by all other products.
#
assembly_input_bundle("embeddable") {
bootfs_files_labels = [
"//build/info/bootfs",
"//src/bringup:bootfs",
"//src/sys/component_manager:bootfs",
]
bootfs_packages = [
"//src/bringup/bin/critical-services:package",
"//src/diagnostics/archivist:package",
"//src/power/shutdown-shim:package",
"//src/sys/root:package",
"//src/sys/startup:package",
]
compiled_packages = [
{
bootfs_package = true
name = "bootstrap"
components = [
{
component_name = "bootstrap"
shards = rebase_path("//src/sys/bootstrap/meta/bootstrap.cml",
root_build_dir)
},
]
},
]
boot_driver_packages = [
{
package_target = "//src/devices/bus/drivers/platform:package"
driver_components = [ "meta/platform-bus.cm" ]
},
# TODO: Move this to bootstrap after fixing pci to not depend on it.
{
package_target = "//src/devices/sysmem/drivers/sysmem:package"
driver_components = [ "meta/sysmem.cm" ]
},
]
}
# The most minimal AIB that is included in assembled systems that are meant to be
# standalone, regardless of build-type.
#
assembly_input_bundle("bootstrap") {
bootfs_packages = [
"//src/bringup/bin/device-name-provider:package",
"//src/bringup/bin/sysinfo:package",
"//src/devices/sysmem/bin/sysmem_connector:pkg",
"//src/zircon/bin/role_manager:package",
]
kernel_cmdline = [ "blobfs.cache-eviction-policy=NEVER_EVICT" ]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[
"//src/bringup/bin/paver/meta/paver.bootstrap_shard.cml",
"//src/bringup/bin/sysinfo/meta/sysinfo.shard.cml",
"//src/devices/sysmem/bin/sysmem_connector/meta/sysmem_connector.bootstrap_shard.cml",
"//src/bringup/bin/device-name-provider/meta/device-name-provider.bootstrap_shard.cml",
"//src/zircon/bin/role_manager/meta/role_manager.bootstrap_shard.cml",
],
root_build_dir)
},
]
},
]
boot_driver_packages = [
{
package_target = "//src/connectivity/bluetooth/hci/transport/usb:package"
driver_components = [ "meta/bt-transport-usb.cm" ]
},
{
package_target = "//src/connectivity/ethernet/drivers/asix-88179:package"
driver_components = [ "meta/asix-88179.cm" ]
},
{
package_target = "//src/connectivity/ethernet/drivers/asix-88772b:package"
driver_components = [ "meta/asix-88772b.cm" ]
},
{
package_target = "//src/connectivity/ethernet/drivers/ethernet/netdevice-migration:package"
driver_components = [ "meta/netdevice-migration.cm" ]
},
{
package_target = "//src/connectivity/ethernet/drivers/usb-cdc-ecm:package"
driver_components = [ "meta/usb-cdc-ecm.cm" ]
},
{
package_target =
"//src/connectivity/network/drivers/network-device:package"
driver_components = [ "meta/network-device.cm" ]
},
{
package_target = "//src/devices/adc/drivers/adc:package"
driver_components = [ "meta/adc.cm" ]
},
{
package_target = "//src/devices/block/drivers/core:package"
driver_components = [ "meta/block.core.cm" ]
},
{
package_target = "//src/devices/block/drivers/gpt:package"
driver_components = [ "meta/gpt.cm" ]
},
{
package_target = "//src/devices/block/drivers/ramdisk:package"
driver_components = [ "meta/ramdisk.cm" ]
},
{
package_target = "//src/devices/block/drivers/sdmmc:package"
driver_components = [ "meta/sdmmc.cm" ]
},
{
package_target = "//src/devices/block/drivers/usb-mass-storage:package"
driver_components = [ "meta/usb-mass-storage.cm" ]
},
{
package_target = "//src/devices/block/drivers/zxcrypt:package"
driver_components = [ "meta/zxcrypt.cm" ]
},
{
package_target = "//src/devices/clock/drivers/clock:package"
driver_components = [ "meta/clock.cm" ]
},
{
package_target = "//src/devices/gpio/drivers/gpio:package"
driver_components = [ "meta/gpio.cm" ]
},
{
package_target = "//src/devices/i2c/drivers/i2c:package"
driver_components = [ "meta/i2c.cm" ]
},
{
package_target = "//src/devices/ml/drivers/usb-harriet:package"
driver_components = [ "meta/usb-harriet.cm" ]
},
{
package_target = "//src/devices/power/drivers/power:package"
driver_components = [ "meta/power.cm" ]
},
{
package_target = "//src/devices/pwm/drivers/pwm:package"
driver_components = [ "meta/pwm.cm" ]
},
{
package_target = "//src/devices/serial/drivers/ftdi:package"
driver_components = [ "meta/ftdi.cm" ]
},
{
package_target = "//src/devices/serial/drivers/serial:package"
driver_components = [ "meta/serial.cm" ]
},
{
package_target = "//src/devices/serial/drivers/usb-cdc-acm:package"
driver_components = [ "meta/usb-cdc-acm.cm" ]
},
{
package_target = "//src/devices/spi/drivers/spi:package"
driver_components = [ "meta/spi.cm" ]
},
{
package_target = "//src/devices/usb/drivers/usb-bus:package"
driver_components = [ "meta/usb-bus.cm" ]
},
{
package_target = "//src/devices/usb/drivers/usb-composite:package"
driver_components = [ "meta/usb-composite.cm" ]
},
{
package_target = "//src/devices/usb/drivers/usb-hub:package"
driver_components = [ "meta/usb-hub.cm" ]
},
{
package_target = "//src/graphics/display/drivers/coordinator:package"
driver_components = [ "meta/display-coordinator.cm" ]
},
{
package_target = "//src/media/audio/drivers/usb-audio:package"
driver_components = [ "meta/usb-audio.cm" ]
},
{
package_target = "//src/storage/fvm/driver:package"
driver_components = [ "meta/fvm.cm" ]
},
{
package_target = "//src/ui/input/drivers/hid:package"
driver_components = [ "meta/hid.cm" ]
},
{
package_target = "//src/ui/input/drivers/buttons:package"
driver_components = [ "meta/buttons.cm" ]
},
{
package_target = "//src/ui/input/drivers/hid-input-report:package"
driver_components = [ "meta/hid-input-report.cm" ]
},
{
package_target = "//src/ui/input/drivers/usb-hid:package"
driver_components = [ "meta/usb-hid.cm" ]
},
# TODO(https://fxbug.dev/42082105): Carve out usb-peripheral-stack drivers for specific products/boards.
{
package_target =
"//src/connectivity/ethernet/drivers/rndis-function:package"
driver_components = [ "meta/rndis-function.cm" ]
},
{
package_target =
"//src/connectivity/ethernet/drivers/usb-cdc-function:package"
driver_components = [ "meta/usb-cdc-function.cm" ]
},
{
package_target = "//src/devices/block/drivers/ums-function:package"
driver_components = [ "meta/ums-function.cm" ]
},
{
package_target = "//src/devices/usb/drivers/usb-peripheral:package"
driver_components = [ "meta/usb-peripheral.cm" ]
},
{
package_target = "//src/devices/registers/drivers/registers:package"
driver_components = [ "meta/registers.cm" ]
},
]
}
# The most-common, most-basic, AIB that is included in all userdebug and eng
# systems.
#
assembly_input_bundle("embeddable_userdebug") {
bootfs_files_labels = [
# tools
"//src/bringup/bin/debuglog:bootfs",
"//src/bringup/bin/dlog:bootfs",
"//src/bringup/bin/waitfor:bootfs",
"//src/developer/forensics/crasher/cpp:bootfs",
"//src/sys/bin/psutils:bootfs",
"//src/sys/tools/component:bootfs",
"//src/zircon/bin/kcounter:bootfs",
# shell
"//zircon/third_party/uapp/dash:bootfs",
]
}
# The most minimal AIB that is included in userdebug and eng assembled systems
# that are meant to be standalone.
#
assembly_input_bundle("bootstrap_userdebug") {
bootfs_files_labels = [
# tools
"//src/connectivity/network/bin/ping:bootfs",
"//src/devices/block/bin/disk-inspect:bootfs",
"//src/devices/block/bin/fvm-check:bootfs",
"//src/devices/nand/bin/nand-loader:bootfs",
"//src/devices/nand/bin/nand-util:bootfs",
"//src/devices/usb/bin/usbctl",
"//src/storage/bin/dd:bootfs",
"//src/storage/bin/df:bootfs",
"//src/storage/bin/storage-metrics:bootfs",
"//src/zircon/bin/kstress:bootfs",
"//src/zircon/bin/ktrace:bootfs",
"//src/zircon/bin/loadgen:bootfs",
]
# Do not automatically include pistress, but build it to keep it from
# bit-rotting.
deps = [ "//src/zircon/bin/pistress:bootfs" ]
boot_driver_packages = [
{
package_target = "//src/devices/nand/drivers/broker:package"
driver_components = [ "meta/nand-broker.cm" ]
},
]
}
# The most-common, most-basic, AIB that is included in all eng systems.
#
assembly_input_bundle("embeddable_eng") {
testonly = true
bootfs_files_labels = [
# tools
"//src/devices/bin/driver_tools:bootfs",
"//src/devices/bin/lsdev:bootfs",
"//src/diagnostics/iquery:bootfs",
]
}
# This is a temporary AIB hold wlanphy driver. This driver will eventually
# be moved to bootstrap AIB and this AIB will be removed.
assembly_input_bundle("wlanphy_driver") {
base_driver_packages = [
{
package_target = "//src/connectivity/wlan/drivers/wlanphy:wlanphy"
driver_components = [ "meta/wlanphy.cm" ]
},
]
}
# The most minimal AIB that is included in eng assembled systems that are meant
# to be standalone.
#
assembly_input_bundle("bootstrap_eng") {
testonly = true
bootfs_files_labels = [
# tools
"//src/devices/acpi/bin/acpidump:bootfs",
"//src/devices/block/bin/biotime:bootfs",
"//src/devices/block/bin/gpt:bootfs",
"//src/devices/block/bin/iochk:bootfs",
"//src/devices/block/bin/iotime:bootfs",
"//src/devices/block/bin/lsblk:bootfs",
"//src/devices/block/bin/sdio:bootfs",
"//src/devices/cpu/bin/cpuctl:bootfs",
"//src/devices/gpio/bin/gpioutil:bootfs",
"//src/devices/i2c/bin:bootfs",
"//src/devices/power/bin/lspwr:bootfs",
"//src/devices/ram/bin/ram-info:bootfs",
"//src/devices/registers/bin/register-util:bootfs",
"//src/devices/spi/bin/spiutil:bootfs",
"//src/devices/thermal/bin/temperature-cli:bootfs",
"//src/devices/thermal/bin/thermal-cli:bootfs",
"//src/devices/usb/bin/lsusb:bootfs",
"//src/media/audio/tools/audio-driver-ctl:bootfs",
"//src/security/bin/syscall-check:bootfs",
"//src/sys/tools/package:bootfs",
"//src/ui/backlight/bin/backlight:bootfs",
"//src/ui/input/bin/hid:bootfs",
# tests
"//src/devices/block/bin/blktest:bootfs",
"//src/devices/tee/bin:bootfs",
"//src/graphics/display/bin/display-test:bootfs",
"//src/zircon/tests/evil:bootfs",
]
# Do not automatically include these tools, but build them to keep them from
# bit-rotting.
deps = [
"//src/devices/pwm/bin/pwmctl:bootfs",
"//src/ui/light/bin/lights-cli:bootfs",
"//src/zircon/testing/mutex_pi_exerciser:bootfs",
]
}
# The kernel_debug_broker AIB is included by all eng and userdebug products.
#
assembly_input_bundle("kernel_debug_broker_userdebug") {
bootfs_packages = [ "//src/bringup/bin/kernel_debug_broker:pkg" ]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[ "//src/bringup/bin/kernel_debug_broker/meta/kernel_debug_broker_userdebug.bootstrap_shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("kernel_debug_broker_user") {
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[ "//src/bringup/bin/kernel_debug_broker/meta/kernel_debug_broker_user.bootstrap_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Legacy AIB for migration purposes.
assembly_input_bundle("paver_legacy") {
bootfs_packages = [ "//src/bringup/bin/paver:package" ]
}
assembly_input_bundle("sysmem_no_allocate") {
kernel_cmdline = [ "driver.sysmem.contiguous_memory_size=0" ]
}
# The console AIB is included by all eng and userdebug products.
#
assembly_input_bundle("console_userdebug") {
bootfs_packages = [
"//src/bringup/bin/console:package",
"//src/bringup/bin/console-launcher:package",
]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[
"//src/bringup/bin/console/meta/console.shard.cml",
"//src/bringup/bin/console/meta/console-userdebug.shard.cml",
],
root_build_dir)
},
]
},
]
}
# The console_user AIB is included by all user products.
#
assembly_input_bundle("console_user") {
bootfs_packages = [
"//src/bringup/bin/console:package",
"//src/bringup/bin/console-launcher:package",
]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[
"//src/bringup/bin/console/meta/console.shard.cml",
"//src/bringup/bin/console/meta/console-user.shard.cml",
],
root_build_dir)
},
]
},
]
}
# The ptysvc AIB is included by all eng and userdebug products.
#
assembly_input_bundle("ptysvc") {
bootfs_packages = [ "//src/bringup/bin/ptysvc:package" ]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[ "//src/bringup/bin/ptysvc/meta/ptysvc.bootstrap_shard.cml" ],
root_build_dir)
},
]
},
]
}
# The virtcon AIB is included by all eng and userdebug products, and can be
# optionally included by user products.
#
assembly_input_bundle("virtcon") {
bootfs_files_labels = [
# TODO(120776) The boot animation is configured via a global GN arg, which
# needs to be migrated to a path provided by the product to assembly, which
# then places it in the appropriate path in bootfs.
#
# As such, this isn't something that should be added to a platform bundle,
# but the migration with the products that use that GN arg is sufficiently
# complicated that this is clearer that trying to do a removal of the
# default boot animation in those products that shouldn't include it (if
# it's included by default via `//products/common/bringup.gni`).
"//src/bringup/bin/virtcon:boot_animation",
]
bootfs_packages = [ "//src/bringup/bin/virtcon:package" ]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[ "//src/bringup/bin/virtcon/meta/virtual-console.shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("virtcon_disable") {
kernel_cmdline = [
"virtcon.hide-on-boot",
"virtcon.disable=true",
]
}
# The netsvc AIB is included by all eng products.
#
assembly_input_bundle("netsvc") {
bootfs_packages = [ "//src/bringup/bin/netsvc:package" ]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards =
rebase_path([ "//src/bringup/bin/netsvc/meta/netsvc.shard.cml" ],
root_build_dir)
},
]
},
]
}
# All eng build type products will include this Assembly Input Bundle.
# These kernel args should be refactored so that the AIBs have logical names.
#
assembly_input_bundle("kernel_args_eng") {
kernel_cmdline = [
"console.shell=true",
"kernel.enable-debugging-syscalls=true",
"kernel.enable-serial-syscalls=true",
"netsvc.all-features=true",
"netsvc.disable=false",
]
}
# All userdebug build type products will include this Assembly Input Bundle.
# These kernel args should be refactored so that the AIBs have logical names.
#
assembly_input_bundle("kernel_args_userdebug") {
kernel_cmdline = [
"console.shell=false",
"kernel.enable-debugging-syscalls=false",
"kernel.enable-serial-syscalls=output-only",
"netsvc.disable=true",
]
}
# All user build type products will include this Assembly Input Bundle.
#
# These are all the default values, so this AIB can be safely removed, but we
# are keeping it around for now so that we can assert that nothing changed
# during refactor.
#
# These kernel args should be refactored so that the AIBs have logical names.
assembly_input_bundle("kernel_args_user") {
kernel_cmdline = [
"console.shell=false",
"kernel.enable-debugging-syscalls=false",
"kernel.enable-serial-syscalls=false",
"netsvc.disable=true",
"kernel.serial=none",
]
}
# Added when a board supports the PMM checker (ie, it's real hardware that can
# do this without a large performance penalty), and when desired by the product
# (based on build-type).
assembly_input_bundle("kernel_pmm_checker_enabled") {
kernel_cmdline = [
# Enable PMM checker to detect certain kinds of buffer overrun and
# use-after-free bugs.
"kernel.pmm-checker.enable=true",
# Use a small fill size to minimize performance impact. In practice,
# corruption tends to happen at the start of a page so filling/checking only
# the first 16 bytes provides decent coverage without sacrificing
# performance.
"kernel.pmm-checker.fill-size=16",
]
}
# sl4f: Scripting Layer for Fuchsia
#
# Often used for manipulating device during E2E tests.
assembly_input_bundle("sl4f") {
base_packages = [
# We currently include SL4F in base to support E2E tests that
# either do not download fuchsia packages or cannot start
# package serving due to network limitations.
"//src/testing/sl4f",
"//src/sys/bin/start_sl4f",
]
shell_commands = [
{
package = "start_sl4f"
components = [ "start_sl4f" ]
},
]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/testing/sl4f/meta/sl4f_assembly.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Includes the bin/clock and clkctl developer tools
assembly_input_bundle("clock_development_tools") {
bootfs_files_labels = [ "//src/devices/clock/bin/clock:bootfs" ]
}
########
#
# The /core realm AIBs
#
# These are the Assembly Input Bundles that are included by all assembled
# systems that include the `/core` realm.
# core_realm
#
# This AIB adds the `/core` realm itself, and it's mandatory children. The
# other AIBs in this group add shards and optional children of `/core`.
#
# This is "less than minimal". "utility" systems include this to get a `/core`
# realm, but do not include the `common_standard` AIB as that brings in too much
# functionality for these specialized systems.
#
# All children in `/core` receive InspectSink and LogSink.
#
assembly_input_bundle("core_realm") {
bootfs_packages = [ "//src/sys/pkg/bin/pkg-cache" ]
base_packages = [
# This is a required dependency of pkg-cache
"//src/sys/pkg/bin/system-update-committer",
# Build-Information
"//src/developer/build_info:build-info-service",
# Developer.
"//src/developer/forensics:pkg",
]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[
"//src/devices/bin/driver_framework/meta/package_drivers.bootstrap_shard.cml",
"//src/sys/pkg/bin/pkg-cache/meta/pkg-cache.bootstrap_shard.cml",
],
root_build_dir)
},
]
},
{
name = "core"
components = [
{
# All paths must be rebased since this is passed directly to the AIB
# config.
component_name = "core"
shards = rebase_path("//src/sys/core/meta/core.cml", root_build_dir)
},
]
# These are not included into the core.cml directly, but may be included
# via other shards.
component_includes = [
{
source =
rebase_path("//sdk/lib/inspect/offer.shard.cml", root_build_dir)
destination = "inspect/offer.shard.cml"
},
{
source =
rebase_path("//sdk/lib/syslog/offer.shard.cml", root_build_dir)
destination = "syslog/offer.shard.cml"
},
]
foreach(
include,
[
"//src/connectivity/bluetooth/profiles/bt-a2dp/meta/bt-a2dp-common.core_shard.cml",
"//src/intl/intl_services/meta/intl.core_shard.base.cml",
"//src/media/audio/audio_core/meta/audio_core.core_shard.base.cml",
"//src/recovery/system/meta/core_shards/base.shard.cml",
"//src/recovery/system/meta/core_shards/ui.shard.cml",
"//src/session/bin/session_manager/meta/session_manager.core_shard.cml",
"//src/settings/service/meta/setui_service_base.core_shard.cml",
"//src/testing/sl4f/meta/sl4f_base.core_shard.cml",
"//src/ui/meta/ui_routes_base.shard.cml",
]) {
component_includes += [
{
source = rebase_path(include, root_build_dir)
destination = rebase_path(include, "//")
},
]
}
},
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[
# TODO: These shards should be folded into the above
# `core.cml` file itself as they are never omitted from it.
"//src/developer/build_info/meta/build_info.core_shard.cml",
"//src/developer/forensics/forensics.core_shard.cml",
"//sdk/lib/inspect/offer.shard.cml",
],
root_build_dir)
},
]
},
{
name = "system-update-realm"
components = [
{
component_name = "system-update-realm"
shards = rebase_path("//src/sys/pkg/meta/system-update-realm.cml",
root_build_dir)
},
]
},
]
}
# core_realm_networking
#
# This AIB adds all the children of `/core` that are expected to be present if
# networking is enabled.
#
# It does _not_ include either the `network` or `netstack` packages themselves,
# as which specific variant of those is added is controllable by the product, so
# they are in separate AIBs.
#
# "Utility" systems get this in the 'user' build-type only if they request that
# networking is added. All other build-types (and all "standard" systems) get
# this AIB by mandatory inclusion.
assembly_input_bundle("core_realm_networking") {
base_packages = [
# Hardware Information
"//src/hwinfo",
# System Time
"//src/sys/time/timekeeper:timekeeper-without-config",
"//src/sys/time/httpsdate_time_source:httpsdate-time-source-pull",
# Other
"//src/sys/stash:pkg",
]
}
# Network realm definition.
#
# This AIB defines the base network package, which lays out the network realm.
# It must be used in conjunction with network_realm_packages or
# network_realm_packages_gub.
assembly_input_bundle("network_realm") {
compiled_packages = [
{
name = "network"
components = [
{
component_name = "network"
shards =
rebase_path("//src/connectivity/network/meta/common.shard.cml",
root_build_dir)
},
]
component_includes = [
{
source =
rebase_path("//sdk/lib/inspect/offer.shard.cml", root_build_dir)
destination = "inspect/offer.shard.cml"
},
{
source =
rebase_path("//sdk/lib/trace/offer.shard.cml", root_build_dir)
destination = "trace/offer.shard.cml"
},
{
source =
rebase_path("//sdk/lib/syslog/offer.shard.cml", root_build_dir)
destination = "syslog/offer.shard.cml"
},
]
},
]
}
# Network realm packages without unified binary.
#
# This AIB includes all the packages that are common across all products that
# require networking. It provides the network realm using packages that utilize
# separate, more-optimized, binaries, trading space for performance. This is
# the default implementation used.
#
# It is mutually-exclusive with 'network_realm_packages_gub'.
assembly_input_bundle("network_realm_packages") {
base_packages = [
"//src/connectivity/network/dhcpv4/server:package",
"//src/connectivity/network/dhcpv6/client:package",
"//src/connectivity/network/dns:package",
"//src/connectivity/policy/http-client:package",
"//src/connectivity/policy/reachability:package",
]
}
# Network realm packages with unified binary.
#
# This AIB is equivalent to network_realm_packages. It provides the network
# realm using packages that utilize a "grand unified binary" (GUB), saving space
# at the cost of a minor loss in performance. This is for space- constrained
# devices that don't have the space for the non-GUB binaries.
#
# It is mutually-exclusive with 'network_realm_packages'.
assembly_input_bundle("network_realm_packages_gub") {
base_packages = [
"//src/connectivity/network/dhcpv4/server:package_gub",
"//src/connectivity/network/dhcpv6/client:package_gub",
"//src/connectivity/network/dns:package_gub",
"//src/connectivity/policy/http-client:package_gub",
"//src/connectivity/policy/reachability:package_gub",
]
}
# networking_with_virtualization
#
# This AIB adds the networking capabilities that include virtualization support.
# It is mutually-exclusive with networking_basic.
#
assembly_input_bundle("networking_with_virtualization") {
base_packages = [ "//src/connectivity/policy/netcfg:package-advanced" ]
compiled_packages = [
{
name = "network"
component_shards = [
{
component_name = "network"
shards = rebase_path(
[ "//src/connectivity/network/meta/network-with-virtualization.shard.cml" ],
root_build_dir)
},
]
},
]
}
# Basic networking.
#
# This AIB adds the basic networking capabilities. It is mutually-exclusive with
# networking_with_virtualization.
#
# It must be used in conjunction with either network_basic_packages or
# network_basic_packages_gub.
assembly_input_bundle("networking_basic") {
compiled_packages = [
{
name = "network"
component_shards = [
{
component_name = "network"
shards = rebase_path(
[ "//src/connectivity/network/meta/network-basic.shard.cml" ],
root_build_dir)
},
]
},
]
}
# Basic networking packages without unified binary.
#
# This AIB provides packages for the networking_basic configuration. It is
# mutually exlucisve with networking_basic_packages_gub.
assembly_input_bundle("networking_basic_packages") {
base_packages = [ "//src/connectivity/policy/netcfg:package-basic" ]
}
# Basic networking packages with unified binary.
#
# This AIB provides space-saving equivalent packages for the networking_basic
# configuration as found in networking_basic_packages. It is mutually exlucisve
# with networking_basic_packages.
assembly_input_bundle("networking_basic_packages_gub") {
base_packages = [ "//src/connectivity/policy/netcfg:package-basic_gub" ]
}
# networking_test_collection
#
# Includes a test collection inside the network realm that has access to all
# networking administrative capabilities.
assembly_input_bundle("networking_test_collection") {
testonly = true
compiled_packages = [
{
name = "network"
component_shards = [
{
component_name = "network"
shards = rebase_path(
[ "//src/connectivity/network/meta/test-collection.shard.cml" ],
root_build_dir)
},
]
},
]
}
# This is common across all eng-mode products that include the core realm.
#
# This is mutually-exclusive with the `core_realm_user_and_userdebug` AIB.
#
assembly_input_bundle("core_realm_eng") {
testonly = true
base_packages = [
"//src/sys/pkg/bin/pkg-resolver:pkg-resolver-eng",
# Dash launcher should be available in every engineering-mode product.
"//src/sys/tools/debug-dash-launcher",
# The fs_realm component should be available in every engineering-mode product.
"//src/storage/fs_realm",
"//src/storage/bin:fs_realm_tools",
]
shell_commands = [
{
package = "fs_realm_tools"
components = [
"mkfs",
"fsck",
"mount",
"umount",
]
},
]
# wlancfg's donut tool.
on_demand = [ "//src/connectivity/wlan/wlancfg/tool:donut" ]
shell_commands += [
{
package = "donut"
components = [ "donut" ]
},
]
# Moved here from //bundles/packages/prod:cmdutils
on_demand += [
"//src/zircon/bin/time",
"//src/zircon/bin/uname",
]
shell_commands += [
{
package = "time"
components = [ "time" ]
},
{
package = "uname"
components = [ "uname" ]
},
]
# Included with //bundles/tools.
shell_commands += [
{
package = "sched"
components = [ "sched" ]
},
{
package = "far"
components = [ "far" ]
},
{
package = "trace"
components = [ "trace" ]
},
{
package = "camera_benchmark"
components = [ "camera_benchmark_bin" ]
},
{
package = "camera_sensor_cli"
components = [ "camera_sensor_cli_bin" ]
},
{
package = "lowpanctl"
components = [ "lowpanctl" ]
},
{
package = "nc"
components = [ "nc" ]
},
{
package = "sockscripter"
components = [ "sockscripter" ]
},
{
package = "iperf3"
components = [ "iperf3" ]
},
{
package = "tcpdump"
components = [ "tcpdump" ]
},
{
package = "mdns-util"
components = [ "mdns-util" ]
},
{
package = "net-cli"
components = [ "net" ]
},
{
package = "dai-info"
components = [ "dai-info" ]
},
{
package = "bt-bredr-profile"
components = [ "bt-bredr-profile" ]
},
{
package = "bt-cli"
components = [ "bt-cli" ]
},
{
package = "bt-le-central"
components = [ "bt-le-central" ]
},
{
package = "bt-le-peripheral"
components = [ "bt-le-peripheral" ]
},
{
package = "bt-pairing-tool"
components = [ "bt-pairing-tool" ]
},
{
package = "bt-snoop-cli"
components = [ "bt-snoop-cli" ]
},
{
package = "bt-fct-hci"
components = [ "bt-fct-hci" ]
},
{
package = "bt-hci-tool"
components = [ "bt-hci-tool" ]
},
{
package = "bt-intel-tool"
components = [ "bt-intel-tool" ]
},
{
package = "bt-avdtp-tool"
components = [ "bt-avdtp-tool" ]
},
{
package = "bt-avrcp-controller"
components = [ "bt-avrcp-controller" ]
},
{
package = "display-detect"
components = [ "display_detect" ]
},
{
package = "display-png"
components = [ "display_png" ]
},
{
package = "display-tool"
components = [ "display-tool" ]
},
{
package = "display-tweak"
components = [ "display-tweak" ]
},
{
package = "magma-info"
components = [ "magma-info" ]
},
{
package = "mediasession_cli_tool"
components = [ "mediasession_cli_tool" ]
},
{
package = "fdr_cli"
components = [ "fdr" ]
},
{
package = "export-ffs"
components = [ "export-ffs" ]
},
{
package = "pm"
components = [ "pm" ]
},
{
package = "activity-ctl"
components = [ "activity_ctl" ]
},
{
package = "log"
components = [ "log" ]
},
{
package = "input"
components = [ "input" ]
},
{
package = "boringssl_tool"
components = [ "bssl" ]
},
{
package = "curl"
components = [ "curl" ]
},
{
package = "scp"
components = [ "scp" ]
},
{
package = "ssh-keygen"
components = [ "ssh-keygen" ]
},
{
package = "ssh"
components = [ "ssh" ]
},
]
# Other manually-included shell commands
shell_commands += [
{
package = "cowsay"
components = [ "cowsay" ]
},
{
package = "hwstress-cli"
components = [ "hwstress" ]
},
]
# Add the sbase binaries, some of which are in base, but most are in the
# on_demand package set.
_sbase_bins_in_base = [
# Always include 'ls'
"ls",
# These are used by Chromium test infrastructure, and needs to always be
# available.
"cat",
"sha1sum",
# These are used by test infrastructure, and always need to be available.
"mkdir",
]
on_demand = []
foreach(bin, sbase_binaries) {
# Always create the shell_commands entry.
shell_commands += [
{
package = bin
components = [ bin ]
},
]
# Add to the base package set if it's in the _sbase_bins_in_base list,
# otherwise add it to on_demand
_sbase_target = "//third_party/sbase:${bin}_pkg"
if (_sbase_bins_in_base != _sbase_bins_in_base + [ bin ] - [ bin ]) {
base_packages += [ _sbase_target ]
} else {
on_demand += [ _sbase_target ]
}
}
compiled_packages = [
{
name = "core"
component_shards = [
{
# All paths must be rebased since this is passed directly to the AIB
# config.
component_name = "core"
shards = rebase_path(
[
# The process_resolver core shard (either the base-resolver or
# pkg-resolver variant) should only be present in
# the `core_realm_development_access` AIB, but it's required
# here until optional exposes are available, as the
# `fuchsia.process.Resolver` capability is routed to the
# `/bootstrap/console-launcher` component which is currently
# present on all build-types (but is not needed on user, as
# there is no reachable console there).
# Note that the `process-resolver` component itself is not
# present except when the `core_realm_development_access` is
# added to the system.
#
# eng uses the pkg-resolver, as opposed to the base-resolver,
# to support ephemeral resolution of shell packages.
"//src/sys/process-resolver/meta/process_resolver.pkg-resolver.core_shard.cml",
"//src/sys/core/meta/core-env-full-resolver.core_shard.cml",
"//src/sys/core/meta/lavapipe.core_shard.cml",
"//src/sys/core/meta/unrestricted-storage.core_shard.cml",
"//src/sys/tools/debug-dash-launcher/meta/debug_dash_launcher.core_shard.cml",
"//src/storage/fs_realm/meta/fs_realm.core_shard.cml",
],
root_build_dir)
},
]
},
]
}
# This is common across all user and userdebug products that include the core
# realm.
#
# This is mutually-exclusive with the `core_realm_eng` AIB.
#
assembly_input_bundle("core_realm_user_and_userdebug") {
base_packages = [ "//src/sys/pkg/bin/pkg-resolver" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
# All paths must be rebased since this is passed directly to the AIB
# config.
component_name = "core"
shards = rebase_path(
[
# user and userdebug only have the base resolver, not the full
# resolver.
"//src/sys/core/meta/core-env-base-resolver.core_shard.cml",
# The process_resolver core shard (either the base-resolver or
# pkg-resolver variant) should only be present in
# the `core_realm_development_access` AIB, but it's required
# here until optional exposes are available, as the
# `fuchsia.process.Resolver` capability is routed to the
# `/bootstrap/console-launcher` component which is currently
# present on all build-types (but is not needed on user, as
# there is no reachable console there).
# Note that the `process-resolver` component itself is not
# present except when the `core_realm_development_access` is
# added to the system.
#
# user and userdebug only have the base-resolver, not the
# pkg-resolver.
"//src/sys/process-resolver/meta/process_resolver.base-resolver.core_shard.cml",
# Lavapipe is only enabled on eng builds.
"//src/sys/core/meta/lavapipe-disabled.core_shard.cml",
# user and userdebug restrict access to the Storage capability
# to registered component ids.
"//src/sys/core/meta/restricted-storage.core_shard.cml",
],
root_build_dir)
},
]
},
]
}
# This is the AIB that adds the services necessary for developers to access a
# target running Fuchsia from their development host using tools like `ffx`.
#
# This is included with all eng and userdebug build-type systems.
#
assembly_input_bundle("core_realm_development_access") {
base_packages = [
# SSH is necessary for remote access for development
"//src/developer/sshd-host",
# Process resolver enables cli commands to be resolved to components.
"//src/sys/process-resolver",
# ffx's remote-control (remote access) components:
"//src/developer/remote-control:remote-control-package",
# The developer snapshot tool.
"//src/developer/forensics/snapshot:pkg",
# log_listener shell tool.
"//src/diagnostics/log_listener:log_listener_shell_pkg",
]
compiled_packages = [
{
name = "core"
component_shards = [
{
# All paths must be rebased since this is passed directly to the AIB
# config.
component_name = "core"
shards = rebase_path(
[
"//src/developer/debug/debug_agent/meta/debug_agent.core_shard.cml",
"//src/developer/meta/default-laboratory-env.core_shard.cml",
"//src/developer/remote-control/meta/laboratory.core_shard.cml",
"//src/developer/remote-control/meta/remote-control-base.core_shard.cml",
"//src/developer/sshd-host/meta/sshd-host.core_shard.cml",
"//src/developer/toolbox/meta/toolbox.core_shard.cml",
],
root_build_dir)
},
]
},
{
name = "toolbox"
components = [
{
component_name = "toolbox"
shards = rebase_path("//src/developer/toolbox/meta/toolbox.cml",
root_build_dir)
},
]
},
]
shell_commands = [
{
package = "remote-control"
components = [
"remote_control_runner",
"remote_control_bin",
]
},
{
package = "snapshot"
components = [ "snapshot" ]
},
{
package = "log_listener_shell"
components = [ "log_listener" ]
},
]
}
# Configuration that goes along with core_realm_development_access which is
# suitable for userdebug builds.
assembly_input_bundle("core_realm_development_access_userdebug") {
config_data_labels = [ "//src/developer/sshd-host:config" ]
}
# Configuration that goes along with core_realm_development_access which is
# suitable for eng builds.
assembly_input_bundle("core_realm_development_access_eng") {
config_data_labels = [ "//src/developer/sshd-host:config_eng" ]
}
assembly_input_bundle("bootstrap_realm_vsock_development_access") {
bootfs_files_labels = [
"//src/developer/vsock-sshd-host:bootfs",
"//src/developer/remote-control/runner:bootfs",
]
bootfs_packages = [
# SSH is necessary for remote access for development
"//src/developer/vsock-sshd-host",
# ffx's remote-control (remote access) components:
"//src/developer/remote-control:remote-control-package",
]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[
"//src/developer/remote-control/meta/remote-control.bootstrap_shard.cml",
"//src/developer/vsock-sshd-host/meta/vsock-sshd-host.bootstrap_shard.cml",
],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("mdns_fuchsia_device_wired_service") {
config_data_labels =
[ "//src/connectivity/network/mdns/service:mdns_fuchsia_udp_config" ]
}
assembly_input_bundle("core_realm_development_access_rcs_usb") {
base_driver_packages = [
{
package_target = "//src/connectivity/overnet/usb:overnet-usb-package"
driver_components = [ "meta/overnet-usb.cm" ]
},
]
compiled_packages = [
{
name = "core"
component_shards = [
{
# All paths must be rebased since this is passed directly to the AIB
# config.
component_name = "core"
shards = rebase_path(
[ "//src/developer/remote-control/meta/remote-control-with-usb.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("core_realm_development_access_rcs_no_usb") {
compiled_packages = [
{
name = "core"
component_shards = [
{
# All paths must be rebased since this is passed directly to the AIB
# config.
component_name = "core"
shards = rebase_path(
[ "//src/developer/remote-control/meta/remote-control.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("radar_proxy_with_injector") {
base_packages =
[ "//src/devices/radar/bin/radar-proxy:radar-proxy-with-injector" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/devices/radar/bin/radar-proxy/meta/radar-proxy-with-injector.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("radar_proxy_without_injector") {
base_packages =
[ "//src/devices/radar/bin/radar-proxy:radar-proxy-without-injector" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/devices/radar/bin/radar-proxy/meta/radar-proxy-without-injector.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("feedback_low_memory_product_config") {
config_data_labels =
[ "//src/developer/forensics:feedback_low_memory_product_config" ]
}
assembly_input_bundle("feedback_remote_device_id_provider") {
config_data_labels = [
"//src/developer/forensics:feedback_remote_device_id_provider_for_assembly",
]
}
assembly_input_bundle("feedback_large_disk") {
config_data_labels =
[ "//src/developer/forensics:feedback_large_disk_product_config" ]
}
assembly_input_bundle("feedback_userdebug_config") {
config_data_labels = [ "//src/developer/forensics:feedback_userdebug_config" ]
}
assembly_input_bundle("feedback_user_config") {
config_data_labels = [ "//src/developer/forensics:feedback_user_config" ]
}
assembly_input_bundle("factory_reset_trigger") {
base_packages = [ "//src/recovery/factory-reset-trigger" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/recovery/factory-reset-trigger/meta/factory-reset-trigger.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
########
#
# The "standard" AIBs
#
# These historically corresponded to the use of "minimal.gni" as a basis for
# other products.
#
# All components here receive InspectSink and LogSink.
#
# TODO(https://fxbug.dev/42065169) Move the contents of common_standard to the right
# feature- or subsystem-specific AIBs (if not to the core realm AIBs).
#
# WARNING: The only way to remove items from this AIB for a given product is to
# move them to other AIBs that are included by all other products.
#
assembly_input_bundle("common_standard") {
bootfs_files_labels = [ "//src/sys/core:bootfs" ]
base_packages = [
# The SWD stack artifacts that enable OTAs
"//src/sys/pkg/bin/system-updater",
"//src/sys/full-resolver:full-resolver-pkg",
# Cobalt
"//src/cobalt/bin/app:cobalt",
"//src/cobalt/bin/system-metrics:cobalt_system_metrics",
# Diagnostics
"//src/diagnostics/persistence:diagnostics-persistence",
"//src/diagnostics/sampler",
# Internationalization
"//src/intl/tzdata_provider:tzdata_provider_pkg",
# Security
"//src/security/bin/root_ssl_certificates",
# Activity
"//src/sys/activity",
# Recovery
"//src/recovery/factory_reset:factory_reset_pkg",
# Connectivity
"//src/connectivity/network/mdns/service:mdns",
]
config_data = [
{
package_name = "system-update-committer"
files = [
{
# This file is generated by GN, but its contents are always the same
# (the template which generates it is basically a macro, and has no
# product-controlled GN arguments or metadata).
source = "$root_build_dir/gen/src/sys/pkg/bin/system-update-committer/system_update_committer_config_enable_reboot_on_verification_failure.json"
destination = "config.json"
label = "//src/sys/pkg/bin/system-update-committer:enable_reboot_on_verification_failure"
},
]
},
{
# Ideally we would reference a config_data_for_assembly() target instead,
# but they don't support deps yet, which is needed here.
package_name = "cobalt"
label = "//src/cobalt/bin/app:global_metrics_registry_gen"
files = [
{
# This file is generated by GN, but its contents are always the same
# (the template which generates it is basically a macro, and has no
# product-controlled GN arguments or metadata).
source = "$root_gen_dir/src/cobalt/bin/app/global_metrics_registry.pb"
destination = "global_metrics_registry.pb"
},
]
},
{
package_name = "triage-detect"
files = [
{
source =
"//src/diagnostics/config/triage/detect/session-detect.triage"
destination = "session-detect.triage"
},
{
source = "//src/diagnostics/config/triage/detect/sysmem-detect.triage"
destination = "sysmem-detect.triage"
},
{
source = "//src/diagnostics/config/triage/detect/wlan-detect.triage"
destination = "wlan-detect.triage"
},
]
},
{
package_name = "diagnostics-persistence"
files = [
{
source = "//src/diagnostics/config/persistence/netstack.persist"
destination = "netstack.persist"
},
{
source = "//src/diagnostics/config/persistence/wlan.persist"
destination = "wlan.persist"
},
]
},
]
config_data_labels = [
"//src/diagnostics/config/sampler:sampler_config_internal",
"//src/diagnostics/config/fire:fire_config_component_list",
"//src/diagnostics/config/fire/projects:fire_config_projects",
]
compiled_packages = [
{
name = "core"
component_shards = [
{
# All paths must be rebased since this is passed directly to the AIB
# config.
component_name = "core"
shards = rebase_path(
[
"//src/diagnostics/realm/meta/diagnostics.core_shard.cml",
"//src/diagnostics/persistence/meta/diagnostics-persistence.core_shard.cml",
"//src/diagnostics/sampler/meta/sampler.core_shard.cml",
"//src/connectivity/network/meta/persistence.core_shard.cml",
"//src/intl/tzdata_provider/meta/tzdata_provider.core_shard.cml",
"//src/sys/cache_manager/meta/cache_manager.core_shard.cml",
"//src/sys/pkg/bin/system-updater/meta/system_updater.core_shard.cml",
"//src/recovery/factory_reset/meta/factory_reset.core_shard.cml",
],
root_build_dir)
},
]
},
{
name = "diagnostics"
components = [
{
component_name = "diagnostics"
shards =
rebase_path("//src/diagnostics/realm/meta/diagnostics_realm.cml",
root_build_dir)
},
]
component_includes = [
{
source =
rebase_path("//sdk/lib/inspect/offer.shard.cml", root_build_dir)
destination = "inspect/offer.shard.cml"
},
]
},
{
name = "diagnostics"
component_shards = [
{
component_name = "diagnostics"
shards = rebase_path([ "//sdk/lib/inspect/offer.shard.cml" ],
root_build_dir)
},
]
},
{
name = "system-update-realm"
component_shards = [
{
component_name = "system-update-realm"
shards = rebase_path(
[ "//src/sys/pkg/bin/system-updater/meta/system_updater.system_update_shard.cml" ],
root_build_dir)
},
]
},
]
}
# This is exclusive to user builds on the minimal support level.
#
assembly_input_bundle("standard_user") {
base_packages = [
# memory_monitor with profiling disabled.
"//src/developer/memory/monitor:monitor_without_memory_sampler",
]
config_data = [
{
package_name = "cobalt"
files = [
{
source = "//src/cobalt/bin/app/configs/user_config.json"
destination = "config.json"
},
]
},
]
compiled_packages = [
{
name = "core"
component_shards = [
{
# All paths must be rebased since this is passed directly to the AIB
# config.
component_name = "core"
shards = rebase_path(
[ "//src/developer/memory/monitor/meta/memory_monitor.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# This is exclusive to userdebug builds on the minimal support level.
#
assembly_input_bundle("standard_userdebug") {
config_data = [
{
package_name = "cobalt"
files = [
{
source = "//src/cobalt/bin/app/configs/userdebug_config.json"
destination = "config.json"
},
]
},
{
package_name = "triage-detect"
files = [
{
source = "//src/diagnostics/detect/configs/enable-filing.json"
destination = "config.json"
},
{
source = "//src/diagnostics/detect/configs/netstack-detect.triage"
destination = "netstack-detect.triage"
},
{
source = "//src/diagnostics/detect/configs/cobalt-detect.triage"
destination = "cobalt-detect.triage"
},
]
},
{
package_name = "memory_monitor"
files = [
{
source = "//src/developer/memory/monitor/config/send_critical_pressure_crash_reports"
destination = "send_critical_pressure_crash_reports"
},
]
},
]
}
# This is common across all eng-mode products, at the minimal or higher service
# level.
#
assembly_input_bundle("standard_eng") {
testonly = true
base_packages = []
cache_packages = [
# Backend for ffx process command.
"//src/developer/process_explorer:process_explorer_package",
"//src/devices/bin/driver_playground:pkg",
"//src/power/metrics-logger:metrics-logger-pkg",
]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[
"//src/developer/process_explorer/meta/process_explorer.core_shard.cml",
"//src/devices/bin/driver_playground/meta/driver_playground.core_shard.cml",
"//src/performance/trace_manager/meta/trace_manager.core_shard.cml",
"//src/power/metrics-logger/meta/metrics-logger.core_shard.cml",
],
root_build_dir)
},
]
},
]
config_data = [
{
package_name = "cobalt"
files = [
{
source = "//src/cobalt/bin/app/configs/default_config.json"
destination = "config.json"
},
]
},
]
}
# This is common across all eng-mode and user-debug products, at the minimal or
# higher service level.
#
assembly_input_bundle("standard_userdebug_and_eng") {
base_packages = [
"//src/diagnostics/detect:triage-detect",
"//src/sys/pkg/bin/pkgctl",
"//src/sys/pkg/bin/update",
# memory_monitor with profiling enabled.
"//src/developer/memory/monitor:monitor_with_memory_sampler",
"//src/performance/memory/sampler:memory_sampler",
]
shell_commands = [
{
package = "pkgctl"
components = [ "pkgctl" ]
},
{
package = "update-bin"
components = [ "update" ]
},
]
compiled_packages = [
{
name = "diagnostics"
component_shards = [
{
component_name = "diagnostics"
shards = rebase_path(
[ "//src/diagnostics/detect/meta/detect.realm_shard.cml" ],
root_build_dir)
},
]
},
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[
"//src/diagnostics/detect/meta/detect.core_shard.cml",
"//src/developer/memory/monitor/meta/memory_monitor.core_shard.cml",
"//src/developer/memory/monitor/meta/memory_monitor_with_memory_sampler.core_shard.cml",
"//src/performance/memory/sampler/meta/memory_sampler.core_shard.cml",
],
root_build_dir)
},
]
},
]
}
########
#
# Feature- and Subsystem-specific AIBs
#
# These are optionally present in all products that include the `/core` realm
# (via the `:core_realm` AIB). Each should list which feature_set_level and
# build type that it is valid for.
# Input groups
#
# feature_set_levels: minimal
# build-types:all
#
# These AIBs are opaque groups of inputs that are common to many products, but
# have not been organized into specific features yet.
assembly_input_bundle("input_group_one") {
kernel_cmdline = [ "kernel.oom.behavior=reboot" ]
base_packages = [ "//src/sys/cache_manager" ]
}
assembly_input_bundle("input_group_two") {
kernel_cmdline = [ "kernel.render-dlog-to-crashlog=true" ]
flexible_packages = [
"//src/connectivity/location/emergency",
"//src/media/sessions:mediasession",
]
if (current_cpu != "riscv64") {
flexible_packages += [ "//src/media/codec:codec_factory" ]
}
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[
"//src/connectivity/location/emergency/meta/emergency.core_shard.cml",
"//src/media/codec/factory/meta/codec_factory.core_shard.cml",
"//src/media/sessions/meta/mediasession.core_shard.cml",
],
root_build_dir)
},
]
},
]
}
########
#
# Bluetooth Support
# Bluetooth profile support: A2DP
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("bluetooth_a2dp") {
flexible_packages = [ "//src/connectivity/bluetooth/profiles/bt-a2dp" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/connectivity/bluetooth/profiles/bt-a2dp/meta/bt-a2dp-eager.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Bluetooth profile support: AVRCP
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("bluetooth_avrcp") {
flexible_packages = [
"//src/connectivity/bluetooth/profiles/bt-avrcp",
"//src/connectivity/bluetooth/profiles/bt-avrcp-target",
]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/connectivity/bluetooth/profiles/bt-avrcp/meta/bt-avrcp.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Bluetooth core support
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("bluetooth_core") {
base_packages = [
"//src/connectivity/bluetooth/core/bt-gap",
"//src/connectivity/bluetooth/core/bt-host",
"//src/connectivity/bluetooth/core/bt-init",
"//src/connectivity/bluetooth/profiles/bt-rfcomm",
]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/connectivity/bluetooth/core/bt-init/meta/bt-init.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Bluetooth profile support: HFP - AG
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("bluetooth_hfp_ag") {
flexible_packages = [ "//src/connectivity/bluetooth/profiles/bt-hfp-audio-gateway:bt-hfp-audio-gateway-default" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/connectivity/bluetooth/profiles/bt-hfp-audio-gateway/meta/bt-hfp-audio-gateway.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Bluetooth snoop support
#
# feature_set_levels: minimal
# build-types: all
# This AIB provides packages for the Bluetooth snoop configuration which lazily starts. It is
# mutually exclusive with the `bluetooth_snoop_eager` AIB.
#
assembly_input_bundle("bluetooth_snoop_lazy") {
base_packages = [ "//src/connectivity/bluetooth/tools/bt-snoop" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/connectivity/bluetooth/tools/bt-snoop/meta/bt-snoop.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Bluetooth snoop support
#
# feature_set_levels: minimal
# build-types: all
# This AIB provides packages for the Bluetooth snoop configuration which eagerly starts at device
# boot. It is mutually exclusive with the `bluetooth_snoop_lazy` AIB.
#
assembly_input_bundle("bluetooth_snoop_eager") {
base_packages = [ "//src/connectivity/bluetooth/tools/bt-snoop" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/connectivity/bluetooth/tools/bt-snoop/meta/bt-snoop-eager.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Support for Pandora Bluetooth test interface server and virtual HCI with Rootcanal.
#
# feature_set_levels: standard
# build-types: eng
#
assembly_input_bundle("bluetooth_pandora") {
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[
"//src/connectivity/bluetooth/testing/pandora/bt-pandora-server/meta/bt-pandora-server.core_shard.cml",
"//src/connectivity/bluetooth/tools/bt-rootcanal/meta/bt-rootcanal.core_shard.cml",
],
root_build_dir)
},
]
},
]
}
#
# Diagnostics Triage Support
# Triage-detect support for magma arm mali devices
assembly_input_bundle("diagnostics_triage_detect_mali") {
config_data_labels = [ "//src/diagnostics/config/triage:mali-detect" ]
}
# Driver Framework Support
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("driver_framework") {
bootfs_packages = [
"//src/devices/bin/devfs:package",
"//src/devices/bin/driver_host:package",
"//src/devices/bin/driver_manager:package",
"//src/devices/bin/driver-index:package",
]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[ "//src/devices/bin/driver_framework/meta/driver_framework.bootstrap_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Full Package Driver Support
#
# feature_set_levels: minimal
# build-types: eng
#
assembly_input_bundle("full_package_drivers") {
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[ "//src/devices/bin/driver_framework/meta/full_package_drivers.bootstrap_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Core starnix support.
#
# optional: product must specify its inclusion
# valid feature_set_levels: minimal
# valid build-types: all
#
assembly_input_bundle("starnix_support") {
flexible_packages = [
"//src/starnix/runner:starnix_package",
"//src/starnix/kernel:starnix_kernel_package",
]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/starnix/runner/meta/starnix_runner.core_shard.cml" ],
root_build_dir)
},
]
},
]
bootfs_files_labels = [ "//src/starnix/config:bootfs" ]
}
# Core adb support. Does not include daemon. Daemon should be included separately.
#
# optional: product must specify its inclusion
# valid feature_set_levels: minimal
# valid build-types: all
#
assembly_input_bundle("adb_support") {
base_driver_packages = [
{
package_target = "//src/developer/adb/drivers/usb-adb-function:package"
driver_components = [ "meta/usb-adb-function.cm" ]
},
]
}
# This AIB enables testing support, and is meant to be used with either the
# `common_standard_eng` and `common_standard_userdebug` AIBs.
#
# This includes testing support in the platform `base` package set, not just
# via `universe`
assembly_input_bundle("testing_support") {
testonly = true
base_packages = [ "//src/performance/trace_manager" ]
bootfs_files_labels = [ "//src/tests/microbenchmarks/config:bootfs" ]
cache_packages = [
# test-manager and all of its runners:
"//src/sys/test_manager:pkg",
"//src/sys/test_runners/elf:elf-test-runner",
"//src/sys/test_runners/elf:elf-test-ambient-exec-runner",
"//src/sys/test_runners/elf:elf-test-create-raw-processes-runner",
"//src/sys/test_runners/elf:elf-test-create-raw-processes-ambient-exec-runner",
"//src/sys/test_runners/fuzz:fuzz-test-runner",
"//src/sys/test_runners/gotests:go-test-runner",
"//src/sys/test_runners/gtest:gtest-runner",
"//src/sys/test_runners/gunit:gunit-runner",
"//src/sys/test_runners/inspect:inspect-test-runner",
"//src/sys/test_runners/lib_loader_cache:lib_loader_runner_cache",
"//src/sys/test_runners/rust:rust-test-create-raw-processes-runner",
"//src/sys/test_runners/rust:rust-test-next-vdso-runner",
"//src/sys/test_runners/rust:rust-test-runner",
"//src/sys/test_runners/starnix:starnix-test-runners",
"//src/sys/test_runners/stress_test:stress-test-runner",
"//src/connectivity/network/testing/netemul/runner:package",
# required dependencies of test-manager
"//src/sys/testing:testing", # The test_realm component's package
"//src/lib/fuchsia-component-test/realm_builder_server:pkg",
"//src/sys/fuzzing:fuzz-manager",
"//src/sys/fuzzing:fuzz-registry",
"//src/sys/fuzzing/fuzzctl",
"//src/sys/run_test_suite",
# CPU profiler
"//src/performance/experimental/profiler",
]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[
"//src/performance/experimental/profiler/meta/profiler.core_shard.cml",
"//src/sys/test_manager/meta/test_manager.core_shard.cml",
"//src/sys/fuzzing/meta/fuzzing.core-shard.cml",
"//src/sys/testing/meta/test_realm.core_shard.cml",
],
root_build_dir)
},
]
},
]
shell_commands = [
{
package = "run_test_suite"
components = [ "run-test-suite" ]
},
{
package = "fuzzctl"
components = [ "fuzz_ctl" ]
},
]
}
# Basic camera support
#
assembly_input_bundle("camera") {
flexible_packages = [
"//src/camera/bin/device:camera_device",
"//src/camera/bin/device_watcher:camera_device_watcher",
]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path([ "//src/camera/meta/camera.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("factory_data") {
flexible_packages = [ "//src/factory/factory_store_providers" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/factory/factory_store_providers/meta/factory_store_providers.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# AIB containing bootfs resources needed by all fshost variants
#
# There are "pervasively routed" capability shards included here because there
# is currently no better mechanism for providing them to the fshost component itself.
#
# optional: product must specify its inclusion
# valid feature_set_levels: all
# valid build-types: all
#
assembly_input_bundle("fshost_common") {
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[ "//src/storage/fshost/meta/fshost.bootstrap_shard.cml" ],
root_build_dir)
},
]
},
{
bootfs_package = true
name = "fshost"
components = [
{
component_name = "fshost"
shards = rebase_path("//src/storage/fshost/meta/base_fshost.cml",
root_build_dir)
},
]
contents = [
{
label = "//src/storage/fshost"
source = "${root_out_dir}/fshost"
destination = "bin/fshost"
},
{
label = "//src/storage/lib/fs_management/cpp:fs-management($shlib_toolchain)"
source = "${root_out_dir}/${target_cpu}-shared/libfs-management.so"
destination = "lib/libfs-management.so"
},
{
label = "//sdk/lib/fdio($shlib_toolchain)"
source = "${root_out_dir}/${target_cpu}-shared/libfdio.so"
destination = "lib/libfdio.so"
},
{
label = "//third_party/boringssl:crypto-shared($shlib_toolchain)"
source = "${root_out_dir}/${target_cpu}-shared/libcrypto.so"
destination = "lib/libcrypto.so"
},
{
label = "//third_party/boringssl:ssl-shared($shlib_toolchain)"
source = "${root_out_dir}/${target_cpu}-shared/libssl.so"
destination = "lib/libssl.so"
},
{
label = "//zircon/system/ulib/trace-engine($shlib_toolchain)"
source = "${root_out_dir}/${target_cpu}-shared/libtrace-engine.so"
destination = "lib/libtrace-engine.so"
},
{
label = "//src/security/lib/tee/tee-client-api($shlib_toolchain)"
source = "${root_out_dir}/${target_cpu}-shared/libtee-client-api.so"
destination = "lib/libtee-client-api.so"
},
{
label = "//zircon/system/ulib/c:libc_fshost"
source = system_libc_stripped
destination = "lib/ld.so.1"
},
{
label = "//build/toolchain/runtime:shared-libc++-deps"
source =
"${clang_prefix}/../lib/${clang_cpu}-unknown-fuchsia/libc++.so.2"
destination = "lib/libc++.so.2"
},
{
label = "//build/toolchain/runtime:shared-libc++-deps"
source = "${clang_prefix}/../lib/${clang_cpu}-unknown-fuchsia/libc++abi.so.1"
destination = "lib/libc++abi.so.1"
},
{
label = "//build/toolchain/runtime:shared-libc++-deps"
source = "${clang_prefix}/../lib/${clang_cpu}-unknown-fuchsia/libunwind.so.1"
destination = "lib/libunwind.so.1"
},
]
component_includes = [
{
source =
rebase_path("//sdk/lib/inspect/client.shard.cml", root_build_dir)
destination = "inspect/client.shard.cml"
},
{
source =
rebase_path("//sdk/lib/inspect/offer.shard.cml", root_build_dir)
destination = "inspect/offer.shard.cml"
},
{
source =
rebase_path("//sdk/lib/inspect/use.shard.cml", root_build_dir)
destination = "inspect/use.shard.cml"
},
{
source =
rebase_path("//sdk/lib/syslog/client.shard.cml", root_build_dir)
destination = "syslog/client.shard.cml"
},
{
source =
rebase_path("//sdk/lib/syslog/offer.shard.cml", root_build_dir)
destination = "syslog/offer.shard.cml"
},
{
source = rebase_path("//sdk/lib/syslog/use.shard.cml", root_build_dir)
destination = "syslog/use.shard.cml"
},
]
},
{
name = "fshost"
component_shards = [
{
component_name = "fshost"
shards =
rebase_path([
"//src/storage/lib/fs_management/client.shard.cml",
"//src/storage/fshost/meta/config.cml",
],
root_build_dir)
},
]
},
]
}
# AIB adding support for storage, needed by all fshost variants that use anything more than bootfs
#
# optional: product must specify its inclusion
# valid feature_set_levels: all
# valid build-types: all
#
assembly_input_bundle("fshost_storage") {
compiled_packages = [
{
name = "fshost"
component_shards = [
{
component_name = "fshost"
shards = rebase_path([ "//src/storage/fshost/meta/core_fshost.cml" ],
root_build_dir)
},
]
},
]
bootfs_packages = [ "//src/storage/memfs:package" ]
}
# AIB containing the fshost with fxfs.
#
# optional: product must specify its inclusion
# valid feature_set_levels: all
# valid build-types: all
#
assembly_input_bundle("fshost_fxfs") {
compiled_packages = [
{
name = "fshost"
component_shards = [
{
component_name = "fshost"
shards = rebase_path(
[
"//src/storage/fshost/meta/fxfs_blob_fshost.cml",
"//src/storage/fshost/meta/fxfs_blob_fshost_base.shard.cml",
],
root_build_dir)
},
]
},
]
bootfs_packages = [
"//src/storage/fxfs:package",
"//src/storage/fxfs-crypt:package",
]
}
# AIB containing fshost with an fvm and blobfs only.
#
# optional: product must specify its inclusion
# valid feature_set_levels: all
# valid build-types: all
#
assembly_input_bundle("fshost_fvm") {
compiled_packages = [
{
name = "fshost"
component_shards = [
{
component_name = "fshost"
shards = rebase_path(
[
"//src/storage/fshost/meta/blobfs_fshost.cml",
"//src/storage/fshost/meta/blobfs_fshost_base.shard.cml",
],
root_build_dir)
},
]
},
]
bootfs_packages = [ "//src/storage/blobfs/bin:package" ]
}
# AIB containing fshost with an fvm and fxfs to hold the data.
#
# optional: product must specify its inclusion
# valid feature_set_levels: all
# valid build-types: all
#
assembly_input_bundle("fshost_fvm_fxfs") {
compiled_packages = [
{
name = "fshost"
component_shards = [
{
component_name = "fshost"
shards = rebase_path(
[
"//src/storage/fshost/meta/fxfs_fshost.cml",
"//src/storage/fshost/meta/fxfs_fshost_base.shard.cml",
],
root_build_dir)
},
]
},
]
bootfs_packages = [
"//src/storage/fxfs:package",
"//src/storage/fxfs-crypt:package",
]
}
# AIB containing fshost support for minfs. Not compatible with fxfs.
#
# optional: product must specify its inclusion
# valid feature_set_levels: all
# valid build-types: all
#
assembly_input_bundle("fshost_fvm_minfs") {
compiled_packages = [
{
name = "fshost"
component_shards = [
{
component_name = "fshost"
shards = rebase_path(
[
"//src/storage/fshost/meta/minfs_fshost.cml",
"//src/storage/fshost/meta/minfs_fshost_base.shard.cml",
"//src/storage/fshost/meta/non_fxfs_fshost.cml",
],
root_build_dir)
},
]
},
]
bootfs_packages = [ "//src/storage/minfs/bin:package" ]
}
# AIB containing fshost support for minfs-to-fxfs migration.
# Should be included with fshost_fxfs_fxblob or fshost_fxfs when migration
# is necessary.
#
# optional: product must specify its inclusion
# valid feature_set_levels: all
# valid build-types: all
# requires: one of fshost_fxfs*
#
assembly_input_bundle("fshost_fvm_minfs_migration") {
compiled_packages = [
{
name = "fshost"
component_shards = [
{
component_name = "fshost"
shards = rebase_path(
[
"//src/storage/fshost/meta/minfs_fshost.cml",
"//src/storage/fshost/meta/minfs_fshost_base.shard.cml",
"//src/storage/fshost/meta/fxfs_fshost.cml",
"//src/storage/fshost/meta/fxfs_fshost_base.shard.cml",
],
root_build_dir)
},
]
},
]
bootfs_packages = [
"//src/storage/fxfs:package",
"//src/storage/fxfs-crypt:package",
"//src/storage/minfs/bin:package",
]
}
# AIB containing fshost support for f2fs
#
# optional: product must specify its inclusion
# valid feature_set_levels: all
# valid build-types: all
#
assembly_input_bundle("fshost_fvm_f2fs") {
compiled_packages = [
{
name = "fshost"
component_shards = [
{
component_name = "fshost"
shards = rebase_path(
[
"//src/storage/fshost/meta/f2fs_fshost.cml",
"//src/storage/fshost/meta/f2fs_fshost_base.shard.cml",
"//src/storage/fshost/meta/non_fxfs_fshost.cml",
],
root_build_dir)
},
]
},
]
bootfs_packages = [ "//src/storage/f2fs/bin:package" ]
}
assembly_input_bundle("system_update_checker") {
testonly = true
base_packages = [ "//src/sys/pkg/bin/system-update-checker" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/sys/pkg/bin/system-update-checker/meta/system_update_checker.core_shard.cml" ],
root_build_dir)
},
]
},
{
name = "system-update-realm"
component_shards = [
{
component_name = "system-update-realm"
shards = rebase_path(
[ "//src/sys/pkg/bin/system-update-checker/meta/system_update_checker.system_update_shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("omaha_client") {
base_packages = [ "//src/sys/pkg/bin/omaha-client:omaha-client-unconfigured" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/sys/pkg/bin/omaha-client/meta/omaha_client_service.core_shard.cml" ],
root_build_dir)
},
]
},
{
name = "system-update-realm"
component_shards = [
{
component_name = "system-update-realm"
shards = rebase_path(
[ "//src/sys/pkg/bin/omaha-client/meta/omaha_client_service.system_update_shard.cml" ],
root_build_dir)
},
]
},
]
config_data = [
{
package_name = "triage-detect"
files = [
{
source = "//src/diagnostics/config/triage/detect/omaha-client-detect.triage"
destination = "omaha-client-detect.triage"
},
]
},
]
}
assembly_input_bundle("omaha_client_empty_eager_config") {
config_data = [
{
package_name = "omaha-client"
label = "//src/sys/pkg/bin/omaha-client:empty_eager_package_config_eager_package_config_script"
files = [
{
source = "$root_build_dir/gen/src/sys/pkg/bin/omaha-client/empty_eager_package_config/omaha_client/eager_package_config.json"
destination = "eager_package_config.json"
},
]
},
{
package_name = "pkg-resolver"
label = "//src/sys/pkg/bin/omaha-client:empty_eager_package_config_eager_package_config_script"
files = [
{
source = "$root_build_dir/gen/src/sys/pkg/bin/omaha-client/empty_eager_package_config/pkg_resolver/eager_package_config.json"
destination = "eager_package_config.json"
},
]
},
]
}
# Used on builds that do not include an update checker, i.e. neither system_update_checker nor omaha_client.
# This is needed to expose the update protocols from `void` in #system-update.
assembly_input_bundle("no_update_checker") {
compiled_packages = [
{
name = "system-update-realm"
component_shards = [
{
component_name = "system-update-realm"
shards = rebase_path(
[ "//src/sys/pkg/meta/no_update_checker.system_update_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Include the system-update-configurator component as part of the SWD subsystem.
assembly_input_bundle("system_update_configurator") {
base_packages = [ "//src/sys/pkg/bin/system-update-configurator" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/sys/pkg/bin/system-update-configurator/meta/core-shard.cml" ],
root_build_dir)
},
]
},
{
name = "system-update-realm"
component_shards = [
{
component_name = "system-update-realm"
shards = rebase_path(
[ "//src/sys/pkg/bin/system-update-configurator/meta/system-update-shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("pkgfs_disable_executability_restrictions") {
system_packages =
[ "//src/sys/pkg/bin/pkg-cache:disable-executability-restrictions" ]
}
# AIB to enable virtualization support.
#
# optional: product must specify its inclusion
# valid feature_set_levels: minimal
# valid build-types: all
#
assembly_input_bundle("virtualization_support") {
# TODO(https://fxbug.dev/42079015): Move to the list above once build errors are resolved.
if (current_cpu != "riscv64") {
base_packages = [ "//src/virtualization/bin/vmm_launcher" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[
"//src/connectivity/network/meta/virtualization.core_shard.cml",
"//src/virtualization/bin/vmm_launcher/meta/vmm_launcher.core_shard.cml",
"//src/virtualization/bin/guest_manager/meta/debian_guest_manager.core_shard.cml",
"//src/virtualization/bin/guest_manager/meta/termina_guest_manager.core_shard.cml",
"//src/virtualization/bin/guest_manager/meta/zircon_guest_manager.core_shard.cml",
],
root_build_dir)
},
]
},
]
}
}
# AIB to enable running Fuchsia as a virtualized guest.
#
# optional: product must specify its inclusion
# valid feature_set_levels: minimal
# valid build-types: all
#
assembly_input_bundle("paravirtualization_support") {
base_packages = [ "//src/zircon/bin/vsock_service:vsock_service" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/zircon/bin/vsock_service/meta/vsock_service.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("paravirtualization_support_bootstrap") {
bootfs_packages = [ "//src/zircon/bin/vsock_service:vsock_service" ]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path(
[ "//src/zircon/bin/vsock_service/meta/vsock_service.bootstrap_shard.cml" ],
root_build_dir)
},
]
},
]
}
# AIB to include Netstack2 as the netstack for use by base networking.
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("netstack2") {
# The Go toolchain used for netstack2 does not support RISC-V.
if (current_cpu != "riscv64") {
base_packages = [ "//src/connectivity/network:netstack2" ]
compiled_packages = [
{
name = "network"
component_shards = [
{
component_name = "network"
shards = rebase_path(
[ "//src/connectivity/network/meta/netstack2.shard.cml" ],
root_build_dir)
},
]
},
]
}
}
# Netstack3 as the netstack for use by base networking.
#
# feature_set_levels: minimal
# build-types: all
#
# To be used in conjunction with netstack3_packages or netstack3_packages_gub.
#
assembly_input_bundle("netstack3") {
compiled_packages = [
{
name = "network"
component_shards = [
{
component_name = "network"
shards = rebase_path(
[ "//src/connectivity/network/meta/netstack3.shard.cml" ],
root_build_dir)
},
]
},
]
}
# Netstack3 packages without unified binary.
#
# This AIB provides packages for the netstack3 configuration. It is mutually
# exclusive with netstack3_packages_gub.
assembly_input_bundle("netstack3_packages") {
base_packages = [ "//src/connectivity/network:netstack3" ]
}
# Netstack3 packages without unified binary.
#
# This AIB provides space-saving equivalent packages for the netstack3
# configuration as found in netstack3_packages. It is mutually exclusive with
# netstack3_packages.
assembly_input_bundle("netstack3_packages_gub") {
base_packages = [ "//src/connectivity/network:netstack3_gub" ]
}
# Netstack-migration as the netstack for use by base networking.
#
# feature_set_levels: minimal
# build-types: all
#
# Must be used in conjunction with netstack_migration_packages or
# netstack_migration_packages_gub.
assembly_input_bundle("netstack_migration") {
# The Go toolchain used for netstack2 does not support RISC-V and
# netstack_migration contains netstack2.
if (current_cpu != "riscv64") {
compiled_packages = [
{
name = "network"
component_shards = [
{
component_name = "network"
shards = rebase_path(
[ "//src/connectivity/network/meta/netstack-migration.shard.cml" ],
root_build_dir)
},
]
},
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/connectivity/network/meta/netstack-migration.core.shard.cml" ],
root_build_dir)
},
]
},
]
}
}
# Netstack migration packages without unified binary.
#
# This AIB provides packages for the netstack_migration configuration. It is
# mutually exclusive with netstack_migration_packages_gub.
assembly_input_bundle("netstack_migration_packages") {
if (current_cpu != "riscv64") {
base_packages = [ "//src/connectivity/network:netstack-migration" ]
}
}
# Netstack migration packages with unified binary.
#
# This AIB provides packages for the netstack_migration configuration. It is
# mutually exclusive with netstack_migration_packages.
assembly_input_bundle("netstack_migration_packages_gub") {
if (current_cpu != "riscv64") {
base_packages = [ "//src/connectivity/network:netstack-migration_gub" ]
}
}
# Includes network-tun functionality.
assembly_input_bundle("network_tun") {
flexible_packages = [ "//src/connectivity/network/tun/network-tun" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/connectivity/network/tun/network-tun/meta/network-tun.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Includes thread LoWPAN functionality.
assembly_input_bundle("thread_lowpan") {
base_packages = [
"//src/connectivity/lowpan/drivers/lowpan-ot-driver",
"//src/connectivity/lowpan/service:lowpanservice",
]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[
"//src/connectivity/lowpan/service/meta/lowpanservice.core_shard.cml",
"//src/connectivity/lowpan/drivers/lowpan-ot-driver/meta/lowpan-ot-driver.core_shard.cml",
],
root_build_dir)
},
]
},
]
}
# WLAN policy component
#
# feature_set_levels: utility, minimal
# build-types: all
#
# Not included in utility + user by default, but otherwise is included.
assembly_input_bundle("wlan_policy") {
base_packages = [
"//src/connectivity/location/regulatory_region",
"//src/connectivity/wlan/wlancfg",
]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/connectivity/wlan/wlancfg/meta/wlancfg.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# WLAN development support
#
# feature_set_levels: utility, minimal
# build-types: eng, userdebug
#
assembly_input_bundle("wlan_development") {
base_packages = [ "//src/connectivity/wlan/tools/wlantool:wlan-dev" ]
shell_commands = [
{
package = "wlan"
components = [ "wlan-dev" ]
},
]
}
# WLAN support for WEP and WPA
#
# feature_set_levels: utility, minimal
# build-types: all
#
# Not included in utility + user by default, but otherwise is included.
assembly_input_bundle("wlan_legacy_privacy_support") {
base_packages = [ "//src/connectivity/wlan/wlandevicemonitor:wlandevicemonitor-legacy-privacy" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/connectivity/wlan/wlandevicemonitor/meta/wlandevicemonitor.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# WLAN support for WPA2 and later
#
# feature_set_levels: utility, minimal
# build-types: all
#
# Not included in utility + user by default, but otherwise is included.
assembly_input_bundle("wlan_contemporary_privacy_only_support") {
base_packages =
[ "//src/connectivity/wlan/wlandevicemonitor:wlandevicemonitor" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/connectivity/wlan/wlandevicemonitor/meta/wlandevicemonitor.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# WLAN support for drivers that provide their own MAC
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("wlan_fullmac_support") {
base_driver_packages = [
{
package_target = "//src/connectivity/wlan/drivers/wlanif"
driver_components = [ "meta/wlanif.cm" ]
},
]
}
# WLAN support for drivers that utilize a software MAC
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("wlan_softmac_support") {
base_driver_packages = [
{
package_target = "//src/connectivity/wlan/drivers/wlansoftmac"
driver_components = [ "meta/wlansoftmac.cm" ]
},
]
}
# WLAN support for interfacing with starnix.
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("wlan_wlanix") {
base_packages = [ "//src/connectivity/wlan/wlanix" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/connectivity/wlan/wlanix/meta/wlanix.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Support for interactive debugging/development of platform audio
#
# feature_set_levels: minimal
# build-types: eng
#
assembly_input_bundle("audio_development_support") {
base_driver_packages = [
{
package_target = "//src/media/audio/drivers/virtual_audio"
driver_components = [ "meta/virtual_audio_driver.cm" ]
},
]
cache_packages = [
"//src/media/audio/services/ffxdaemon:audio_ffx_daemon",
"//src/media/audio/tools/audio-capture-timestamp-validator",
"//src/media/audio/tools/audio-codec-ctl",
"//src/media/audio/tools/audio-effects-ctl",
"//src/media/audio/tools/audio_listener",
"//src/media/audio/tools/dsputil",
"//src/media/audio/tools/signal_generator",
"//src/media/audio/tools/virtual_audio_util",
"//src/media/audio/tools/vol",
"//src/media/audio/tools/wav_player",
"//src/media/audio/tools/wav_recorder",
]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/media/audio/services/ffxdaemon/meta/audio_ffx_daemon.core_shard.cml" ],
root_build_dir)
},
]
},
]
# From //src/media/audio/tools.
# audio-driver-ctl is included in bootfs, not here.
shell_commands = [
{
package = "audio-capture-timestamp-validator"
components = [ "audio-capture-timestamp-validator" ]
},
{
package = "audio-codec-ctl"
components = [ "audio-codec-ctl" ]
},
{
package = "audio-effects-ctl"
components = [ "audio-effects-ctl" ]
},
{
package = "audio_listener"
components = [ "audio_listener" ]
},
{
package = "dsputil"
components = [ "dsputil" ]
},
{
package = "signal_generator"
components = [ "signal_generator" ]
},
{
package = "virtual_audio_util"
components = [ "virtual_audio" ]
},
{
package = "vol"
components = [ "vol" ]
},
{
package = "wav_player"
components = [ "wav_player" ]
},
{
package = "wav_recorder"
components = [ "wav_recorder" ]
},
]
}
assembly_input_bundle("video_development_support") {
testonly = true
cache_packages = [ "//src/media/codec/examples:encode-file" ]
shell_commands = [
{
package = "encode-file"
components = [ "encode-file" ]
},
]
}
# Component that routes audio on Smart Displays
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("audio_core") {
base_packages = [ "//src/media/audio/audio_core" ]
}
assembly_input_bundle("audio_core_routing") {
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/media/audio/audio_core/meta/audio_core.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("audio_core_use_adc_device") {
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/media/audio/audio_core/meta/audio_core.core_shard.use_adc_device.cml" ],
root_build_dir)
},
]
},
]
}
# Component that manages platform audio devices
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("audio_device_registry") {
flexible_packages = [ "//src/media/audio/services/device_registry" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/media/audio/services/device_registry/meta/audio_device_registry.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Component that plays audio files using audio_core protocols.
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("soundplayer") {
flexible_packages = [ "//src/media/sounds/soundplayer" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/media/sounds/soundplayer/meta/soundplayer.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("live_usb") {
bootfs_packages = [ "//src/sys/live_usb:package" ]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path([ "//src/sys/live_usb/meta/live-usb.shard.cml" ],
root_build_dir)
},
]
},
]
}
# Session manager support
#
# feature_set_levels: minimal
# build-types: all
assembly_input_bundle("session_manager") {
base_packages = [ "//src/session/bin/session_manager" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
# All paths must be rebased since this is passed directly to the AIB
# config.
component_name = "core"
shards = rebase_path(
[ "//src/session/bin/session_manager/meta/session_manager.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Element manager support
#
# feature_set_levels: minimal
# build-types: all
assembly_input_bundle("element_manager") {
flexible_packages = [ "//src/session/bin/element_manager" ]
}
# UI support
#
# feature_set_levels: minimal
# build-types: all
#
assembly_input_bundle("ui") {
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards =
rebase_path([ "//src/ui/meta/ui.core_shard.cml" ], root_build_dir)
},
]
},
]
}
# UI support for eng build types
#
# feature_set_levels: minimal
# build-types: eng
#
icu_assembly_input_bundle("ui_eng") {
icu_cache_packages = [
"//src/ui/a11y/bin/a11y_manager:a11y-manager",
"//src/ui/bin/scene_manager:scene_manager",
]
cache_packages = [
"//src/graphics/display/bin/coordinator-connector",
"//src/ui/bin/text:text_manager",
"//src/ui/scenic:scenic_pkg",
"//src/ui/bin/virtual_keyboard_manager",
]
}
# UI support for user and userdebug build types
#
# feature_set_levels: minimal
# build-types: user, userdebug
#
icu_assembly_input_bundle("ui_user_and_userdebug") {
icu_base_packages = [
"//src/ui/a11y/bin/a11y_manager:a11y-manager",
"//src/ui/bin/scene_manager:scene_manager",
]
base_packages = [
"//src/graphics/display/bin/coordinator-connector",
"//src/ui/bin/text:text_manager",
"//src/ui/scenic:scenic_pkg",
"//src/ui/bin/virtual_keyboard_manager",
]
}
# UI support for eng build types
#
# feature_set_levels: minimal
# build-types: eng
#
assembly_input_bundle("ui_package_eng") {
cache_packages = [ "//src/ui:ui_package" ]
}
# UI support for user and userdebug build types
#
# feature_set_levels: minimal
# build-types: user, userdebug
#
assembly_input_bundle("ui_package_user_and_userdebug") {
base_packages = [ "//src/ui:ui_package" ]
}
# UI support for builds wants synthetic device support
#
# Use PlatformUiConfig.with_synthetic_device_support to select this bundle
# over ui_package_eng / ui_package_user_and_userdebug.
#
# feature_set_levels: minimal
# build-types: eng, userdebug
#
assembly_input_bundle(
"ui_package_eng_userdebug_with_synthetic_device_support") {
flexible_packages = [ "//src/ui:ui_with_synthetic_device_support_package" ]
}
# Fan support
#
# feature_set_levels: utility, minimal
# build-types: all
#
assembly_input_bundle("fan") {
base_packages = [ "//src/devices/thermal/bin/fan-controller" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/devices/thermal/bin/fan-controller/meta/fan-controller.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Battery support
#
# feature_set_levels: utility, minimal
# build-types: all
#
assembly_input_bundle("battery_manager") {
base_packages = [ "//src/power/battery-manager" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/power/battery-manager/meta/battery_manager.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Power metrics recorder support
#
# feature_set_levels: minimal
# build-types: all
assembly_input_bundle("power_metrics_recorder") {
base_packages = [ "//src/power/metrics-logger:metrics-logger-standalone-pkg" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/power/metrics-logger/meta/metrics-logger-standalone.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Sensors support
#
# features_set_levels: utility, minimal
# build-types: all
#
assembly_input_bundle("sensors_framework") {
base_packages = [ "//src/sensors" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path([ "//src/sensors/meta/sensors.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Sensor playback support.
#
# features_set_levels: utility, minimal
# build-types: eng
#
assembly_input_bundle("sensors_playback") {
base_packages = [ "//src/sensors/playback:sensors_playback" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/sensors/playback/meta/sensors_playback.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Brightness Manager support
#
# features_set_levels: minimal
# build-types: all
#
assembly_input_bundle("brightness_manager") {
flexible_packages =
[ "//src/ui/bin/brightness_manager:brightness_manager_pkg" ]
}
# Legacy Power Framework support. Avoids including more modern power framework components.
#
# feature_set_levels: utility, minimal
# build-types: eng
#
assembly_input_bundle("legacy_power_framework") {
bootfs_packages = [
"//src/power/power-manager:package",
"//src/power/cpu-manager:package",
]
compiled_packages = [
{
name = "bootstrap"
component_shards = [
{
component_name = "bootstrap"
shards = rebase_path([ "//src/power/meta/power-framework.shard.cml" ],
root_build_dir)
},
]
},
]
}
assembly_input_bundle("power_framework") {
bootfs_packages = [
"//src/power/broker:package",
"//src/power/system-activity-governor:package",
]
base_packages = [ "//src/devices/hrtimer/bin:hrtimer-ctl" ]
# When power framework becomes available on user builds,
# this tool should be moved to core_realm_development_access
shell_commands = [
{
package = "hrtimer-ctl"
components = [ "hrtimer-ctl" ]
},
]
}
# Example assembly input bundle for testing
#
# Restricted for testing assembly itself (and to provide example code)
#
assembly_input_bundle("example_assembly_bundle") {
testonly = true
compiled_packages = [
# Main definition for another package
{
name = "for-test"
# Test that multiple components work
components = [
{
component_name = "bar"
shards = rebase_path(
"//src/tests/assembly/assemble_image/compiled_package/meta/test.cml",
root_build_dir)
},
{
component_name = "baz"
shards = rebase_path(
"//src/tests/assembly/assemble_image/compiled_package/meta/test.cml",
root_build_dir)
},
]
# Test that component includes for bootfs packages work
component_includes = [
{
source = rebase_path(
"//src/tests/assembly/assemble_image/compiled_package/meta/test.include.cml",
root_build_dir)
destination = "test/include.cml"
},
]
},
{
name = "for-test2"
components = [
{
component_name = "qux"
shards = rebase_path(
"//src/tests/assembly/assemble_image/compiled_package/meta/test.cml",
root_build_dir)
},
]
# Test that component includes for bootfs packages work
component_includes = [
{
source = rebase_path(
"//src/tests/assembly/assemble_image/compiled_package/meta/test.include.cml",
root_build_dir)
destination = "test/include.cml"
},
]
# Test that bootfs packages work
bootfs_package = true
},
# Add a shard to the `core` package which should have a main definition
# in the legacy bundle
{
name = "core"
component_shards = [
{
# All paths must be rebased since this is passed directly to the AIB
# config.
component_name = "core"
shards = rebase_path(
[ "//src/tests/assembly/assemble_image/compiled_package/meta/test.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
########
#
# Hardware Support AIBs
#
# These are used to provide support for specific hardware
# Emulator Support
#
# This is the "emulator support" bundle, which provides the kernel that can be
# booted by an emulator, and which knows how to then boot the Fuchsia kernel
# itself (Zircon).
#
assembly_input_bundle("emulator_support") {
qemu_kernel = qemu_boot_shim.path
deps = qemu_boot_shim.deps
}
# Assembly may select at most one bundle with `intl_services` name prefix.
icu_assembly_input_bundle("intl_services") {
icu_base_packages = [ "//src/intl/intl_services:pkg" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/intl/intl_services/meta/intl.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Assembly may select at most one bundle with `intl_services` name prefix.
icu_assembly_input_bundle("intl_services_small") {
icu_base_packages = [ "//src/intl/intl_services:pkg_small" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[
"//src/intl/intl_services/meta/intl_small_timezones.core_shard.cml",
"//src/intl/intl_services/meta/intl_small.core_shard.cml",
],
root_build_dir)
},
]
},
]
}
# Assembly may select at most one bundle with `intl_services` name prefix.
icu_assembly_input_bundle("intl_services_small_with_timezone") {
icu_base_packages = [
"//src/intl/intl_services:pkg_small",
"//src/intl/time_zone_info_service:pkg",
]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[
"//src/intl/intl_services/meta/intl_small.core_shard.cml",
"//src/intl/time_zone_info_service/meta/time-zone-info-service.core_shard.cml",
],
root_build_dir)
},
]
},
]
}
icu_assembly_input_bundle("setui") {
icu_base_packages = [ "//src/settings/service:setui_service" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/settings/service/meta/setui_service.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
icu_assembly_input_bundle("setui_with_camera") {
icu_base_packages = [ "//src/settings/service:setui_service" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/settings/service/meta/setui_service_with_camera.core_shard.cml" ],
root_build_dir)
},
]
},
]
}
# Legacy fonts setup: fonts sourced from config-data.
assembly_input_bundle("fonts") {
base_packages = [ "//src/fonts:pkg" ]
}
# Hermetic fonts setup: fonts sourced from a component.
assembly_input_bundle("fonts_hermetic") {
base_packages = [
"//src/fonts/asset_providers:server.package",
"//src/fonts/asset_providers:provider.package",
]
}
# Static resources files to make available to product assembly subsystems.
assembly_resources_directory("resources") {
sources = [
"//src/developer/memory/buckets/buckets.json",
"//src/sys/core/core_component_id_index.json5",
# Platform configs for the component_manager config.
"//src/security/policy/component_manager_policy.json5",
"//src/security/policy/component_manager_policy_base.json5",
"//src/security/policy/component_manager_policy_build_type_base.json5",
"//src/security/policy/component_manager_policy_eng.json5",
"//src/security/policy/component_manager_policy_user.json5",
"//src/security/policy/component_manager_policy_userdebug.json5",
"//src/security/policy/subsystems/component_manager_policy_starnix.json5",
"//src/sys/component_manager/configs/bootfs_config.json5",
# Networking resources.
"//src/connectivity/policy/netcfg/config/netcfg_default.json",
# ICU resources.
"${icu_tzres_path}/metaZones.res",
"${icu_tzres_path}/timezoneTypes.res",
"${icu_tzres_path}/zoneinfo64.res",
"${root_gen_dir}/src/lib/icu/tzdata/revision.txt",
# Core shard templates.
"//src/connectivity/weave/meta/weavestack.core_shard.cml.template",
"//src/developer/forensics/flash_ts_feedback_id/meta/flash_ts_feedback_id.core_shard.cml.template",
"//src/media/audio/meta/multizone_leader.core_shard.cml.template",
"//src/media/audio/meta/multizone_leader.core_shard_eng.cml",
]
deps = [ "//src/lib/icu/tzdata:revision" ]
}
# Enables in kernel compression of anonymous memory with some common configuration options.
assembly_input_bundle("kernel_anonymous_memory_compression") {
kernel_cmdline = [
"kernel.compression.strategy=lz4",
"kernel.compression.storage-strategy=tri_page",
"kernel.compression.reclaim_anonymous=true",
"kernel.compression.reclaim_zero_forks=true",
"kernel.compression.at_memory_pressure=true",
]
}
# Enables in kernel contiguous physical pages with some common configuration options.
assembly_input_bundle("kernel_contiguous_physical_pages") {
# Physical page loaning and borrowing.
#
# "k ppb stats" (see also "k ppb help") can be used to check whether the
# vast majority of loaned pages are absorbed by using them for pager-backed
# VMOs when running a relevant workload (not just mostly idle), or if some
# loaned pages remain stranded even as the system approaches OOM. As long as
# loaned free pages hits a low fraction of this value before any overall
# OOM, pages aren't being stranded when it really matters.
kernel_cmdline = [
"kernel.ppb.loan=true",
"kernel.ppb.borrow-in-supplypages=true",
"kernel.ppb.borrow-on-mru=true",
"kernel.ppb.replace-on-unloan=true",
]
}
# Extends compression to happen eagerly as part of queue rotation, only has meaning if
# "kernel_compression" is also included.
assembly_input_bundle("kernel_anonymous_memory_compression_eager_lru") {
kernel_cmdline = [ "kernel.page-scanner.lru-action=compress_only" ]
}
# Performs eviction continuously while under memory pressure instead of only once when the pressure
# level changes.
assembly_input_bundle("kernel_evict_continuous") {
kernel_cmdline = [ "kernel.oom.evict-continuous=true" ]
}
# Assembly selects whether to include this AIB or not.
assembly_input_bundle("zoneinfo") {
base_packages = [ "//src/intl/tzdata_provider:zoneinfo_provider_pkg" ]
compiled_packages = [
{
name = "core"
component_shards = [
{
component_name = "core"
shards = rebase_path(
[ "//src/intl/tzdata_provider/meta/zoneinfo_provider.core_shard.cml" ],
root_build_dir)
},
]
},
]
}