Skip to content

Releases: coreos/rpm-ostree

2020.9

11 Dec 12:54
v2020.9
Compare
Choose a tag to compare

rpm-ostree v2020.9

Client

The ex livefs command was completely rewritten and moved to a much safer foundation.

Bugfixes:

Composing

No real changes.

Internals

  • Our CI is now on Fedora (CoreOS) 33 and tests were fixed for that
  • Investigating https://cxx.rs/ and moving some code to C++, but the end game is mostly Rust!
  • Some further small parts were rewritten in Rust.
Colin Walters (20):
      Rewrite livefs
      service: Enable ProtectHome=true
      livefs: Fix --target, add --reset and print diff
      tree-wide: Add extern "C" wrapping to our headers
      scripts: Neuter RHEL8 nvme-cli %post
      Convert some code to compile in C++ mode
      Remove ex-container
      compose: Use static enablement for ostree systemd services
      bindgen: Bump to 0.15
      tests: Add case for running rpm -q in a %post
      Add a helper move_nullify
      app: Port dbus-helpers to C++
      Port rpmostree-postprocess to C++
      Port rpmostree-core to C++
      Port rpmostreed-transaction to C++
      Move bindgen into tooling/, add dependabot
      Move the main Rust infra (i.e. Cargo.toml) to the toplevel
      upgrader: Inject --no-hostonly again if no initramfs-args
      livefs: Fix GVariant refcounting
      Release 2020.9

Jonathan Lebon (6):
      core: Disable libdnf plugin loading
      rust: Move to new systemd journal API for opening
      daemon: Drop CreateOSName
      app/history: Limit entries to print to 3
      history: Use shorthand struct initialization
      libpriv/scripts: Fix uint64 printing

Luca BRUNO (4):
      tests/jsonutil: update invalid specifier
      Revert "ci: Freeze FCOS commit to f32"
      tests/override-kernel: support f33
      core: add a guard for temporary-etc context and move to Rust

Prajna Sariputra (1):
      docs: Update links to the OSTree documentation

Timothée Ravier (1):
      rust: Fix various clippy warnings

dependabot[bot] (16):
    ...omitted...

2020.8

14 Nov 14:50
v2020.8
Compare
Choose a tag to compare

Mainly two compose side fixes that will help coreos-assembler.

Besides that, some smaller code cleanups.

Colin Walters (7):
      daemon: Rewrite some core initramfs-overlay logic in Rust
      rust/lockfile: Use from_glib_full to avoid manual free
      scripts: Link to lua issue on error
      treefile: Fix hashing of externals
      compose: Add --previous-commit
      Remove coreos-rootfs command
      Release 2020.8

Jonathan Lebon (2):
      Drop use of `volatile`
      ci: Freeze FCOS commit to f32

Luca BRUNO (1):
      sh: fix bash shebang

dependabot[bot] (2):
      build(deps): bump anyhow from 1.0.33 to 1.0.34 in /rust
      build(deps): bump libglnx from `1dd01d5` to `493d399`


Git-EVTag-v0-SHA512: 6e4c1d1752195dfdef2c80f0c9d5d7091b6c5abfe0d96bf499a3a7fe717b5ae05ab560341a80e1391a579e36c204299abd8db88c59f847353874836e808c3d02

v2020.7

02 Nov 16:14
v2020.7
Compare
Choose a tag to compare

Minor release to fix an undefined behaviour bug found by
Fedora rawhide's GCC (#2301).

Colin Walters (2):
      upgrader: Fix potential use of NULL value
      OWNERS: extend/reorder approvers section

Jonathan Lebon (1):
      Release 2020.7

v2020.6

30 Oct 14:58
v2020.6
Compare
Choose a tag to compare

There is a new ex initramfs-etc command that can be used
to inject local configuration from /etc into an additional initramfs
image. This is still experimental, but we plan to use it
for "complex root devices" for Fedora CoreOS at least, and it can
also be used for cases like dracut LUKS keyboard layouts.
PR: #2170

