## Problem - We need a separate OBS project for releasing the Agama ## Solution - Created [systemsmanagement:Agama:Release](https://build.opensuse.org/project/show/systemsmanagement:Agama:Release) OBS project - Modified the submission GitHub Action so it runs also in the `release` branch - That branch uses the OBS_PROJECT_RELEASE GitHub variable which points to the OBS project above - The GitHub action then either uses the OBS_PROJECT variable (`master` branch) or OBS_PROJECT_RELEASE variable (`release` branch) ## Testing - The actions work fine, see an [example run](https://github.com/agama-project/agama/actions/runs/11104765345/job/30849491339) - The submission to openSUSE Factory has not been tested (too complex, needs separate Git and OBS fork, there is a minimal change in the code so I expect it to work) |
||
|---|---|---|
| .. | ||
| agama-cli | ||
| agama-lib | ||
| agama-locale-data | ||
| agama-server | ||
| etc/agama.d | ||
| package | ||
| share | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
| rustfmt.toml | ||
| WEB-SERVER.md | ||
Agama Server
According to Agama's architecture this project implements the following components:
- The Agama server, excluding Agama YaST which lives in the service directory.
- The Agama D-Bus service.
- The Command Line Interface.
Code organization
We have set up Cargo workspace with three packages:
- agama-lib: code that can be reused to access the Agama D-Bus API and a model for the configuration settings.
- agama-cli: code specific to the command-line interface.
- agama-settings and agama-derive: includes a procedural macro to reduce the boilerplate code.
- agama-locale-data: specific library to provide data for localization D-Bus API
- agama-server: implements the HTTP/JSON (and WebSocket) API. Additionally, it offers a minimal D-Bus API for internal communication.