Skip to content

2022.6

Compare
Choose a tag to compare
@cgwalters cgwalters released this 08 Apr 21:47
· 2195 commits to main since this release
v2022.6

rpm-ostree v2022.6

A major new feature in this release is initial support for "chunked" ostree containers.
The client (and part of the build side) was released in ostree-ext 0.7. On the build side here, the new
rpm-ostree container-encapsulate command will generate "chunked" images.
For more information, see ostreedev/ostree-rs-ext#69

Also relating to containers, override replace and override remove now work in container builds.

The rpm-ostree compose extensions command now supports a --rootfs switch to operate directly on a rootfs rather than an ostree ref.

Notable bugfixes

rpm-ostree should now work on CentOS Stream 9 systems without polkit.

We work around kernel packages that have absolute paths in their .hmac files.

We now correctly detect and error out when in a container environment for commands that do not support it.

Internals

We adopted clang-format and reformatted the whole source tree for consistency.

Significant work landed on canonicalization our representation of state in the treefile (not "origin"). For more information, see this issue.

Progress continues on porting to cap-std.

We fixed several clang scan-build warnings.

Several CI reliability improvements landed.

Oxidation continues! Some code was rewritten in Rust (from appoximately 17% of the code to 19%).
We also started adopting Rust inline format!, and fixed some clippy lints.

Special thanks to first-time contributor Jonathan Dickinson!

Benno Rice (7):
      Ignore .vscode and libgnlx-config.h
      Separate includes that need to retain non-alphabetic ordering.
      Add a clang-format configuration file.
      Add a pass to ensure C/C++ code under `src` meets style.
      Reformat all C/C++ code under src with clang-format.
      Fix handling of lockfile parent directory, port to cap_std
      Fix clippy warning.

Colin Walters (43):
      Bump to containers-image-proxy 0.4.1
      Require clang-format on all C/C++ files
      Update to cap-std-ext 0.23.3
      ci: Only run one instance of `clang-format`
      docs: Mention mount point mutability
      daemon/sysroot: Use iterators more
      compose: Complete porting to cap-std
      client: Don't invoke `systemctl start` if unit is already active
      client: Warn about reliability of `--check` and `--preview`
      extensions: Port to cap-std
      Bump to cap-std 0.24.2, use `try_exists()`
      lockfile: Use new internal `open_dir_of` helper
      composepost: Also remove stamp file created by recent RPM `%posttrans`
      rpmutil: Ensure libdnf is initialized when loading rpmdb
      ci: Add Github action flow for testing container path
      ci: Be verbose for tar extraction
      cli: Opt-in some CLI verbs to working inside ostree containers
      container: Cleanup BDB rpmdb leftovers after installs
      compose extensions: Support `--rootfs`
      extensions: Validate we don't have `--repo` and `--rootfs`
      ci: Drop skopeo override
      composepost: Make rpmdb location `pub(crate)`
      architecture: Motivate base vs extensions split
      man: Document that `rebase` and `deploy` will also update layered packages
      spec: BR `libassuan-devel` on rhel8
      daemon: Handle `org.freedesktop.DBus.Error.ServiceUnknown` too
      core: Port to cap-std
      compose: Fix handling of base rev
      daemon: Port to cap-std
      extensions: Port to cap-std
      testutils: Port to cap-std
      testutils: Port to rustix for `Mode`
      partial, tree-wide: Switch to using inline variables in `format!`
      daemon: Move tokio handle reference into daemon
      core: Minor cleanups for kernel hmac bits
      ci: Move legacy compose tests to GH actions
      ci: Rename some of the GH actions
      Update to ostree-ext 0.7, add new `container-encapsulate`
      ci: Move codestyle check into our single GH actions flow
      ci: Pull buildroot from CI registry
      importer: Initialize cpio offset
      tree-wide: Rework C++ try/catch to GError bridging
      Release 2021.6

Jonathan Dickinson (2):
      use basename when cleaning up the .vmlinuz.hmac file
      port rpmostreed_generate_object_path to rust

