# rust-libostree [![pipeline status](https://gitlab.com/fkrull/rust-libostree/badges/master/pipeline.svg)](https://gitlab.com/fkrull/rust-libostree/commits/master) [![Crates.io](https://img.shields.io/crates/v/libostree.svg)](https://crates.io/crates/libostree) [![master-docs](https://img.shields.io/badge/docs-master-brightgreen.svg)](https://fkrull.gitlab.io/rust-libostree/libostree) **Rust** bindings for [libostree](https://ostree.readthedocs.io). libostree is both a shared library and suite of command line tools that combines a "git-like" model for committing and downloading bootable filesystem trees, along with a layer for deploying them and managing the bootloader configuration. ## Status The bindings are quite incomplete right now. Most of it can be autogenerated, but I simply turned on what I needed and left the rest for later. ## Using ### Requirements The `libostree` crate requires libostree and the libostree development headers. On Debian/Ubuntu, they can be installed with: ```ShellSession $ sudo apt-get install libostree-1 libostree-dev ``` ### Installing To use the crate, add it to your `Cargo.toml`: ```toml [dependencies] libostree = "0.1" ``` To use features from later libostree versions, you need to specify the release version as well: ```toml [dependencies.libostree] version = "0.1" features = ["v2018_7"] ``` ## Developing The `libostree` and `libostree-sys` crates can be built and tested using regular Cargo commands. ### Generated code Most code is generated based on the gir files using the [gir](https://github.com/gtk-rs/gir) tool. These parts can be regenerated using the included Makefile: ```ShellSession $ make generate-libostree-sys generate-libostree ``` Run the following command to update the bundled gir files: ```ShellSession $ make update-gir-files ``` ### Documentation The libostree API documentation is not included in the code by default because of its LGPL license. This means normal `cargo doc` runs don't include API docs for the generated code. Build the crate with the `lgpl-docs` feature to merge the API docs into the code: ```ShellSession $ cd libostree/ $ cargo doc --features "dox lgpl-docs" ``` (The `dox` feature enables all functions etc. regardless of version.) Keep in mind that if you build the crate with the `lgpl-docs` feature, it is effectively LGPL-licensed and you need to comply with the LGPL requirements (specifically, allowing users of your end product to swap out the LGPL'd parts). ### Releases Releases can be done using the publish_* jobs in the pipeline. There's no versioning helper yet so version bumps need to be done manually. ## License The libostree crate is licensed under the MIT license. See the LICENSE file for details. libostree itself is licensed under the LGPL2+. See its [licensing information](https://ostree.readthedocs.io#licensing) for more information.