d218f27188
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 |
||
---|---|---|
.github | ||
api-doc | ||
buildutil | ||
ci | ||
completion | ||
design | ||
docs | ||
experiments-and-demos/skopeo2ostree | ||
libdnf@27ac9873ea | ||
libglnx@900caea698 | ||
man | ||
packaging | ||
rust | ||
src | ||
tests | ||
.cci.jenkinsfile | ||
.dir-locals.el | ||
.editorconfig | ||
.gitmodules | ||
.vimrc | ||
autogen.sh | ||
build.rs | ||
cargo-vendor-config | ||
Cargo.lock | ||
Cargo.toml | ||
cbindgen.toml | ||
configure.ac | ||
CONTRIBUTING.md | ||
COPYING.GPL | ||
COPYING.LGPL | ||
git.mk | ||
HACKING.md | ||
LICENSE | ||
Makefile-bash.am | ||
Makefile-daemon.am | ||
Makefile-decls.am | ||
Makefile-extra.inc | ||
Makefile-lib-defines.am | ||
Makefile-lib.am | ||
Makefile-libdnf.am | ||
Makefile-libpriv.am | ||
Makefile-man.am | ||
Makefile-rpm-ostree.am | ||
Makefile-tests.am | ||
Makefile.am | ||
Makefile.bindings | ||
OWNERS | ||
README.md | ||
RELEASE.md |
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.