Skip to content

v2021.2

@cgwalters cgwalters tagged this 17 Feb 20:21
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
Assets 2
Loading