blob: c8d9fd7c630111601fb54e0a6382da15ec1cb3f4 [file] [log] [blame] [view] [edit]
# Featured Rust wrapper
Note: This crate is specific to ChromeOS and requires the native
[libfeatures_c](https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/platform2/featured)
library at link time.
`featured-rs` is a Rust wrapper for libfeatures_c. This library is used to interact with Featured to check
which features are currently enabled.
## Building for the host environment
You can also execute `cargo` directly for faster build and tests. This would be useful when you are
developing this crate. Since this crate depends on libfeatures_c.so, you need to install it to host
environment first.
```shell
# Install libfeatures_c.so to host.
(chroot)$ sudo emerge chromeos-base/featured
# Build
(chroot)$ cargo build
# Unit tests
(chroot)$ cargo test
```
## Generated bindings
The build script, `build_buildings.sh`, generates bindings to `../c_feature_library.h`.
Whenever breaking changes are made to `../c_featured_library.h`, this build script must be
rerun to generate new bindings to the C library.
## Running the examples on DUT
First, you need to make sure you have deployed `featured` to your DUT.
You may also need to deploy `libchrome` and `libbrillo` to have the examples run properly.
```shell
(chroot)$ cros deploy ${DUT_IP} chromeos-base/featured
```
Second, you need to build them and copy them over to your device.
```shell
(chroot)$ cargo build --release --examples
(chroot)$ scp target/release/examples/*feature_check $DUT:/usr/local/bin
```
To run them on your DUT:
```shell
(DUT)$ feature_check
(DUT)$ fake_feature_check
```