blob: 7d36514c5d4766cd6765dfd1e452728034f83625 [file] [log] [blame]
// Copyright 2021 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.
// Realm that acts as a container for general system components.
{
include: [
"inspect/offer.shard.cml",
"syslog/offer.shard.cml",
],
children: [
{
name: "sl4f_bridge_server",
url: "fuchsia-pkg://fuchsia.com/sl4f-ffx-proxy-server#meta/sl4f_proxy_server.cm",
environment: "#core-env",
},
{
name: "session-manager",
url: "fuchsia-pkg://fuchsia.com/session_manager#meta/session_manager.cm",
startup: "eager",
environment: "#session-env",
},
// TODO(https://fxbug.dev/42074694) Remove comment when this transformation is complete.
// This is the future home of system update-related components.
{
name: "system-update",
url: "fuchsia-pkg://fuchsia.com/system-update-realm#meta/system-update-realm.cm",
startup: "eager",
},
{
name: "mdns",
url: "fuchsia-pkg://fuchsia.com/mdns#meta/mdns.cm",
// TODO(https://fxbug.dev/42175335): consider removing eager startup in non-eng builds.
startup: "eager",
},
{
name: "cobalt_system_metrics",
url: "fuchsia-pkg://fuchsia.com/cobalt_system_metrics#meta/cobalt_system_metrics.cm",
startup: "eager",
},
{
name: "timekeeper",
url: "fuchsia-pkg://fuchsia.com/timekeeper#meta/timekeeper.cm",
startup: "eager",
},
// Children below this line may be present on some but not all product configurations.
// Children above this line are expected to be present on all configs that include
// core.cml.
//
// TODO(https://fxbug.dev/42161411): If any of the components below are product-specific, move them
// to core realm shards.
{
name: "activity",
url: "fuchsia-pkg://fuchsia.com/activity#meta/activity.cm",
},
{
name: "brightness_manager",
url: "fuchsia-pkg://fuchsia.com/brightness_manager#meta/brightness_manager.cm",
environment: "#core-env",
},
{
name: "cobalt",
url: "fuchsia-pkg://fuchsia.com/cobalt#meta/cobalt.cm",
},
// TODO(https://fxbug.dev/294908023) move to the relevant core shard
{
name: "starnix_runner",
url: "fuchsia-pkg://fuchsia.com/starnix#meta/starnix_runner.cm",
environment: "#core-env",
},
{
name: "stash",
url: "fuchsia-pkg://fuchsia.com/stash#meta/stash.cm",
},
{
name: "stash2",
url: "fuchsia-pkg://fuchsia.com/stash#meta/stash2.cm",
},
{
name: "stash_secure",
url: "fuchsia-pkg://fuchsia.com/stash#meta/stash_secure.cm",
},
{
name: "regulatory_region",
url: "fuchsia-pkg://fuchsia.com/regulatory_region#meta/regulatory_region.cm",
},
{
name: "font_provider",
url: "fuchsia-pkg://fuchsia.com/fonts#meta/fonts.cm",
},
{
name: "pkg-resolver",
url: "fuchsia-pkg://fuchsia.com/pkg-resolver#meta/pkg-resolver.cm",
},
{
name: "vulkan_loader",
url: "fuchsia-pkg://fuchsia.com/vulkan_loader#meta/vulkan_loader.cm",
environment: "#core-env",
},
{
name: "ssh-key-manager",
url: "fuchsia-pkg://fuchsia.com/ssh-key-manager#meta/ssh-key-manager.cm",
},
{
name: "full-resolver",
url: "fuchsia-pkg://fuchsia.com/full-resolver#meta/full-resolver.cm",
},
{
name: "network",
url: "fuchsia-pkg://fuchsia.com/network#meta/network.cm",
startup: "eager",
},
{
name: "hwinfo",
url: "fuchsia-pkg://fuchsia.com/hwinfo#meta/hwinfo.cm",
},
{
name: "agis",
url: "fuchsia-pkg://fuchsia.com/agis#meta/agis.cm",
environment: "#core-env",
},
{
name: "vsock",
url: "fuchsia-pkg://fuchsia.com/vsock_service#meta/vsock_service.cm",
environment: "#core-env",
},
], // children
capabilities: [
// Note: `data`, `cache`, and `temp` storage capabilities are defined in a shard and
// included as part of the build process. See restricted-storage.core_shard.cml or
// unrestricted-storage.core_shard.cml
],
offer: [
{
protocol: [ "fuchsia.metrics.MetricEventLoggerFactory" ],
from: "#cobalt",
to: "#network",
dependency: "weak",
},
{
from: "parent",
to: "#network",
config: "fuchsia.http-client.StopOnIdleTimeoutMillis",
availability: "same_as_target",
},
{
protocol: [ "fuchsia.ui.activity.Provider" ],
from: "#activity",
to: [ "#cobalt_system_metrics" ],
},
{
protocol: "fuchsia.pkg.FontResolver",
from: "void",
to: "#font_provider",
availability: "optional",
},
{
protocol: [ "fuchsia.device.NameProvider" ],
from: "parent",
to: [
"#agis",
"#mdns",
"#network",
],
},
{
protocol: [
"fuchsia.scheduler.deprecated.ProfileProvider",
"fuchsia.scheduler.RoleManager",
],
from: "parent",
to: [ "#network" ],
},
{
protocol: "fuchsia.net.http.Loader",
from: "#network",
to: "#cobalt",
},
{
protocol: [ "fuchsia.net.interfaces.State" ],
from: "#network",
to: [
"#mdns",
"#timekeeper",
],
},
{
protocol: [ "fuchsia.diagnostics.ArchiveAccessor" ],
from: "parent",
to: [ "#timekeeper" ],
},
{
protocol: [
"fuchsia.net.name.Lookup",
"fuchsia.posix.socket.Provider",
],
from: "#network",
to: [
"#cobalt",
"#mdns",
"#pkg-resolver",
"#timekeeper",
],
},
{
protocol: [ "fuchsia.posix.socket.Provider" ],
from: "#network",
to: [ "#agis" ],
},
{
protocol: [ "fuchsia.posix.socket.Provider" ],
from: "#network",
to: [ "#sl4f_bridge_server" ],
},
{
protocol: "fuchsia.stash.SecureStore",
from: "#stash_secure",
to: [ "#network" ],
},
{
directory: "config-data",
from: "parent",
to: [ "#network" ],
},
{
directory: "dev-class",
from: "parent",
as: "dev-class-network",
to: [ "#network" ],
subdir: "network",
},
{
storage: "cache",
from: "self",
to: [ "#network" ],
},
{
storage: "data",
from: "self",
to: [ "#network" ],
},
{
protocol: "fuchsia.pkg.PackageResolver",
from: "#pkg-resolver",
to: "#full-resolver",
},
{
protocol: [ "fuchsia.pkg.PackageCache" ],
from: "parent",
to: "#pkg-resolver",
},
{
// This capability is only offered to pkg-resolver in test scenarios
protocol: "fuchsia.pkg.LocalMirror",
from: "void",
to: "#pkg-resolver",
availability: "optional",
},
{
storage: "data",
from: "self",
to: "#pkg-resolver",
},
{
directory: "config-data",
from: "parent",
to: "#pkg-resolver",
subdir: "pkg-resolver",
},
{
protocol: [
"fuchsia.hardware.power.statecontrol.Admin",
"fuchsia.paver.Paver",
"fuchsia.update.verify.BlobfsVerifier",
],
from: "parent",
to: "#system-update",
},
{
protocol: [ "fuchsia.update.verify.NetstackVerifier" ],
from: "#network",
to: "#system-update",
},
{
protocol: [
"fuchsia.sysmem.Allocator",
"fuchsia.sysmem2.Allocator",
],
from: "parent",
to: [ "#agis" ],
},
{
protocol: "fuchsia.factory.MiscFactoryStoreProvider",
from: "#factory_store_providers",
to: "#hwinfo",
source_availability: "unknown",
},
{
directory: "config-data",
from: "parent",
to: "#hwinfo",
subdir: "hwinfo",
},
{
protocol: [
"fuchsia.hwinfo.Board",
"fuchsia.hwinfo.Product",
],
from: "#hwinfo",
to: "#agis",
},
{
directory: "config-data",
from: "parent",
to: "#font_provider",
subdir: "fonts",
},
{
protocol: "fuchsia.kernel.Stats",
from: "parent",
to: "#cobalt_system_metrics",
},
{
protocol: [ "fuchsia.ui.display.internal.DisplayPower" ],
from: "#ui",
to: "#brightness_manager",
dependency: "weak",
source_availability: "unknown",
},
{
storage: "data",
from: "self",
to: "#brightness_manager",
},
{
directory: "dev-class",
from: "parent",
as: "dev-backlight",
to: "#brightness_manager",
subdir: "backlight",
},
{
directory: "dev-class",
from: "parent",
as: "dev-input-report",
to: "#brightness_manager",
subdir: "input-report",
},
{
directory: "dev-class",
from: "parent",
as: "dev-thermal",
to: "#cobalt_system_metrics",
subdir: "thermal",
},
{
directory: "dev-class",
from: "parent",
as: "dev-vsock",
to: "#vsock",
subdir: "vsock",
},
{
directory: "root-ssl-certificates",
from: "parent",
to: [
"#cobalt",
"#network",
"#pkg-resolver",
"#timekeeper",
],
},
{
directory: "config-data",
from: "parent",
as: "system-update-committer-config-data",
to: "#system-update",
subdir: "system-update-committer",
},
{
directory: "config-data",
from: "parent",
to: "#cobalt",
subdir: "cobalt",
},
{
directory: "config-data",
from: "parent",
to: "#cobalt_system_metrics",
subdir: "cobalt_system_metrics",
},
{
directory: "data",
from: "parent",
as: "ssh",
to: "#ssh-key-manager",
subdir: "ssh",
},
{
storage: "data",
from: "self",
to: [
"#stash",
"#stash2",
"#stash_secure",
],
},
{
storage: [ "cache" ],
from: "self",
to: "#regulatory_region",
},
{
protocol: [ "fuchsia.vulkan.loader.Loader" ],
from: "#vulkan_loader",
to: [ "#agis" ],
},
{
directory: "dev-class",
from: "parent",
as: "dev-display-coordinator",
to: [ "#agis" ],
subdir: "display-coordinator",
},
{
protocol: "fuchsia.memorypressure.Provider",
from: "#memory_monitor",
to: "#vulkan_loader",
source_availability: "unknown",
},
{
directory: "dev-class",
from: "parent",
as: "dev-gpu",
to: [ "#vulkan_loader" ],
subdir: "gpu",
},
{
directory: "dev-class",
from: "parent",
as: "dev-gpu-dependency-injection",
to: "#vulkan_loader",
subdir: "gpu-dependency-injection",
},
{
directory: "dev-class",
from: "parent",
as: "dev-goldfish-pipe",
to: "#vulkan_loader",
subdir: "goldfish-pipe",
},
{
directory: "dev-class",
from: "parent",
as: "dev-goldfish-control",
to: "#vulkan_loader",
subdir: "goldfish-control",
},
{
directory: "dev-class",
from: "parent",
as: "dev-goldfish-address-space",
to: "#vulkan_loader",
subdir: "goldfish-address-space",
},
{
directory: "dev-class",
from: "parent",
as: "dev-goldfish-sync",
to: "#vulkan_loader",
subdir: "goldfish-sync",
},
{
directory: "dev-class",
from: "parent",
as: "dev-rtc",
to: "#timekeeper",
subdir: "rtc",
},
{
protocol: "fuchsia.metrics.MetricEventLoggerFactory",
from: "#cobalt",
to: [
"#cobalt_system_metrics",
"#pkg-resolver",
"#timekeeper",
],
},
{
protocol: [
"fuchsia.scheduler.RoleManager",
"fuchsia.sysinfo.SysInfo",
],
from: "parent",
to: "#cobalt",
},
{
protocol: "fuchsia.sysinfo.SysInfo",
from: "parent",
to: "#cobalt_system_metrics",
},
{
protocol: "fuchsia.settings.Privacy",
from: "#setui_service",
to: "#cobalt",
// TODO: break the cycle
dependency: "weak",
source_availability: "unknown",
},
{
storage: "data",
from: "self",
to: [
"#cobalt",
"#cobalt_system_metrics",
],
},
{
directory: "config-data",
from: "parent",
to: "#mdns",
subdir: "mdns",
},
{
directory: "boot",
from: "parent",
to: "#mdns",
},
{
protocol: [ "fuchsia.time.Maintenance" ],
from: "parent",
to: [ "#timekeeper" ],
},
{
protocol: [
"fuchsia.power.broker.Topology",
"fuchsia.power.system.ActivityGovernor",
],
from: "parent",
to: [ "#timekeeper" ],
// Only used if the structured config option is set
// for timekeeper:
// `power_topology_integration_enabled: true`
// See:
// `//src/sys/time/timekeeper/config.shard.cml`
availability: "optional",
},
{
protocol: [
"fuchsia.power.broker.Topology",
"fuchsia.power.system.ActivityGovernor",
],
from: "parent",
to: [ "#session-manager" ],
availability: "optional",
},
{
from: "parent",
to: "#session-manager",
config: "fuchsia.power.SuspendEnabled",
},
{
protocol: [
"fuchsia.tracing.perfetto.ProducerConnector",
"fuchsia.tracing.provider.Registry",
],
from: "#trace_manager",
to: "all",
// Weak offers to resolve dependency cycles that would be caused by
// using #core-env. Regardless of cycles, tracing is an optional
// feature and a client should be able to handle trace_manager
// being unavailable.
dependency: "weak",
// Trace manager may be excluded from builds where tracing is not
// expected to be used for observability, such as in the bringup
// product and non-eng builds of any product.
source_availability: "unknown",
},
{
protocol: "fuchsia.update.channel.Provider",
from: "#system-update",
to: "#cobalt",
dependency: "weak",
availability: "optional",
},
],
expose: [
{
protocol: [ "fuchsia.dash.Launcher" ],
from: "#debug-dash-launcher",
source_availability: "unknown",
},
{
protocol: "fuchsia.component.Binder",
from: "framework",
},
{
protocol: [ "fuchsia.metrics.MetricEventLoggerFactory" ],
from: "#cobalt",
},
{
protocol: [
"fuchsia.pkg.PackageResolver",
"fuchsia.pkg.RepositoryManager",
"fuchsia.pkg.rewrite.Engine",
],
from: "#pkg-resolver",
},
{
protocol: [ "fuchsia.ui.activity.Provider" ],
from: "#activity",
},
{
protocol: "fuchsia.update.CommitStatusProvider",
from: "#system-update",
},
{
protocol: [
"fuchsia.net.name.Lookup",
"fuchsia.posix.socket.Provider",
],
from: "#network",
},
{
protocol: "fuchsia.component.DetectBinder",
from: "#diagnostics",
availability: "optional",
source_availability: "unknown",
},
{
protocol: [
"fuchsia.virtualization.LinuxManager",
"fuchsia.virtualization.TerminaGuestManager",
],
from: "#termina-guest-manager",
source_availability: "unknown",
},
{
protocol: [ "fuchsia.virtualization.DebianGuestManager" ],
from: "#debian-guest-manager",
source_availability: "unknown",
},
{
protocol: [ "fuchsia.virtualization.ZirconGuestManager" ],
from: "#zircon-guest-manager",
source_availability: "unknown",
},
{
protocol: [
"fuchsia.tracing.controller.Controller",
"fuchsia.tracing.perfetto.ProducerConnector",
"fuchsia.tracing.provider.Registry",
],
from: "#trace_manager",
source_availability: "unknown",
},
// TODO(https://fxbug.dev/324494668): remove this when Netstack2 is gone.
{
directory: "netstack-diagnostics",
from: "#network",
availability: "optional",
},
],
}