agama/rust/zypp-agama
Ladislav Slezák 3811875437
Select addon product to install (bsc#1258187), refresh repos after registration (bsc#1259217) (#3240)
## 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)
```
2026-03-05 09:19:13 +01:00
..
benches add working C code together with bench and example 2026-02-09 14:03:02 +01:00
examples add working C code together with bench and example 2026-02-09 14:03:02 +01:00
fixtures add unit tests 2025-12-23 11:11:03 +01:00
src Select addon product to install (bsc#1258187), refresh repos after registration (bsc#1259217) (#3240) 2026-03-05 09:19:13 +01:00
tests cargo fmt 2025-12-23 11:11:23 +01:00
zypp-agama-sys Select addon product to install (bsc#1258187), refresh repos after registration (bsc#1259217) (#3240) 2026-03-05 09:19:13 +01:00
Cargo.toml Clean-up unused dependencies 2026-03-03 11:40:36 +00:00
README.md reorganize a code and also apply code review suggestions 2025-11-12 21:48:42 +01:00

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/include directory and write its implementation to cxx file.
  • generate new FFI bindings (in low level, unsafe Rust), in rust/zypp-agama-sys by 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