moss-rs
A rewrite of the Serpent OS tooling in Rust, enabling a robust implementation befitting Serpent and Solus
We will initially focus on moss
and stone
(library), restoring parity while focusing on some key areas
- Version agnostic read APIs
- Decoupled repository indices with support for format upgrades
- Asynchronous I/O (specifically fetches)
- Memory consumption + safety
- Upgrade of installations
When the tooling is at a point exceeding the functionality of our first version, focus will shift to the build infrastructure as well as the Rust version of boulder
(.stone
build tooling).
It is recommended to use an up to date version of Rust via rustup
.
Progress:
- Read support for
.stone
- Repository manipulation
- Plugin system for layered graph of dependencies
- Search support
- Transactions
- Installation support
- Removal support
- Upgrade support
- Trigger integration (usysconf-rs)
- GC / cleanups of latent states
- Features (previously: Subscriptions)
Test libstone
$ cargo test
Building moss
$ cargo build -p moss
$ cargo run -p moss -- $args
Experiment
Remember to use the -D sosroot
argument to specify a root directory, otherwise moss will happily eat your operating system.
cargo build --release
# Add the volatile repo
./target/release/moss -D sosroot repo add volatile https://dev.serpentos.com/volatile/x86_64/stone.index
# List packages
./target/release/moss -D sosroot list available
# Install something
./target/release/moss -D sosroot install systemd bash libx11-32bit
Contributing changes
Please ensure all tests are running locally without issue:
$ cargo test
# Prior to commiting a change:
$ cargo fmt
# Prior to pushing anything, check:
$ cargo clippy
License
moss-rs
is available under the terms of the MPL-2.0