The "rojig" (embed ostree in RPM) functionality is now
disabled by default.
(If you are using it, please tell us!)

Ensure you're using boot-location: modules, as the current default
boot-location: new is deprecated.
The only reason to use boot-location: new is if you care
about upgrading directly from very old versions of ostree.
At some point it's likely that this configuration option will
be removed entirely.

This release also contains portability bugfixes (for 32bits ARM) and
improvements to the transaction logic, enhancing overall reliability.

Documentation is cleaned up and moved from readthedocs.io to
Github pages, the new site is: https://coreos.github.io/rpm-ostree/

Various CI fixes.

Various Rust cleanups (particularly around FFI).

Colin Walters (18):
      tests: Loosen regexp for French date
      transaction: Port to declare-and-initialize style
      sysroot: Log when forcibly closing a transaction
      client: Close DBus connection before calling reload
      transaction: Unlock more reliably at txn finish
      daemon: Defer reload to an idle
      Add --enable-rojig, disable by default
      Make /run a directory in scripts
      sysroot: Fix usage of sd_journal_send on 32 bit
      compose: Print a warning with boot-location: new
      Update to openat-ext 0.1.8, use new file writing API
      rust: Enable lto by default
      Remove ffi_view_str/ffi_new_string functions
      composepost: Fix to use write_all()
      treefile: Directly write to String
      rust: Use Borrow<GString> in a few places
      Disable `boot-location: new` test
      Release 2020.6

Jonathan Lebon (11):
      rust: adapt to new systemd journal API
      ci: Run C unit tests too
      README.md: Keep it short and sweet
      tests/compose: Bump FCOS config commit to test
      rust/treefile: Use shorthand initialization for Treefile
      tests/compose: Drop FCOS postprocess scripts
      tests/compose: Check filecaps of arping instead of ping
      dependabot: Drop pull request limit to 3
      rust: Update deps
      rust/libdnf-sys: Drop Cargo.lock
      Add new `ex initramfs-etc` command

Luca BRUNO (2):
      daemon: drop an unused sysroot parameter
      daemon/syscore: push livefs introspection to Rust

Timothée Ravier (10):
      docs: Add Jekyll and theme config
      docs: Unify and update README and Index page
      docs: Update Contributing page
      docs: Update Repo Structure page
      docs: Move and update Background page
      docs: Move and update Client administration page
      docs: Move and update Compose server page
      docs: Move and update Treefile page
      docs: Import Hacking page
      docs: Import Release page

v2020.5

15 Sep 14:09
v2020.5
Compare
Choose a tag to compare

This is mostly a bugfix release.

