blob: a707af3ecfc6c0f8cf45627a5b2becf603fbaf86 [file] [log] [blame] [view] [edit]
# libsegmentation
C++ library to know if a software feature is enabled on a given device.
It is unrelated to featured. Although both returns if a given feature is enabled
or not, featured uses the variations framework while libsegmentation uses a
local store when enabled.
[TOC]
## Design Documentation
See the [design\_doc](go/cros-segmentation-dd) and the [application
note](go/cros-segmentation-an).
## Package dependency
legend
└── depends on
chromeos-base/libsegmentation
chromeos-base/feature-management-data
public-overlay
---------------------------------------------------------------------------
private-overlay
└── chromeos-base/feature-management-bsp
└── chromeos-base/feature-management-private
`chromeos-base/feature-management-private` provide the private features
definitions for `chromeos-base/feature-management-data`, that build the database
needed by `libsegmentation` in
`chromeos/feature-management-data/libsegmenation_pb.h`. It also holds the
[protobuf](https://chromium.googlesource.com/chromiumos/platform/feature-management/proto/feature_management.proto)
that describes a feature.
chromeos-base/feature-management-bsp provide device selection override,
if needed.
## Usage
We can check manually if a feature is supported on the test image with
```bash
/usr/local/sbin/feature_explorer --feature_name=FeatureManagementNotSupported
0
/usr/local/sbin/feature_explorer --feature_name=FeatureManagementBasic
1
```
## Adding a feature
Public features are added in
[`features.star`](https://chromium.googlesource.com/chromiumos/platform/feature-management/+/HEAD/features.star)
starlak file.