## Problem - https://bugzilla.suse.com/show_bug.cgi?id=1258187 - the `sle-ha` product is not installed after registering the SLES-HA extension - https://bugzilla.suse.com/show_bug.cgi?id=1259217 - no packages are available after registration ## Solution - Select the product from the just registered extension to install, select products from all registered extensions when changing the configuration via API - Refresh the repositories after registering a product ## Testing - Tested manually - The `sle-ha` product is found (as the repository is refreshed) and is selected to install: Log excerpt: ``` Selecting product sle-ha from repository SUSE_Linux_Enterprise_High_Availability_Extension_16.1_x86_64:SLE-Product-HA-16.1 [rust-bindings] Resetting status of all resolvables Selecting products from service SUSE_Linux_Enterprise_High_Availability_Extension_16.1_x86_64 Selecting product sle-ha from repository SUSE_Linux_Enterprise_High_Availability_Extension_16.1_x86_64:SLE-Product-HA-16.1 Install only required packages: false [zypp::solver] -------------- Calling SAT Solver ------------------- [zypp::solver] SATResolver::resolvePool() [zypp::solver] SATResolver::solverInit() [zypp::solver] Locked 0 installed items and 0 NOT installed items. [zypp::solver] Install U_Th_(7787)sle-ha-release-16.1-160099.11.1.x86_64(SUSE_Linux_Enterprise_High_Availability_Extension_16.1_x86_64:SLE-Product-HA-16.1) [zypp::solver] Install U_Th_(7790)product:sle-ha-16.1-0.x86_64(SUSE_Linux_Enterprise_High_Availability_Extension_16.1_x86_64:SLE-Product-HA-16.1) [zypp::solver] Install U_Th_(7835)NetworkManager-1.54.3-160099.1.1.x86_64(SUSE_Linux_Enterprise_Server_16.1_x86_64:SLE-Product-SLES-16.1) ``` |
||
|---|---|---|
| .. | ||
| 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 )