| .. | ||
| benches | ||
| examples | ||
| fixtures | ||
| src | ||
| tests | ||
| zypp-agama-sys | ||
| Cargo.toml | ||
| README.md | ||
Zypp Agama
crate which purpose is to have thin layer to libzypp for agama purpose.
How to Add New Libzypp Call
- at first create its C API in
zypp-agama-sys/c-layer/includedirectory and write its implementation to cxx file. - generate new FFI bindings (in low level, unsafe Rust), in
rust/zypp-agama-sysby running cargo build - write a (regular, safe) Rust wrapper, in
src
Libzypp Notes
- libzypp is not thread safe
- for seeing how it works see yast2-pkg-bindings and zypper as some parameters in calls are ignored
- goal is to have thin layer close to libzypp and build logic on top of it in more advanced language
Interesting Resources
- https://doc.rust-lang.org/nomicon/ffi.html
- https://adventures.michaelfbryan.com/posts/rust-closures-in-ffi/
- https://www.khoury.northeastern.edu/home/lth/larceny/notes/note7-ffi.html
- https://cliffle.com/blog/not-thread-safe/ ( interesting part how to ensure in rust that some data is not thread safe )