diff --git a/rust-bindings/rust/README.md b/rust-bindings/rust/README.md index 6a3a40a7..29bc6d28 100644 --- a/rust-bindings/rust/README.md +++ b/rust-bindings/rust/README.md @@ -1,22 +1,28 @@ -# Rust bindings for libostree -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. -The core OSTree model is like git in that it checksums individual files and has a content-addressed-object store. It's -unlike git in that it "checks out" the files via hardlinks, and they thus need to be immutable to prevent corruption. +# 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) -[libostree site](https://ostree.readthedocs.io) | [libostree git repo](https://github.com/ostreedev/ostree) +**Rust** bindings for [libostree](https://ostree.readthedocs.io). -This project provides [Rust](https://rust-lang.org) bindings for libostree. They are automatically generated, but rather -incomplete as of yet. +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. -## Setup -The `libostree` crate requires libostree and the libostree development headers. On Debian/Ubuntu, they can be installed -with: +## 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 @@ -24,7 +30,8 @@ To use the crate, add it to your `Cargo.toml`: libostree = "0.1" ``` -To use features from later libostree versions, you need to specify the release version as well: +To use features from later libostree versions, you need to specify the release +version as well: ```toml [dependencies.libostree] @@ -32,8 +39,49 @@ version = "0.1" features = ["v2018_7"] ``` -## License -The libostree crate is licensed under the MIT license. See the LICENSE file for details. +## Developing +The `libostree` and `libostree-sys` crates can be built and tested using regular +Cargo commands. -libostree itself is licensed under the LGPL2+. See its [licensing information](https://ostree.readthedocs.io#licensing) -for more information. +### 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.