Releases: coreos/rpm-ostree
v2020.1
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
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
v2019.6
Time for a new release! In fact, the last one was exactly two months ago.
The first thing you may have noticed if you're reading these notes is that
rpm-ostree
is now part of the github.com/coreos
organization. There are
multiple reasons for this; the main one being that projectatomic
is being
sunset. The focus of most rpm-ostree
development is on Fedora CoreOS (and
derivatives like RHEL CoreOS); including the new build tool
coreos-assembler. However, it
does not imply less commitment towards other variants (or distributions)
such as Fedora Silverblue and Fedora IoT that aren't "CoreOS based" currently.
For example, the rpm-ostree compose tree
CLI/interface has and will remain
100% compatible, and we continue to support Anaconda.
However, with the project focusing on Fedora CoreOS, moving to the coreos
org
will allow us to have better team management and consistent CI across all
coreos
repos.
As for the release itself, there are mostly some minor bugfixes and enhancements
relevant to Fedora CoreOS integration. One new feature is the addition of the
experimental ex history
command. A lot of work has also gone into our CI
system. See below for details.
Client
The deploy
and rebase
commands now support a --disallow-downgrade
switch
to enable the same downgrade protection that upgrade
enjoys. This is relevant
for FCOS, where the update driver (Zincati)
will make use of this.
The deploy
command no longer exits with code 77 if the target version is
already deployed. Instead, this behaviour is now gated behind a
--unchanged-exit-77
. This was done to harmonize the UX across the different
commands when the invocation turns out to be a no-op. Now both deploy
and
upgrade
behave the same in this respect (as well as install --idempotent
,
which supports the same switch).
There is a new experimental command: ex history
. The idea is similar to dnf history
; it provides an exact account of all the deployments into which the
system was rebooted. The logging is tied to the systemd
journal, such that old
entries are naturally garbage-collected. As usual, the behaviour and UX are
subject to change as we refine this feature.
Server
The treefile now supports an arch-include
key to make an include
directive
conditional on the basearch
of the system. This is used for example in
fedora-coreos-config, where a
lot of multi-arch enablement is happening.
There were multiple fixes surrounding merge semantics of multiple treefiles via
the include
mechanism. For example, the etc-group-members
is now correctly
merged.
Development
Our CI is currently undergoing some revamping. We're experimenting with various
approaches with the hopes of moving away from
PAPR towards something more reliable
and which fits better with the rest of our CoreOS and OpenShift CI ecosystems.
Related to the above, an important change to highlight is that the canonical RPM
spec file for rpm-ostree is now part of the repository itself (at
packaging/rpm-ostree.spec.in
). The main purpose is tighter CI integration with
systems that consume RPMs (such as
coreos-assembler).
Colin Walters (12):
cli: Add RPMOSTREE_CLIENT_ID environment variable
treefile: Support `arch-include` (#1886)
Move openat_utils to its own crate
ci: Just use cosa as a buildroot too
importer: Add some error prefixing
ci: More fixes for cosa build
ci: Add prow Dockerfile
rust: Add nix as a dependency
README.md: Add a "why" section, update background.md
Clarify license situation to include GPLv2, relicense Rust code
ci: Remove papr ex-container check
postprocess: Ensure dirs are 0755 regardless of umask
Jonathan Lebon (17):
app/deploy: Add --disallow-downgrade switch
daemon: Tweak default flag handling logic
ci: Some more el7 path pruning
ci: Allow passing HEAD commit to ci-commitmessage-submodules.sh
ci/installdeps.sh: Nuke temporary libdnf dep workaround
ci/installdeps.sh: Pull ostree from rdgo on f30 too
packaging: Drop support for dist-snapshot w/o compose
packaging: Fix repomanage usage
packaging: Move canonical spec file here
packaging: Adapt to cargo vendor now being built-in
vmcheck: Adapt test-override-kernel.sh
spec: Fix documentation files
ci: Add Jenkins pipeline
rust/treefile: Various treefile merging tweaks
app/deploy: Gate 77 exit behind --unchanged-exit-77
Add new `ex history` command
Release 2019.6
Rafael Fonseca (1):
app,daemon: Use public libostree's kargs API
Timothée Ravier (1):
postprocess: Quote OSTREE_VERSION value
worldofpeace (1):
Move D-Bus conf file to $(datadir)/dbus-1/system.d
v2019.5
A lot of work in this release was focused on enablement for Fedora CoreOS,
especially on the compose server side. Though many of these features are of
course useful on their own.
On another note, the oxidation process throughout the tree is slowly coming
along, with Rust code now also calling into C code to enable it to reach new
areas of the codebase.
Client
The deploy
command now also supports the --lock-finalization
switch just
like upgrade
. This will be used by
Zincati to accurately control host
upgrades in Fedora CoreOS.
PR #1846
Package layering is now supported for RPMs compressed with zstd.
PR #1866
The db diff
command now supports a --json
flag for machine-friendly output
format.
PR #1844
Server
The treefile now supports two new related fields: ostree-layers
and
ostree-override-layers
. These can be used to add OSTree content directly on
top of the final compose. This is useful in workflows where host content is
managed by both RPMs and regular file trees. It's also likely at some point
the client side will use this to make it convenient and easy to layer non-RPM
content.
PR #1830
The treefile also supports a new add-commit-metadata
key, which allows for
injecting arbitrary commit metadata just like --add-metadata-from-json
.
PR #1865
The ${releasever}
variable is now accepted in more places in the treefile,
such as in ref
, automatic-version-prefix
, and mutate-os-release
.
PR #1848
The treefile include
key now supports a list of filenames, rather than just a
single one. This essentially allows "multiple inheritance" of treefiles.
PR #1870
The compose tree
command now supports new experimental support for lockfiles
using the --ex-lockfile
and --ex-write-lockfile-to
switches. The semantics
are very similar to e.g. Cargo.lock
or glide.lock
. This will be used in
Fedora CoreOS to have better control over the input RPMs. As expected from an
experimental feature, it's possible that the exact behaviours will change as we
gain more experience from it.
PRs #1745 #1849 #1851 #1867
Another new switch to compose tree
is --parent
which allows overriding the
parent commit of the final resulting OSTree commit. This is useful in workflows
where one wants to maintain OSTree history at a higher-level than on the "build
master" stream.
PR #1871
Development
As prep for moving our CI to target Fedora CoreOS, the vmcheck testsuite no
longer requires Python 3 to be installed on the targeted host.
PR #1850
Special thanks to first-time contributor Rafael Fonseca, who added the initial
support for lockfiles!
Colin Walters (7 PRs, 7 commits)
compose: Add ostree-layers and ostree-override-layers (#1830)
composeutil: Add error prefixing to legacy mkdev path (#1845)
daemon: Remove unused pkgcache method (#1853)
daemon: Ensure dict is initialized in refresh_md impl (#1856)
Add InitiatingClientDescription property to transactions (#1859)
scripts: Ignore new glibc lua %post (#1869)
treefile: Support multiple includes (#1870)
Jonathan Lebon (11 PRs, 28 commits)
app/deploy: Add --lock-finalization switch (#1846)
tests/vmcheck: Fully drop python 3 requirement (#1850)
app/composeutil: Document lockfile format in codeblock (#1854)
core: Check if cached pkg is in partial state (#1860)
unpacker: Add support for zstd (#1866)
Release 2019.5 (#1875)
PR: #1844
app/db-diff: Rename "old" -> "from" and "new" -> "to"
app/db-diff: Check upfront for invalid format arg
daemon/package-variants: Fix docstring arguments
app/db-diff: Add --format=json output
PR: #1849
core: Strengthen how we enforce lockfiles
core: Fix outdated misleading comment
core: Use variable for sack higher up
PR: #1865
compose: Hash all treefile externals and flattened manifest
bindgen: Also track Cargo.lock
tests/compose: Fix unified rev-parse test
treefile: Add new `add-commit-metadata` key
app/compose: Reorder logic around treefile parsing
app/composeutil: Split out JSON metadata reading
app/composeutil: Refactor reading JSON metadata from file
PR: #1867
rust: Move open_file test to utils module
lockfile: Allow omitting the digest
lockfile: Allow specifying multiple lockfiles
lockfile: Switch packages JSON spec to an object
lockfile: Switch to writing it from Rust
lockfile: Rename function to ror_lockfile_read
PR: #1871
composeutil: Add cancellable arg to write_composejson
compose: Add --parent option
Rafael Fonseca (4 PRs, 5 commits)
compose: Add --ex-lockfile and --ex-write-lockfile-to (#1745)
treefile: allow ${releasever} in more keys (#1848)
app/status: Group EVRs for RemovedBasePackages if possible (#1852)
PR: #1851
compose: Move json lockfile parsing to Rust
rust: Move open_file to utils.rs
William Caban (1 PR, 1 commit)
core: Update to recognize kernel-rt as kernel packages (#1872)
v2019.4
There are no major new features in this release. The focus has mostly been on
bugfixes and enabling Fedora and Red Hat CoreOS assembly (performed by the aptly
named https://github.com/coreos/coreos-assembler) and runtime.
There are some preparatory patches that landed for a new history
command,
analogous to dnf history
, which will allow one to inspect the OSTree history
of the system. You can see a snapshot of how this will look in:
#1813
Client
There is now a new API to allow external agents driving RPM-OSTree to have more
precise control over the update process. This will be the case for Fedora
CoreOS, which will be controlled by
Zincati. This new API essentially allows
separating the deploying stage from setting it as the default one on reboot.
PR: #1814
The rebase
command now supports changing just the custom origin/description by
allowing the same checksum refspec to be provided.
PR: #1807
The kargs
command now simply prints the current kargs without any preamble to
make it cleaner and easier to consume by scripts.
PR: #1833
Relatedly, the kargs --delete
command is now capable of deleting duplicate
kargs.
PR: #1835
The notorious "Some base packages would be replaced" error now includes a
suggestion to upgrade
first. At least for Silverblue, which has daily
composes, this should work around the base/split issue the majority of the time.
PR: #1818
Layering packages signed by a GPG subkey should now work. This is the case for
the Brave browser.
PR: #1819
The status --json
command now outputs JSON in pretty format to be nicer to
humans who sometimes directly use it.
PR: #1828
Relatedly, if the daemon is busy servicing a transaction, status
will now show
the exact command-line that was used. This is part of the prep patches for the
history
command.
PR: #1824
Server
Add a workaround for packages which expect /etc/selinux/config
to exist early
in the compose.
PR: #1806
Unified composes (which happen on both servers and clients) now explicitly print
out the stage at which posttrans
scriptlets are executed.
PR: #1836
compose tree
now supports a --no-parent
option. This is used in
coreos-assembler to take advantage of all the niceties that a previous commit
implies (e.g. change detection, and SELinux optimizations), while still having
final OSTree commits that do not maintain history.
PR: #1829
compose tree --write-composejson-to=FILE
now also includes the OSTree content
checksum of the commit. This is useful for tracking content across a pipeline
while the checksum itself might change as it is "grafted" onto different
branches.
PR: #1822
For more background information on the use case around the two previous
features, see discussions in:
coreos/coreos-assembler#159
Development
Docs for a container/VM workflow using Vagrant have been updated to use the
latest Vagrant box for Fedora Atomic Host, however it is noted that future
development targets Fedora CoreOS primarily.
PR: #1831
The Rust part of the codebase has now been updated to edition 2018. We're
excited to be increasing the proportion of Rust in the tree! This is mostly
happening through the addition of new code, though we do also sometimes port C
code to Rust in the process.
PR: #1812
Now that we no longer support el7 platforms, we have completely dropped the use
of Python 2 in our test harness. This is somewhat prep for rebasing our CI to
Fedora CoreOS, which in fact completely dropped Python support.
PR: #1828
Colin Walters (5 PRs, 5 commits)
core: Add a hack for /etc/selinux/config and %pre (#1806)
rebase: Support identical checksum rebases (#1807)
scripts: Update fedora-release-workstation lua override (#1808)
kargs: Just print args, don't add additional text (#1833)
core: Split posttrans into separate output status (#1836)
Jonathan Lebon (15 PRs, 30 commits)
Add new D-Bus APIs for deployment finalization (#1814)
core: Also suggest `upgrade` for base/layered split (#1818)
libdnf: Bump for GPG subkeys fix (#1819)
app/compose: Add ostree-content-checksum to composejson (#1822)
libpriv/kargs: Tweak delete restrictions (#1835)
Release 2019.4 (#1841)
daemon: Bump sysroot mtime to force reload (#1842)
PR: #1810
tests/vmcheck: Adapt to kernel v5.0
rust: Bump dependencies
PR: #1812
rust: Stop using `extern crate` and `#[macro_use]`
rust: Reduce visibility of items
rust: Update to 2018 edition
PR: #1816
daemon: Carry option GVariant into transaction type
app: Simplify option variant creation
app: Drop `ex reset` prototype
app/main: Make rpmostree_subcommand_parse local
PR: #1823
libpriv/util: Factor out function to get version
daemon/utils: Allow unfiltered deployment variant
app/status: Strengthen deployment printing
PR: #1824
Copy used command-line and set as transaction title
libpriv/util: Expand set of safe shell chars
PR: #1825
daemon/deploy: Set transaction title earlier
daemon: Rework kargs transaction
libpriv/util: Factor out shell quoting function
PR: #1828
app/status: Make --json output pretty JSON
tests: Bump to Python 3 only
vmcheck/overlay: Drop dependency on host Python
PR: #1829
tests/compose: Add RPMOSTREE_TMPDIR_LOCATION
compose: Add --no-parent option
tests/compose: Fix subtest scoping
Robert Fairley (2 PRs, 2 commits)
libvm: Use shared memory for SSH control socket instead of /var/tmp (#1827)
vagrant: Add header noting coreos-assembler (#1831)
Robert Fairley (1 PR, 2 commits)
PR: #1826
vagrant: Use a Fedora 29 container
HACKING: Add link to tests README
v2019.3
v2019.3
This is the first release that officially drops support for el7 platforms. We're
focusing now on el8 and Fedora platforms. This will allow us to drop a lot of
legacy code and reduce friction as we implement new features. As such, the last
supported version on el7 is v2019.2. We may backport patches to that release if
anyone encounters issues.
Note if you're a user of Red Hat Enterprise Linux Atomic Host (or derivatives
such as CentOS Atomic Host) - don't worry, if any important issues arise
(particularly any security-related ones) we will fix them. That said the
development focus is on Fedora CoreOS and Red Hat Enterprise Linux CoreOS.
PR: #1785
There were a few other significant backend changes in this release. Notably,
our libdnf submodule has been updated to point to the latest version available.
In other words, we are now using the same version of the backend library that
dnf
itself uses. This should fix a few bugs and also unblock further work such
as adding support for modules.
PR: #1404
And finally, though late in the cycle, we've bumped our CI testing to Fedora 29.
Fortunately, there were no nasty surprises there, though you can expect that we
will be more timely in the future for Fedora 30.
PR: #1787
Client
Alex Larsson added support for layering some packages that own files in /opt
.
Notably, layering Google Chrome should now work. Packages that need to write
data at runtime in /opt
may still not work.
PR: #1795
We now have bash completions for the rpm-ostree CLI! Thanks to our new
contributor Chris Weeks!
PR: #1499
The rpm-ostree client will now close the client side monitoring connection for
completed transactions after 30s. This should mitigate issues with clients such
as GNOME Software holding on to the transaction, and thus blocking any other
transaction from starting.
PR: #1755
A new remove
alias has been added for the uninstall
command for better CLI
compatibility with dnf
.
PR: #1783
The status
command will now always show a diff of the booted to the pending
deployment. Previously this was only the case after upgrade
commands. This is
prep for further UX enhancements around package diffs.
PR: #1760
Kalev Lember added a new D-Bus API for enabling and disabling yum repositories
from GNOME Software.
PR: #1780
The kargs
command now correctly supports KEYWORD
-style kernel arguments
which do not have an associated value.
PR: #1796
Server
compose tree
gained a new option --download-only-rpms
which can be used to
conveniently mirror the RPMs for a given treefile.
PR: #1798
There is a new boot-location: modules
key which you can use to have the kernel
end up in just one location. To be used by Fedora CoreOS.
PR: #1773
Every key in a treefile now supports -
for consistency, where _
was used.
This should make YAML treefiles more pleasing to write.
PR: #1749
The treefile now accepts a new basearch
member. This can be used to assert
that the treefile is being composed on the right base architecture. But it can
also be useful as an easy way to determine the basearch
of a host by reading
/usr/share/rpm-ostree/treefile.json
.
PR: #1766
Alexander Larsson (1 PR, 2 commits)
PR: #1795
Test that /opt layering works
Support layering rpms with files in /opt
Chris Weeks (1 PR, 1 commit)
Add support for bash completion (#1499)
Colin Walters (11 PRs, 20 commits)
daemon: Time out client txn connections after 30s (#1755)
cli/cancel: Close txn bus connection after cancelling (#1759)
rust: Bump crate dependencies (#1765)
compose: Make initramfs.img world-readable (#1767)
ci: Add a f29 FCOS build (#1774)
compose: Add --download-only-rpms (#1798)
PR: #1763
tests: Don't make system user with differently-named group
main: Move cancellable creation later
bwrap: Add an API to take a file descriptor
compose: Support RPMOSTREE_PRESERVE_TMPDIR=on-fail
PR: #1764
compose: Pass treefile directly to core
rust/openat: Add helper to retrieve file type
rust: Add clap
PR: #1773
compose: Add `boot-location: modules`
compose: Remove support for boot-location: both
PR: #1790
compose: Add treefile as arg to postprocess
postprocess: Handle etc vs usr/etc
PR: #1794
Always enable dfd-over-dbus
build-sys: Always enable compose tooling
build-sys: Drop support for ancient librpm
Jonathan Lebon (15 PRs, 44 commits)
Rebase to latest libdnf (#1404)
daemon/sysroot: Fix ActiveTransaction property (#1769)
rust: Bump dependencies (#1770)
build: Hook up bash completions (#1772)
ci: Stop testing on CentOS 7 (#1785)
build: Move completions to /usr/share (#1786)
core: Don't exclude modular packages (#1797)
Release 2019.3 (#1801)
PR: #1749
rust: Pass through rustfmt
rust/treefile: Support dash convention for all options
rust/treefile: Don't hardcode list of architectures
rust/treefile: Use HashMap to collect extra fields
PR: #1760
app/status: Always print pending deployment diff
libpriv: Teach diff printer different formats
app/libbuiltin: Tweak print_treepkg_diff logic
app: Drop rpmostree_print_treepkg_diff()
app: Factor out function to generate diff summary
PR: #1766
rust/treefile: Add basearch key
rust/treefile: Rename arch -> basearch
tests/libtest.sh: Lift assert_jq from libvm.sh
PR: #1778
ci: Build the whole tree, not just rust bits
rust: Freeze rand crate to v0.6.1
PR: #1783
app: Alias `remove` -> `uninstall`
core: Add all packages to the sack upfront
core: Fix leak of a DnfPackage
daemon/deployment-utils: Specify array element type
upgrader: Add missing check for error
app/status: Fix spacing in function call
PR: #1787
vmcheck/test-rojig-client.sh: Don't check full rojig NEVRA
importer: Filter out /var/lib/rpm from rpm
Makefile-libs.am: Work around `g-ir-scanner` issues with clang
libpriv: Add more error-prefixing in sanity checks
ci: Fix ex-container LOGDIR
app: Drop unused variables
ci: Bump minimum Rust version to v1.31.0
tests/check: Tweak /usr/bin/sh path
ci: Fix repo editing in installdeps.sh
ci: Drop c7 support for installdeps.sh
ci: Bump to f29
PR: #1796
build: Bump minimum glib2 version to 2.56
libpriv/kargs: Copy libostree patch to support KEYWORD kargs
libpriv/kargs: Strengthen and simplify new kargs APIs
tests/test-kargs: Check for no error first
libpriv/kargs: Use `const char*` for delete API
Kalev Lember (1 PR, 1 commit)
daemon: Add new ModifyYumRepo DBus API (#1780)
v2019.2
This is a bugfix release, mostly centered around compatibility with
SELinux.
The client is now able to rebase from a locally specified
repo. The syntax for this is:
rpm-ostree rebase /path/to/repo:ref-or-checksum
This essentially avoids a preemptive ostree pull-local
, though in some
cases, one cannot rely on it due to SELinux. This is useful in Red Hat
CoreOS, where we rebase from a repo inside a mounted oscontainer
(ostree-repo-in-container).
PR #1732
The db diff --changelogs
learned to group changelog printing by SRPM
rather than rewriting it each time.
PR #1738
One minor addition here is that scriptlets from layered packages can now
rely on /run/ostree-booted
to detect OSTree systems. This will be
notably used for akmods support in Fedora Silverblue. For more
information, see https://bugzilla.redhat.com/show_bug.cgi?id=1667014
PR #1750
There are two follow-ups to the recent move to change the home root
directory to /var/home
(#1726). First, the permissions for
/usr/etc/default/useradd
were wrong. This is now fixed. Secondly, the
SELinux policy needed to be recompiled in order for some of its dynamic
rules to pick up on the changes. Additionally, the /var/home -> /home
alias was being problematic with the new changes. This release removes
that alias, as well as inserts a /home -> /var/home
alias. For more
information, see https://bugzilla.redhat.com/show_bug.cgi?id=1669982.
PRs #1753 #1754
This release fixes rpm-ostree compose install --unified-core
, which was
previously broken.
PR #1743
Colin Walters (4 PRs, 4 commits)
rust: Split openat helpers into module (#1737)
compose: Fix `install --unified-core` (#1743)
composepost: Fix permissions on /usr/etc/default/useradd (#1753)
treefile: Fix octal mode for rojig spec too (#1756)
Jonathan Lebon (7 PRs, 9 commits)
app/rebase: Support local repo remotes (#1732)
libpriv/rpm-util: Group by SRPMs when printing changelogs (#1738)
libpriv/scripts: Add /run/ostree-booted for scriptlets (#1750)
docs/treefile: Add some more details to mutate-os-release (#1751)
Release 2019.2 (#1757)
PR: #1735
rust/treefile: Include filename in more error msgs
rust/treefile: Convert more functions to Fallible
PR: #1754
postprocess: Add /home -> /var/home SELinux substitution
libpriv: Rebuild policy during postprocessing
v2019.1
New year, new rpm-ostree! But don't let the new major version fool you;
this is mostly a bugfix release.
Client
There was a bug which caused the client to fetch rpm-md twice during
update and layering operations. This has been fixed now.
PR: #1723
One of the most common issues hit by users is
#415. In this
release, the error message was tweaked slightly to give better context.
PR: #1717
Server
The automatic_version_prefix
manifest field now has support for date
tags. For example, one can now use a value like 30.<date:%Y>
and
rpm-ostree will generate values like 30.2019.0
then 30.2019.1
,
etc... The date format is mostly identical to strftime
. See the
treefile documentation for details.
PR: #1721
rpm-ostree will now also fix /etc/default/useradd
so that newly
created users will have their homes pointing at /var/home/$USER
. This
is mostly a cosmetic fix so that e.g. shells correctly show ~
when in
the home directory. There's more work to do in e.g. Anaconda so that
this bug is fully fixed though.
PR: #1726
Development
The minimum supported Rust version was bumped to 1.29.2. This matches
the latest release of the Red Hat Developer Toolset.
PR: #1716
Colin Walters (4 PRs, 6 commits)
core: Fix rpm-md repo caching (#1723)
PR: #1716
compose: Use dracut tmpdir under target root
(and 2 commits from other authors)
PR: #1726
compose: Change /etc/default/useradd to use HOME=/var/home
compose: Add a stub "postprocess" entrypoint in Rust
PR: #1727
Add rayon dependency, do postprocessing in parallel
compose: Minor further oxidation of postprocessing
Jonathan Lebon (7 PRs, 8 commits)
packaging: Don't include checksums for ltmain.sh (#1715)
core: Explain a bit the base/layered split mismatch issue (#1717)
rust: Add Cargo.lock (#1719)
rust: Bump dependencies (#1720)
packaging: Don't include checksums for libtool.m4 and configure (#1731)
Release 2019.1 (#1736)
PR: #1716
rust: Drop backtrace lock
ci: Bump minimum Rust version to 1.29.2
(and 1 commit from other author)
rfairley (1 PR, 1 commit)
libpriv/util: Add date field in auto-versioning (#1721)
v2018.10
After almost 2 months of development, v2018.10 is out! This is likely
the last release of the year, barring hiccups requiring a respin. We're
trying something new this time by splitting changes into those affecting
the client-side, the compose server, and rpm-ostree development itself.
Note also that releases are now published as GitHub releases. The
motivation for this is so that tarballs can be uploaded containing the
vendored Rust sources.
Client
rpm-ostree gained much nicer progress bars courtesy of the Rust
https://crates.io/crates/indicatif crate.
PR: #1661
There is a new rpm-ostree-bootstatus.service
systemd unit (which isn't
yet enabled by default for Fedora globally) that should aid in debugging
exactly when a given upgrade was completed.
PR: #1693
The reset
command is no longer an experimental command. As such it has
been hoisted to the top level of the command line.
PR: #1682
The AvailableUpdate
section in the status -a/-v
output now includes
any CVEs attached to packages in the update. This allows one to better
gauge the severity of the advisories and urgency of the next reboot.
PR: #1695
The db diff --changelogs
output has been tweaked to make it easier to
tell which changelog entries correspond to which packages.
PR: #1687
The status
command now also prints a clearer error message if the GPG
key used to sign the commit is missing.
PR: #1650
Server
Work continues on fleshing out "rojig" as an additional mechanism to
transport and manage rpm-ostree builds. The functionality now lives in
rpm-ostree compose rojig
, although it is still classified as
experimental.
PR: #1512
This release includes a lot of improvements to the compose workflow in
the new unified mode, which is now in use in both Fedora CoreOS and Red
Hat CoreOS. For example, it is now possible to directly compose into an
archive repo. Additionally, composing into an existing branch no longer
requires the full previous commit.
PR: #1657, #1704
Although it is not yet the default for compatibility reasons, a future
version will eventually deprecate the legacy non-unified mode. If you
compose your own OSTrees, please give it a try; you can specify
--unified-core
directly, or try out coreos-assembler which uses this
by default.
Development
The indicatif work required some under-the-hood refactoring in making it
easier for us to "oxidize" by bridging the C and Rust sides. Other
software which is using Rust and C together might be interested in some
of the work here. See for example: #1688 and #1691
Improvements to the development/testing workflow were made by syncing
libsolv from the build container to the virtual machine running the
make vmcheck
tests. This helps avoid library dependency errors when
running tests locally.
PR: #1676
As always, thanks to all the contributors, especially to first-time
contributor Marcel Lambacher!
Colin Walters (24 PRs, 34 commits)
Add `compose rojig` command (#1512)
compose: Factor out helper for writing composejson (#1636)
Use autocleanup for task output (#1640)
rust: Move FFI bits into `ffi` submodule for each file (#1646)
core: Disable librpm SELinux plugin when writing rpmdb (#1647)
compose: Make --print-only happen earlier and be quiet (#1648)
rust: Remove `pub` from modules (#1649)
Move varsubst code into Rust, use it in treefile parsing (#1655)
build-sys: Turn Rust LTO off by default, add --enable-lto flag (#1664)
core: Typo in indicatif commit: `metdata` → `metadata` (#1673)
rust: Use `failure` crate for errors (#1675)
scripts: Add a hack to handle RHEL7's glibc-common.post (#1678)
rust/ffi: Change dfd handling to unwrap, create naming convention (#1685)
rust: Use Fallible<> more (#1690)
compose: Add a CUtf8Buf copy of rojig_name (#1691)
Add rpm-ostree-bootstatus.service (#1693)
daemon: Drop unused mutex (#1699)
rust/treefile: Add container key (#1702)
PR: #1641
rust: Create generic ref_from_raw_ptr function
rust: Merge glibutils with utility FFI helpers
PR: #1661
Use indicatif for progress
daemon/transaction: Clear out libostree progress consistently
PR: #1665
libvm: Don't sync rust target/
build-sys: With external cbindgen, drop Rust lib dependency
PR: #1674
ci: Verify rustfmt
rust: Rerun rustfmt
PR: #1676
vmcheck/multitest: Print when we're waiting
build-sys: Add bindgen bits to .gitignore
build-sys: Fix uid check when we don't have /usr/bin/cbindgen
vmcheck/multitest: Time execution of each test
vmcheck: Sync over libsolv and zchunk-libs too
(and 3 commits from other authors)
PR: #1688
rust/ffi: Convert String creation API, extend docs
rust/ffi: More "view" changes, for bytestrings
rust/ffi: Convert str func to new "view" naming convention
Jonathan Lebon (24 PRs, 47 commits)
rust: Drop crates-io patch and use 0.4.0 (#1639)
man: Fix references to automatic timer and service (#1652)
app: Wrap `Version` in `--version` in quotes (#1654)
compose: Don't require SELinux policy in legacy path (#1656)
compose: Use previous sepolicy if available (#1659)
compose: Print devino cache hits on commit (#1660)
compose: Allow --print-only without bwrap support (#1666)
compose: Drop 'ex' prefix for --unified-core in msg (#1668)
compose: Initialize out_changed var before --print-only (#1669)
core: Tweak "Importing" messages (#1681)
configure.ac: Add "GitHub release" step to release workflow (#1684)
compose: Fix EBADF in unified core mode without cachedir (#1698)
daemon/deploy: Fix free() of override replace pkgs (#1709)
PR: #1643
libpriv: Sanity check that paths are OSTree compatible
compose: Check that add-files are compatible after parsing
docs/treefile: Add info about paths for add-files
PR: #1657
compose: Support all target repos in unified mode
compose: Always put workdir on same filesystem as pkgcache
PR: #1658
compose: Check for error when opening policy
postprocess: Minor glnx_console interaction fixes
app/tree: Check upfront if repo is writable
passwd-util: Drop unnecessary OstreeRepo arg
postprocess: Rename xattr callback
core: use DEVINO_CANONICAL regardless of repo type
app/compose: Minor comment tweak
app/compose: Use g_printerr for note
app/compose: Check conflicting opts earlier
app/compose: Drop helper cachedir_dfd() function
PR: #1676
daemon/utils: Finish OstreeAsyncProgress after pull
daemon/transaction: Emit progress end signal
ci: Go back to centos/7/atomic/smoketested
(and 5 commits from other authors)
PR: #1682
Move `reset` out of experimental
app/ex: Nuke `ex kargs` compatibilty alias
PR: #1686
daemon/transaction-types: Fix dnf cache override
daemon/transaction-types: Drop unneeded arg
PR: #1687
libpriv/rpm-util: Tweak changelog entry indentation
libpriv/rpm-util: Use g_print instead of printf
PR: #1695
Print CVEs fixed in available updates
tests/utils/updateinfo: Rename function
tests/utils/updateinfo: Assuage flake8
PR: #1704
compose: Don't require full previous commit
compose: Factor out SELinux policy checkout
libpriv/passwd-util: Rework error-handling
PR: #1708
daemon: Perform kargs in cache-only mode
daemon/kargs: Fix handling of staged deployments
PR: #1713
Release 2018.10
Cargo.toml: Fix backtrace crate to compatibile version
Marcel-Lambacher (1 PR, 1 commit)
app/status: Output corresponding status message if GPG key is missing (#1650)
2018.9
https://github.com/projectatomic/rpm-ostree/releases/tag/v2018.9
This is the first release which hard-requires the new staging feature.
We consider the feature to be stable now, though some users have
encountered issues on slower disks during deployment finalization. This
should be alleviated in the latest OSTree release (v2018.9) which
increased the service timeout. See:
#1568
PR #1546
Related to the above, failures that occurred during finalization of
staged deployments will now be prominently displayed in the output of
rpm-ostree status
on reboot.
PR #1601
And related to rpm-ostree status
, note that the JSON output provided
by --json
should now be much less spammy as the package list is now
filtered out.
PR #1577
While rpm-ostree hard depends on Rust, we are only slowly rewriting
code. There are a few reasons for this; one is that any rewrite entails
risk. However, the "treefile" parsing code is among the ugliest, and
hence was a good candidate for oxidation. The new Rust treefile parsing
code (for composes) much better handles inheritance between treefiles,
among other things.
(According to tokei, the percentage of Rust code increased from 1.7% in
v2018.8 to 2.6%)
One additional note about our oxidation process: we now enforce
compatibility at a specific rustc version. That version for now is
1.26.1 to match the current version in the Red Hat Developer Toolset.
PR #1606
A lot of internal preparatory cleanup landed for adding a new
compose rojig
command dedicated to that:
#1081 The
compose tree --ex-output-rojig-set
option has been removed. If you
want to play with rojig in the current release, use compose tree
and
then ex commit2rojig
.
We now override the %post scripts for a few packages in CentOS/RHEL7; at
least an Atomic Host-like package set can be built using
--unified-core
which brings faster build speeds.
PR #1612
The layering logic learned to be smarter about re-using the rpmdb in
current deployments to avoid checking out the whole tree upfront. This
should allow some rpm-ostree layering operations to be much
lighterweight that before.
PR #1502
Related to layering, rpm-ostree now no longer overrides the
metadata_expire
option of repositories. In practice, this should mean
that e.g. the Fedora stable repository will be refreshed less often than
necessary.
PRs #1562, #1587
There have been more reports of the ex livefs
feature potentially
corrupting the bootloader symlinks, rendering the system unbootable. As
such, the feature is now gated behind an explicit --i-like-danger
switch until we investigate the issue further.
PR #1622
The db diff
command now learned to automatically diff against the
rollback deployment if there is no pending deployment. This is useful to
see the package diff after rebooting into an update.
PR #1565
Micah Abbott contributed fixes to our vmcheck
testsuite to make it
easier to run it against an existing host without overlaying the built
rpm-ostree binary.
PR #1555
Special thanks as well to our first-time contributors Christian Glombek,
Michael Nguyen, and Robert Fairley!
Christian Glombek (1 PR, 1 commit)
compose: Print version number (#1637)
Colin Walters (43 PRs, 63 commits)
rust: Use debug=true for release builds (#1550)
ci: Stop installing python-{sphinx,devel} (#1551)
compose: Remove support for `ex-rojig-spec` in treefile (#1558)
core: Stop overriding metadata_expire (#1562)
compose: Split off composeutil.[ch] (#1564)
compose: Add the timestamp to JSON metadata as ISO8601 (#1569)
compose: Drop combined ostree+rojig compose tree (#1570)
postprocess: Make autovar.conf world-readable (#1571)
Split cbindgen to separate build, support external version (#1573)
compose: Have first-one-wins semantics for rojig parsing (#1576)
core: Fix segfault if no selinux-policy package (#1578)
rust/treefile: Fix the type of `add-files`. (#1581)
build-sys: Propagate Automake verbose mode to Rust/cargo (#1583)
build-sys: Inject Automake's default CXXFLAGS to libdnf by default (#1586)
Fix cache_age handling for compose and client-side (#1587)
rust/treefile: Use the c_utf8 crate (#1588)
bwrap: Add APIs to set up bind mounts (#1590)
core: Maintain /usr/etc as /etc when running scripts (#1592)
bwrap: Also drop constructor direct bwrap arguments (#1593)
compose-tests: Use yaml.safe_dump (#1597)
compose: Support not specifying a ref (#1603)
composeutil: Test for ability to open new /dev/null (#1604)
rust/treefile: Include filename in error when parsing (#1607)
compose: Also port one passwd bit to using Rust treefile (#1610)
postprocess: Add missing newline to os-release message (#1611)
scripts: Fully neuter microcode_ctl scripts everywhere (#1623)
Switch to ISO8601 timestamps in more places (#1624)
rust/treefile: Use macros to reduce redundancy in treefile merging (#1631)
build-sys: Fix `make rustfmt`, and run it (#1635)
PR: #1552
compose: Fix double-parsing of first included treefile
compose: Update to decl-and-init coding style
PR: #1559
rust/bindgen: Add an autoptr cleanup for our struct
build: Regenerate rpmostree-rust.h if cbindgen.toml changes
PR: #1561
commit2rojig: Take a (YAML) manifest, not a spec file
tests: Add rojig spec into base config
PR: #1563
treefile: Redo rojig_spec to be Box<CStr>
build-sys: Rework Rust --frozen logic
PR: #1574
compose+rust: Parse includes via Rust too
tests: Add a test for inheritance order of `postprocess`
PR: #1580
rust/treefile: Add support for parsing JSON too
rust: Run rustfmt
PR: #1585
rust/bindgen: Use #pragma once
build-sys: Add a `rust-test` target
rust: Make io::Read a generic again
(and 3 commits from other authors)
PR: #1591
core,scripts: When no cachedir+unified-core, disable rofiles-fuse
core: Apply s{u,g}id consistently on checkout
importer: Don't import libselinux .LOCK files
PR: #1600
rust/lib: Rework fd helpers to consistently lseek()
compose: Move opening passwd/group files into Rust
tests: Add validation for provided passwd/group files
lib/rust: Add a helper to convert the raw pointer
compose: Move "serialized treefile" into Rust ownership
PR: #1601
build-sys: Just error out if building with multiple uids
rust/lib: Remove unnecessary integer casts
(and 4 commits from other authors)
PR: #1612
scripts: Correctly override RHEL7 glibc-common.post
scripts: Neuter RHEL7 pam and microcode_ctl
PR: #1616
compose: Add a helper to convert treefile → treespec
compose: Drop duplicate addition of arch- and bootstrap pkgs
PR: #1618
compose: Lower metadata logic for read/generate into a helper
compose; Lower `add-files` read into composeutil
compose: Clean up passwd/group injection API a bit
PR: #1630
Lower initial SELinux policy load from compose to core
tests/compose: Use workdir in tmpdir
Jonathan Lebon (17 PRs, 34 commits)
Hard require staging (#1546)
daemon/utils: Filter out rpmostree.rpmdb.pkglist (#1577)
libpriv/scripts: Add rpmdb query sanity checks (#1584)
libpriv/postprocess: Handle ENOTEMPTY from renameat (#1589)
postprocess: Add ostree-finalize-staged.path (#1617)
app/livefs: Require --i-like-danger switch (#1622)
Release 2018.9 (#1633)
PR: #1502
tests/vmcheck: Create correct base commits from layered
upgrader: Reuse existing rpmdb checkout if available
PR: #1554
packaging: Don't vendor bundled libcurl
packaging: Use standard strict mode header
PR: #1560
libpriv/util: Add getter for layer version
libpriv: Add simpler base layer getter
postprocess: Don't copy base rpmdb when layering
PR: #1565
app/db-diff: Diff against rollback if no pending
app/db-diff: Factor out helper printing function
app/db-diff: Drop redundant check
PR: #1585
ci: Use continuous image instead of rebasing to it
ci/compose: Use host repos for building rpm-ostree too
ci: Stop rebasing FAH on updates branch
(and 3 commits from other authors)
PR: #1594
upgrader: Output msg when staging deployment
app/start-daemon: Drop unused callbacks
PR: #1601
rust/journal: Adapt for el7 platforms
status: Print systemd or ostree staged failure msg
packaging: Nuke more vendored sources
status: Detect if staging failed in previous boot
(and 2 commits from other authors)
PR: #1606
ci: Add rust-min-version-check
ci: Split out script to install deps
ci/build.sh: Drop unnecessary `pkg_install cargo`
PR: #1620
libpriv/passwd-util: Fix leaks on error path
core: Fix NULL pointer dereference
daemon: Check if outvar is provided before assigning
PR: #1621
ci: Make `adduser` invocation idempotent
ci: Drop CI_PKGS and epel-release in `.papr.yml`
Micah Abbott (2 PRs, 2 commits)
vmcheck/misc-1: skip the overlay check when needed (#1555)
man: add note about pinned deployments when using cleanup (#1599)
Michael Nguyen (1 PR, 1 commit)
app/status: line wrap RemovedBasePackages (#1632)
Robert Fairley (1 PR, 2 commits)
PR: #1548
initramfs: Return error when --arg specified without --enable
initramfs: Print regeneration status for pending deployment
Git-EVTag-v0-SHA512: ba6c33a74f83b9173d1723fbb929633ea3162bb70cd2c38f9f880618025e10854badd35dceb5ada219020ec23b93f3d539377ad5c8b107d713d9d8493bed35f5