One important fix is adapting to the change in Fedora to transition the rpmdb
to SQLite
. This would
result in Fedora 33 composes using the new backend, making it harder for users
with layered packages to rebase (see
bugzilla.redhat.com/show_bug.cgi?id=1876194#c3).

As a result, there is now an rpmdb key in the treefile which can take e.g.,
bdb or sqlite but which defaults to bdb. This means that f33 composes
will for now keep using BDB, allowing for smoother rebases. Content providers
can opt into the new SQLite backend when convenient.

Another fix worth mentioning is a major improvement in how layered packages are
handled: rpm-ostree now correctly picks older versions of layered packages if
needed to satisfy base packages. This will help solve the "split base/layered
package mismatch"
in
combination with pending work in Fedora at least to publish older versions of
RPMs. Additionally, when a solution is not possible, the error message prints
exactly what the conflict is.

Otherwise, there is the usual churn around CI. For example, the MSRV is now
1.45.2. There are some preparations for using
ostree-rs more extensively in the future.


Colin Walters (11):
      Add testutils generate-synthetic-upgrade
      core: Clearly show when no rpm-md repos are enabled
      util: Remove an (effectively) unused GCancellable
      rust: Fix deprecation warnings
      deploy: Don't leak file descriptor passed for local rebases
      db-list|version: Remove code to parse `..`
      Move the "cbindgen typedefs" to their own file
      ci: Use ostree from lockfile
      compose: Use user mode checkout for sepolicy
      Use ostree-rs, and oxidize more treefile checksumming
      compose: Add rpmdb option, default to bdb

Jeff Law (1):
      spec: Disable LTO

Jonathan Lebon (9):
      app/ex: Drop `reset` alias
      libpriv/origin: Factor out helper to set key from hash table
      libpriv/kernel: Link initramfs into place earlier
      src/{daemon,libpriv}: Better error prefixing
      libpriv/kernel: Allow optional initramfs tmpf
      ci: bump compose tests timeout to 60 minutes
      ci: Bump MSRV to 1.45.2
      core: Use SOLVER_LOCK for locking base packages
      Release 2020.5

Kelvin Fan (1):
      treefile: change `remove-from-packages` implementation

v2020.4

29 Jul 15:40
v2020.4
Compare
Choose a tag to compare

Minor release with some fixes and enhancements for RHCOS.

Server

A symlink from /usr/lib/sysimage/rpm to the rpmdb was added (PR #2154). This
will eventually be the new standard location for the rpmdb on multiple
image-based distros. See this
thread
for
details.

Treefiles now support package requests with version requirements again
(PR #2151). Must be quoted, e.g.:

packages:
  - foo bar 'baz > 1.0'
  - 'boo <= 3.2'

Client

Multiple commands learned the --lock-finalization switch which deploy
already understood (PR #2158). This is used in FCOS and may end up being used in
RHCOS as well.

Fix a potential segfault when upgrading from a local repo, i.e. via rebase /path/to/repo:$rev (PR #2178).


Colin Walters (1):
      postprocess: Add a symlink /usr/lib/sysimage/rpm to the rpmdb

Jonathan Lebon (10):
      Move release instructions to RELEASE.md
      ci/installdeps: add distribution-gpg-keys
      app: Add --lock-finalization switch to other commands
      ci: pull Fedora image from Quay.io
      ci: request 2G of RAM for compilation
      ci: Constrain parallel build jobs
      vmcheck/rojig: Don't use ci.centos.org
      ci: Bump MSRV to 1.43.1
      daemon/deploy: Finish OstreeAsyncProgress after pull
      Release 2020.4

Kelvin Fan (1):
      treefile: Allow greater/less than versions for pkgs

Tom Stellard (1):
      spec: Use make macros

v2020.3

19 Jun 17:54
v2020.3
Compare
Choose a tag to compare

Release 2020.3

This is a thin release overall, with mostly bugfixes and minor tweaks.

  • rpm-ostree compose tree will now print a warning and incur a 5s delay when not using --unified-core. This is part of our push to eventually making it the default. If you cannot make use of --unified-core right now and want to avoid the delay, there is an undocumented environment variable you can find. Please follow up to #729 if you need assistance! PR #2098

  • rpm-ostree rebase /path/to/local/repo:ref is no longer considered experimental. This has been actively used by RHCOS on OCP4 for a while now. PR #2110

  • Fix a bug in the upgrader where downgrade protection would mistakenly kick in if deploying to a new version that was older than whatever the latest version was last pulled. PR #2096

  • Work around the latest f32 crypto-policies using a Lua scriptlet, which we do not yet support, and leaking FIPS mode from the server into composes. PR #2136

  • Fix building on platforms without zchunk support, like RHEL8. PR #2092

Colin Walters (9):
      build-sys: Disable zchunk for libdnf if we don't have it
      compose: Remove --output-repodata-dir
      compose: Add a "warn and sleep" if --unified-core is not provided
      tests/kola: Move into tests/kolainst, run installed
      rojig-build: Just expand %_isa
      test-override-kernel: Support f32
      daemon: Add an error prefix in local repo pulls
      rebase: Remove requirement for --experimental with local rebases
      ffiutil: Format full errors from anyhow

Doug Hellmann (1):
      docs/background: Fix benefits and drawbacks formatting

Jonathan Lebon (8):
      upgrader: Add more error-prefixing
      upgrader: Reset ref before fetching commit by override
      spec: Bump version to 2020.2
      tests: Make more resistant to releasever changes
      app/status: Print missing newline for AutomaticUpdates
      libpriv/scripts: Replace crypto-policies lua script
      ci: Adapt to workspace being HOME
      Release 2020.3

Stephen Gallagher (1):
      spec: Fix up conditionals for ELN

2020.2

15 May 14:03
v2020.2
Compare
Choose a tag to compare

Various improvements to lockfile handling have been made in this release to accommodate Fedora CoreOS builds. The compose tree command learned a new --ex-lockfile-strict switch which enhances the semantics of --ex-lockfile to ensure that all the packages in the compose are defined in the input lockfiles. Also, there is now a new experimental lockfile-repos treefile entry which ensures that rpm-ostree never picks packages from those repos without a lockfile.

There were a few fixes related to client-side initramfs regeneration. In some situations, rpm-ostree would ignore files from the local /etc. Additionally, dracut is now executed with the same base arguments as those used on the compose server.

As usual, there were a slew of improvements to CI. We now moved to CoreOS CI for PR testing. Additionally, we've started converting some of our vmcheck tests to a new model which uses kola to run the test scripts directly on the host instead of being instrumented from outside the host.

There is a new readonly-executables treefile entry which will automatically strip the writable bits from all executable files in the spirit of W^X.

Support was added to replace the kernel using packages named other than kernel, as long as they have the expected Provides:.

A cliwrap flag was added (not enabled by default) that wraps existing binaries, intending to aid transitioning to rpm-ostree based systems.
PR: #1789

Colin Walters (27):
      core,kernel: Set up /etc/passwd for dracut
      ci: Pull Fedora from api.ci
      rust: Bump to glib 0.8
      build-sys: Hard require libostree 2020.1
      history: Avoid erroring if no history database to clean
      syscore: Add some error prefixing
      core: Add error prefixing in import path
      importer: Quote filenames with spaces for tmpfiles.d
      rust: Start porting from failure to anyhow
      rust: Fully remove failure crate
      rust/libdnf_sys: Use uninstantiable type rather than wrapper struct
      rust: rustfmt(*) and (re)add a CI check for it
      core: Add error prefixing when we fail to fetch an rpm-md repo
      tests: Start converting some bits into kola ext framework
      Add support for wrapping binaries (rpm, dracut, grubby)
      ci: Actually run kola tests
      ci: Explicitly fetch before build
      status: Don't output AutomaticUpdates: disabled by default
      tests: Drain more readonly tests into nondestructive/misc
      tests/runkola: New script
      build-sys: Ignore cosa/kola artifacts
      s/RPM-OSTree/rpm-ostree/
      tests: Trim out dead code from libtest.sh, rework SRCDIR
      tests: Move more code to kola
      treefile: Add readonly-executables
      build-sys: Remove --enable-new-name
      Release 2020.2

Jonathan Lebon (32):
      spec: Bump libmodulemd version requirement
      ci/msrv.sh: Use SKIP_INSTALLDEPS=1 before building
      ci: Move `cargo test` into `ci/msrv.sh`
      ci/installdeps: Only builddep from spec file
      app/main: Tell libdnf not to look for `dnf.conf` upfront
      core: Simplify check for kernel package name
      libpriv/kernel: Fix minor comment typo
      status: Quote initramfs args if necessary
      initramfs: Fix using local /etc when also replacing kernel
      tests/compose: Stop freezing on specific FCOS commit
      tests/libvm.sh: Bump container run to use f31
      compose: Include base dracut args in commitmeta
      initramfs: Use dracut args from commitmeta if available
      ci: migrate to new coreos-ci project
      ci: drop FAHC repo in favour of f31-coreos-continuous
      vmcheck: Run vm_kola_spawn separately from if-statement
      vmcheck: Work around read-only /sysroot
      app/dbus: Suggest `journalctl -xe` if bus owner changes
      rust: move libdnf-sys module to its own crate
      app/compose: Rename lockfile variables
      core: Factor out functions to enable/disable repos
      tests/compose: Don't use lockfiles by default
      tests/compose: Go back to freezing FCOS commit
      core: Use `hy_query_run_set()` for excludes
      compose: Add --ex-lockfile-strict
      manifest: Add `lockfile-repos` field
      app/compose: Fix help string for --ex-lockfile-strict
      compose: Allow specifying lockfile-repos only
      composeutil: Return NULL instead of FALSE
      ci: Download the latest ostree even if from stable repos
      ci-commitmessage-submodules: Ignore empty merge commits
      Makefile.am: Link with --enable-new-dtags

Luke Blevins (1):
      Recognize other kernel packages with provides

v2020.1

05 Feb 22:35
v2020.1
Compare
Choose a tag to compare

New year, new release!

Client

The package diffs that rpm-ostree would previously sometimes label downgrades as
upgrades. This was fixed.

Server

When converting RPM entries under /run to tmpfiles.d entries, rpm-ostree now
automatically changes all references of /var/run to /run to appease
systemd-tmpfiles.

compose tree now supports multiple --add-metadata-from-json arguments.

compose tree no longer requires passing an OSTree repo when requested to
simply print the flattened treefile via --print-only.

The treefile now supports a new exclude-packages field. This has a similar
effect to specifying exclude= in all the input yum repos. This is useful to
make sure that certain packages never enter the compose, even if recommended via
Recommends. If dependencies are not met because of excluded packages, the
compose fails.

Development

The minimum supported Rust version was bumped to 1.39. This matches the latest
toolset available in RHEL8.

The repo was hooked up to Dependabot, which will help us stay on top of latest
Rust crate fixes and libdnf changes.

A whole lot more work went into our CI system; among other things, both the
vmcheck and compose testsuites now target Fedora CoreOS, the system has a public
interface, and is based on a much faster and more reliable infrastructure. This
should greatly aid speed of future development, and we are working to extend
this to more Fedora CoreOS
projects
.


Colin Walters (3):
      treefile: Use ref_from_raw_ptr
      importer: Use /run instead of /var/run
      treefile: Add exclude-packages

Jonathan Lebon (19):
      rust: Wrap parent directory handling for Path
      libpriv/rojig: Fix unref'ing using wrong function
      app/compose: Support multiple --add-metadata-from-json
      app: Print help messages on stderr
      app/rojig: Explicitly check a `rojig` section was provided
      app/tree: Drop "YAML" from error message
      app/compose: Skip bwrap self-test if --download-only[-rpms]
      Don't require an OSTree repo for --print-only
      ci: Bump MSRV to 1.39.0
      ci: Run Rust unit tests
      tests/compose: Move files around
      tests/compose: Target FCOS 31, move off of PAPR
      ci: Re-org stages and parallelize tests
      core: Mark all repos as "modular hotfixes"
      libpriv/util: Fix human diff printing for upgrades/downgrades
      rust: cargo update
      ci: Bump compose tests timeout to 45m
      ci: Allow submodule bumps from Dependabot
      Release 2020.1

dependabot-preview[bot] (11):
      build(deps): bump libglnx from `470af87` to `5f3d352`
      build(deps): bump indicatif from 0.11.0 to 0.13.0 in /rust
      build(deps): bump libdnf from `cc36cb7` to `367cf8a`
      build(deps): bump nix from 0.15.0 to 0.16.1 in /rust
      build(deps): bump clap from 2.32.0 to 2.33.0 in /rust
      build(deps): bump structopt from 0.2.18 to 0.3.8 in /rust
      build(deps): bump indicatif from 0.13.0 to 0.14.0 in /rust
      build(deps): bump structopt from 0.3.8 to 0.3.9 in /rust
      build(deps): bump serde_json from 1.0.45 to 1.0.46 in /rust
      build(deps): bump nix from 0.16.1 to 0.17.0 in /rust
      build(deps): bump libdnf from `367cf8a` to `4a7ab08`

v2019.7

19 Dec 17:07
v2019.7
Compare
Choose a tag to compare

One final release before the new decade! 🎉

No major game-changing features in this release. Just a lot of enablement for Fedora CoreOS and RHEL CoreOS.

We've also started tackling our CI debt more seriously, refreshing our vmcheck testsuite to target Fedora CoreOS 31 (we were previously still targeting Fedora Atomic Host 29). Work is underway to also rework the compose tests.

Client

The biggest change client-side is support for read-only /sysroot. This works on top of the enablement that happened in libostree. It is currently not enabled by default; one must explcitly set the sysroot.readonly to true in the sysroot OSTree repo config. We are now making use of this in FCOS.

Server

Lockfiles can now be written in YAML. This is useful in e.g. FCOS, where we want to be able to annotate why an override is in place.

Some work went into FIPS enablement for RHCOS. For example, we now tweak the vmlinuz HMAC file to contain a relative path to the image. This works in tandem with a change in dracut to support relative paths in that file. We also now always bake in the /dev/[u]random device nodes in the initramfs, which is needed for FIPS mode.

There is now a automatic-version-suffix treefile key which allows customizing the character to use to separate the build counter (which previously was always .). This can be useful when trying to make your versioning scheme respect semver.

Development

We've made the zchunk repo metadata support a build-time conditional since RHEL8 currently does not support it.

Some tweaks were made across the codebase to satisfy clang's scan-build tool, but no critical issues were found.

As mentioned higher up, the vmcheck testsuite has had an overhaul. More specifically, it now leverages kola to bring up a VM per test rather than sharing between subsequent tests. This should provide much more testing reliability and flexibility in the future.

Look ahead to more changes in our testing and CI story!


Colin Walters (17):
      Bump minimum rust to 1.37
      rust: cargo update
      OWNERS: New file for Prow integration
      ci/prow: Use build-check.sh
      ci/prow: Use cosa buildroot
      ci/papr: Drop cosa build
      Add hidden `coreos-rootfs seal` command
      unpacker: Build with older libarchive without zstd
      HACKING.md: Document libdnf vendoring rationale
      Detect whether zchunk (zck) is available at build time
      tree-wide: [scan-build] Initialize some variables
      tree-wide: [scan-build] Add some not-null assertions
      kargs: Support --append and --delete simultaneously
      kernel: Append /dev/{u,}random to initrd instead of dracut caps
      daemon: Use MountFlags=slave and opt-in to OSTree read-only /sysroot
      compose: Add an `automatic-version-suffix` key
      tests: Misc tweaks

Jonathan Lebon (21):
      app/status: Fix printf format string for 32-bit
      ci: Also bump MSRV to 1.37.0 for CCI Jenkins
      app/reset: Fix argc range check
      ci/jenkins: don't pass `GIT_COMMIT` to ci-commitmessage-submodules.sh
      ci/papr: Drop f29-codestyle and rust-min-version-check
      tests/vmcheck: Fix test-misc-1.sh syntax
      ci/papr: Drop `required` commit status context
      core: Filter locked packages by checksums before depsolving
      libpriv/kernel: Use g_build_filename instead of g_strconcat
      libpriv/kernel: Hack around vmlinuz path in HMAC file
      core: Split out function to get enabled rpmmd repos
      rust/lockfile: Add more metadata to generated lockfiles
      libpriv/kernel: add cap_mknod to dracut run
      ci: re-use variable for container images
      ci: Archive built RPMs
      ci: Add the built RPMs as cosa overrides
      tests: Add hidden `testutils` subcommand
      app/override: Don't include rpmostree-ex-builtins.h
      Rework vmcheck to use `kola spawn`, move off of PAPR
      libdnf: Bump to cc36cb7492275e34c10148176824a35a3a67a461
      Release 2019.7

Rafael Fonseca (2):
      rust/lockfile: Add YAML support
      rust/utils: move common code to a function