The client now supports a `--register-driver` command which will be used by Fedora CoreOS and `zincati.service` to tell rpm-ostree that another service is actively "driving" updates. In concert with this, `rpm-ostree upgrade` now emits an error message if a driver is active.
PRs: https://github.com/coreos/rpm-ostree/pull/2459 and https://github.com/coreos/rpm-ostree/pull/2566
There is a new `rpm-ostree compose extensions` which will be used by RHEL CoreOS, but is intended to be generally usable by rpm-ostree users that want to more cleanly split their builds into "base OS image" + "optional extensions (RPMs)", while reusing the same declarative manifest format.
PR: https://github.com/coreos/rpm-ostree/pull/2439
rpm-ostree now better supports a newer libsolv that uses `%{_dbpath}` to find the rpm database.
(This fix was already backported into Fedora)
Issue: https://github.com/coreos/rpm-ostree/issues/2548
[Change main entrypoint to be Rust](https://github.com/coreos/rpm-ostree/pull/2502) is a huge milestone - rpm-ostree is now a Rust application with an internal C++ library. We now do [bidirectional calls](https://github.com/coreos/rpm-ostree/pull/2413). The transition to Rust is accelerating!
Other oxidation progress:
- Much of the code around handling `/etc/{passwd,group}` is now in Rust; PR: https://github.com/coreos/rpm-ostree/pull/2580
A lot of CI fixes and cleanups; most notably we now test some with [AddressSanitizer](https://clang.llvm.org/docs/AddressSanitizer.html) which caught one bug.
```
Colin Walters (81):
Make `make check` work again
rust: Port history to cxx-rs
rust/fedora_integration: Support export RPMOSTREE_KOJI_JSON_API_HOST=...
Remove some uses of `goto out`
rust: Add a bit more info on cxx, move up StringMapping
ci: Make msrv test do full build + unit tests
cxxrs: Work around failure with -Werror=missing-declarations
rust: Link to our C/C++ dependencies and internal library
Move nevra parsing to Rust, first use of `extern "C++"`
libmain: Avoid use of goto out
rust: Add some allow(dead_code)
compose: Remove unused treefile_rs parameter
tests/layering-fedorainfra: Update rpm-ostree build
tests: Fix compliation
ci: Re-enable `make check`
Makefile.bindings: Also generate pure rust/cxx.h
lockfile: Note that comment is JSON
lib: Don't link to libdnf
vagrant: Remove this
scripts: Remove, not used
cliwrap: Fix indentation
Bridge "next version" API to Rust, use it for unit tests
build: Use -std=c++17
tree-wide: Convert g_return.*if_fail to g_assert
ci: Drop testuser creation
ci: Split clang into separate script, run it in CoreOS CI
ci: Drop custom msrv checking
Change main entrypoint to be Rust
build-sys: Move some linkage purely to Rust
build-sys: Rebuild on C++ changes
ci/build-check: Don't make install
ci: Skip installing deps if non-root
scripts: Fix a stack use-after-free
ci: Add a commit validation entrypoint
Also export PATH here
ci: Ensure HOME is set
ci: Also test for HOME being writable
ci: Don't assume HEAD exists
ci: Consistently source libbuild
ci: Propagate make jobs to clang build too
build-sys: Explicit workspace, move libdnf deps to crate
Move libdnf build over to Cargo
build-sys: Drop Fedora 25+ rpm version check
build-sys: Delete duplicate Rust pkg-config dependencies
build-sys: Cleanly split up deps of public shlib vs internals
ci: Drop clang and unit tests from here
libdnf: Various buildsys fixes
ci: Add clang-analyzer.sh
tree-wide: Fix some spurious "Dead assignment" from clang-analyzer
tree-wide: Fix some "Dead assignment" from clang-analyzer
util: Annotate our "throw" wrappers as `[[ noreturn ]]`
libmain: Refactor to fix analyzer warning
tree-wide: Pacify some clang-analyzer "Dead nested assignment"
tree-wide: Squash some clang-analyzer found unused variables
Make failure to find packages fatal, add more error prefixing
ci/clang-analyzer: Install deps
tree-wide: Fix clang -Wgnu-designator/-Wunused-variable
transaction: Fix missing return in error case
build-sys: Add --enable-werror, rework compiler flags
build-sys: Statically link binary against shlib code
Rename internal Rust progress to console_
Bind output core into Rust, use in apply-live
scripts: Bind /usr/share/empty over /usr/share/rpm
build: Drop introspection+clang hack
Add --enable-sanitizers (not on by default yet)
tree-wide: Include GLib headers before libdnf
rust: Add module doc headers
Switch to using cxx-rs for treefile
tree-wide: Fix C++ range iteration to use references
build-sys: Always run `make` → `cargo build`
Misc doc tweaks/cleanups
tests/layering-non-root-caps: Adapt to new libcap output
ci: Drop: distro-sync, continuous repo
ci: Add `time` prefixing before most commands
build-sys: Ignore .cosa
ci: Rework build/test dependency install
tests: Fix bodhi link
Add an rpmostree-client sub-crate
compose: Add missing #include <optional>
libdnf-sys: Include gio.h before libdnf.h
Release 2021.2
Jonathan Lebon (31):
spec: Add BuildRequires: make
ci: Set RPM_BUILD_NCPUS when building RPMs
docs/HACKING: drop reference to `make vmcheck HOSTS=...`
.editorconfig: Adjust for CXX files
Revert "core: Allow overriding downloaded RPMs target dir"
app: Add `rpm-ostree compose extensions`
rust: Fix clippy warnings
core: Set _dbpath back to /usr/share/rpm after writing rpmdb
extensions: Write JSON to output dir
core: Factor out function to set repos on pkgs
core: Factor out function to download pkgs
core: Fix handling of local packages when downloading
extensions: Support enabling additional repos
extensions: Fix missing CxxResult
app/compose: Add comment about pkgcache
rust/treefile: Drop unnecessary #[serde(rename)]
extensions: Add support for development extensions
tests/compose.sh: Always rebuild supermin appliance
Makefile-rpm-ostree: Drop hardcoded `release` path
Makefile-rpm-ostree: Fix setting of `cargo_target_dir`
Makefiles: Drop unnecessary `cd rust/` and `CARGO_TARGET_DIR`
core: Don't allow noent when resolving pkgcache rev
ci: Temporarily use libsolv-0.7.17
Add /usr/lib/rpm/macros.d/macros.rpm-ostree to set %_dbpath to /usr/share/rpm
lib/package: Fix comment about rpmdb checkout
libpriv/rpm-util: Add /usr/lib/sysimage/rpm symlink in rpmdb checkout
libpriv/rpm-util: Use /usr/share/rpm for base rpmdb query
ci: Re-add CARGO_BUILD_JOBS
extensions: Don't try to chown RPM packages
libdnf-sys: Drop C API, replace with cxx.rs bridge
lockfile: Move ror_lockfile_read to cxx.rs
Kelvin Fan (13):
daemon: Record agent's systemd service
vmcheck/test-misc-2: Fix $cursor variable
HACKING: Update vmcheck instructions
docs/HACKING: Update kola ext test instructions
Add `register-driver` option to UpdateDeployment D-Bus API
app/status: Display update driver info
deploy: Allow empty string argument if `--register-driver`
daemon/rpmostreed-daemon: Look up sd unit if caller not registered
app/status: Show update driver's state and status
app/status: Use `AutomaticUpdatesDriver` if updates driven by external driver
tests/common/libvm: Print error if bad tests/vmcheck/image.qcow2
app/status: factor out get_sd_unit_objpath() function
app/upgrade: Do not upgrade if updates driver registered
Luca BRUNO (11):
libpriv/passwd: move RPM layering logic to Rust
github: update dependabot config
ci: fix install-extra logic
testutils: port to new 'rand' library API
rust/passwd: finish moving group and passwd parsers
rust/passwd: minor cleanup, switch to copy_file_at
libpriv/passwd-util: move migration logic to Rust
rust/passwd: minor cleanup, use write_file_with_sync
libpriv/passwd: move entries deduplication logic to Rust
make/rust-test: fix linking and loading
libpriv/postprocess: get rid of goto statements
dependabot[bot] (20):
build(deps): bump libdnf from `45981d5` to `1ebad38`
build(deps): bump serde_json from 1.0.60 to 1.0.61
build(deps): bump serde from 1.0.118 to 1.0.120
build(deps): bump serde from 1.0.120 to 1.0.122
build(deps): bump anyhow from 1.0.35 to 1.0.38
build(deps): bump libc from 0.2.81 to 0.2.82
build(deps): bump serde_yaml from 0.8.14 to 0.8.15
build(deps): bump systemd from 0.8.1 to 0.8.2
build(deps): bump tempfile from 3.1.0 to 3.2.0
build(deps): bump rust-ini from 0.16.0 to 0.16.1
build(deps): bump cxx from 1.0.20 to 1.0.28
build(deps): bump rand from 0.7.3 to 0.8.2
build(deps): bump serde from 1.0.122 to 1.0.123
build(deps): bump rand from 0.8.2 to 0.8.3
build(deps): bump libdnf from `1ebad38` to `e92a15a`
build(deps): bump libc from 0.2.82 to 0.2.84
build(deps): bump cxx from 1.0.28 to 1.0.29
build(deps): bump cxx from 1.0.29 to 1.0.30
build(deps): bump serde_json from 1.0.61 to 1.0.62
build(deps): bump serde_yaml from 0.8.15 to 0.8.16
```
Git-EVTag-v0-SHA512: 098fda1600aeecee9d355bec6d30b6a32e6c346d2ff5e025eae7599430d784e5b4270d9bb4858c1034ff2776cc80e34722cd7c164fe199b0aacfef4b48a38587