Colin Walters
d218f27188
Change main entrypoint to be Rust
We now have bidirectional calling between Rust and C++, but we are generating two static libraries that we then link together with a tiny C++ `main.cxx`. Let's make another huge leap towards oxdiation by having Rust be the entrypoint. This way cargo natively takes care of linking the internal Rust library, and our C++ internals become the library. In other words, we've now fully inverted from "C app with internal Rust library" to "Rust binary with internal C++ library". In order to make this work though we have to finally kill the C unit tests. But mostly everything covered there is either being converted to Rust, or covered elsewhere anyways. Now as the doc comments in `main.rs` say...this is a bit awkward because all the CLI code is still in C++. Porting stuff to use e.g. `structopt` natively would be a bit of a slog. For now, we basically rely on the fact that the Rust-native CLIs are all hidden commands. Update submodule: libdnf
rpm-ostree: A true hybrid image/package system
rpm-ostree is a hybrid image/package system. It combines libostree as a base image format, and accepts RPM on both the client and server side, sharing code with the dnf project; specifically libdnf. and thus bringing many of the benefits of both together.
+-----------------------------------------+
| |
| rpm-ostree (daemon + CLI) |
+------> <---------+
| | status, upgrade, rollback, | |
| | pkg layering, initramfs --enable | |
| | | |
| +-----------------------------------------+ |
| |
| |
| |
+-----------------|-------------------------+ +-----------------------|-----------------+
| | | |
| libostree (image system) | | libdnf (pkg system) |
| | | |
| C API, hardlink fs trees, system repo, | | ties together libsolv (SAT solver) |
| commits, atomic bootloader swap | | with librepo (RPM repo downloads) |
| | | |
+-------------------------------------------+ +-----------------------------------------+
Features:
- Transactional, background image-based (versioned/checksummed) upgrades
- OS rollback without affecting user data (
/usr
but not/etc
,/var
) via libostree - Client-side package layering (and overrides)
- Easily make your own:
rpm-ostree compose tree
and CoreOS Assembler
Documentation
For more information, see the project documentation or the project documentation website.
License
rpm-ostree includes code licensed under GPLv2+, LGPLv2+, (Apache 2.0 OR MIT). For more information, see LICENSE.
Description
Languages
C++
58.8%
Rust
18.6%
Shell
13.6%
C
6.6%
M4
0.8%
Other
1.6%