Jonathan Lebon (68):
      packaging: Canonicalize tarballs to uid/gid 0
      packaging/spec: Don't own /usr/share/dbus-1/system-services
      Makefile: add `make clang-format` to format tree
      treefile: Don't serialize override-commit if `None`
      libpriv/container: Drop treefile generation helper
      libpriv/container: Add missing includes
      scripts: Also ignore kernel-debug-core.posttrans
      .editorconfig|.vimrc: Adapt to .clang-format spec
      daemon/upgrader: Cleanup unused variables
      treefile: Drop new_from_fields()
      daemon/upgrader: Remove misleading try/catch
      libpriv/util: Rename CXX_TRY to ROSCXX_TRY and add CXX_TRY
      libpriv/util: Add `CXX` and `CXX_VAL` macros
      tree: Add missing CXX wrapping
      tree: Remove unneeded CXX wrapping
      tree: Remove more try/catch blocks
      treefile: rework validation for container flow
      app/override: Support override remove in container flow
      app/override: Support override replace in container flow
      vmcheck/history: delete journal hack
      rust/origin: support converting treefile to origin
      libpriv/origin: Uninline parse_deployment
      libpriv/origin: Drop classify_refspec
      libpriv/origin: Pass RpmOstreeOrigin directly to helper
      libpriv/origin: Drop get_full_refspec
      libpriv/origin: Rename has_packages to has_any_packages
      libpriv/origin: Delete unused modules_install
      rust/origin: Genericize keyfile string list parsing
      libpriv/origin: Drop unused get_string
      libpriv/origin: Move ref/unref higher up
      rust/utils: Add OptionExtGetOrInsertDefault
      libpriv/origin: Stop commenting override commit version
      rust/origin: Drop duplicate check for `container-image-reference`
      core: Make refspec classification infallible
      libpriv/origin: Make set_rebase infallible
      core: Oxidize rpmostree_refspec_classify
      rust: Convert `map().flatten()` to `and_then()`
      rust/treefile: Support constructing from YAML strings
      libpriv/origin: Drop `G_[BEGIN|END]_DECLS` wrappers
      libpriv/origin: Label mutability of all public functions
      libpriv/origin: Move source of truth to treefile
      libpriv/origin: Back get_refspec() by treefile
      libpriv/origin: Back get_custom_description() by treefile
      libpriv/origin: Back get_packages() by treefile
      libpriv/origin: Back has_modules_enable() by treefile
      libpriv/origin: Back get_local_packages() by treefile
      libpriv/origin: Back get_override_remove() by treefile
      libpriv/origin: Back get_overrides_local_replace() by treefile
      libpriv/origin: Back get_override_commit() by treefile
      libpriv/origin: Back get_initramfs_etc_files() by treefile
      libpriv/origin: Back get_regenerate_initramfs() by treefile
      libpriv/origin: Back get_initramfs_args() by treefile
      libpriv/origin: Back get_unconfigured_state() by treefile
      libpriv/origin: Back has_any_packages() by treefile
      libpriv/origin: Back may_require_local_assembly() by treefile
      libpriv/origin: Back dup_keyfile() by treefile
      libpriv/origin: Back get_cliwrap() by treefile
      libpriv/origin: Make sync_treefile() void
      libpriv/origin: Use CXX_MUST_VAL in sync_treefile()
      libpriv/origin: Add sync_origin()
      libpriv/origin: Use set_override_commit() instead of treefile resync
      libpriv/origin: Fully back override-commit by treefile
      rust/treefile: Make initramfs-etc a set
      libpriv/origin: Use initramfs_etc_files_track() instead of treefile resync
      libpriv/origin: Use initramfs_etc_files_untrack() instead of treefile resync
      libpriv/origin: Use initramfs_etc_files_untrack_all() instead of treefile resync
      libpriv/origin: Fully back initramfs-etc files by treefile
      ci: Drop unnecessary `parallel`

Luca BRUNO (11):
      libpriv/postprocess: always set exit code
      daemon/utils: avoid superfluous gotos
      daemon: port some sysroot core logic to Rust
      libpriv/import: implement autocleanup for rpmfd
      daemon/dbus/os: remove some goto statements
      daemon/dbus: port some deployment logic to Rust
      libpriv/unpacker: tweak error handling
      libpriv/unpacker: implement autocleanup for archive
      libpriv/editor: rework error handling to avoid goto statements
      app: implement auto-cleanup for TransactionProgress
      daemon: simplify some error cases

Timothée Ravier (1):
      packaging: Remove unneeded Windows binaries from vendor snapshot

dependabot[bot] (13):
      build(deps): bump libglnx from `88da8dd` to `c71f7ae`
      build(deps): bump once_cell from 1.9.0 to 1.10.0
      build(deps): bump termcolor from 1.1.2 to 1.1.3
      build(deps): bump regex from 1.5.4 to 1.5.5
      build(deps): bump curl from 0.4.42 to 0.4.43
      build(deps): bump anyhow from 1.0.55 to 1.0.56
      build(deps): bump cxx from 1.0.65 to 1.0.66
      build(deps): bump cxx-build from 1.0.65 to 1.0.66
      build(deps): bump libc from 0.2.119 to 0.2.121
      build(deps): bump cap-tempfile from 0.24.1 to 0.24.2
      build(deps): bump tracing from 0.1.31 to 0.1.32
      build(deps): bump paste from 1.0.6 to 1.0.7
      build(deps): bump tracing-subscriber from 0.3.9 to 0.3.10