Skip to content

This release has a number of features, as well as the usual
collection of bugfixes (none critical).  On the host management
side, we landed a design to do "staged" deployments.  There's
some more information in [the issue](

I've seen many, many people hit the "where did my changes in /etc go"
problem, and this will go a long way towards addressing that.  We
believe the design is fairly good, and the new public API should
be considered stable.  However, the `ostree admin` commandline only
uses it with an experimental `OSTREE_EX_STAGE_DEPLOYMENTS=1`.  Please
try this out - the plan is to eventually make this the default.
Today rpm-ostree gained a config file option to enable it
persistently in [this PR](

Another notable feature is that upon encountering an error, `fsck`
will now mark the commits which contain that object as "partial", which
in turn means that a future `ostree pull` will re-download the objects.
This makes recovering from corruption much easier.  As part of this
work, an API was added which can traverse the tree and gather parent pointers.
More information in [this PR](

Finally on the feature side, we have enabled repository locking by default.
This uses file locks and is hence for multiple process exclusion.  For example,
EndlessOS today has both flatpak and their host updater writing to the system
repository.  Currently, the locking only applies for commit and prune operations,
which are the most common sources of concurrency issues.  This will
be extended over time.  If you want to disable locking, set `locking=false`
in the repository configuration.
More information in [this PR](

Bugfixes are mostly things like a fix for flatpak on filesystems which
implement reflinks, some memory leaks squashed in the commit path.  And
the fix in [PR 1537]( is
fairly notable as it avoids ugly behavior incorrectly scanning all files
in newly-created repositories that didn't have the legacy `uncompressed-objects-cache`

Additionally there are test suite improvements, documentation patches.
The tests are all now fully Python 3 compatible.

Thanks to all contributors!

Alexander Larsson (3 PRs, 4 commits)
  Don't write to parent repo (#1524)
  pull: Don't save summary to cache before validating signatures (#1529)
  PR: #1533
    fsck: Mark commits with missing or deleted object partial
    lib/repo: Add ostree_repo_traverse_commit_union_with_parents

Colin Walters (30 PRs, 44 commits)
  Add concept of "staged" deployment (#1503)
  lib/deltas: Some misc declare-and-initialize porting (#1511)
  Post-release version bump (#1512)
  tests: Merge installed/ and fedora-str/ directories (#1513)
  lib/deploy: Port final bootconfig writing to new style (#1515)
  tests/installed: Fix TESTS= being empty (#1516)
  ci: Drop patches when building RPM (#1530)
  switchroot: Don't log if running as pid1, minor code style cleanups (#1531)
  lib/sysroot: Move staged into deployment list, rework handling (#1539) Fix docs link to COPYING (#1554)
  lib/repo: Enable locking by default, but drop external API (#1555)
  deploy: Return staged deployment (#1559)
  repo: Add checksum to error message opening unreadable object (#1564)
  lib/deploy: Do post-ops when removing staged commit (#1570)
  deploy: Use fdatasync() for new kernel/initramfs by default (#1571)
  lib: Use `Locking:` term in docs (#1572)
  tests: Tweak staged-deploy test to be faster (#1573)
  README: Tweak licensing description (#1574)
  tests: Fix installed tests more (#1577)
  ci: Drop str hotpatch (#1582)
  ci: Switch libgcrypt URL (#1584)
  Release 2018.5 (#1585)
  PR: #1514
    lib/deploy: Split /etc merge into two stages
    lib/deploy: Set kargs in one place
  PR: #1535
    tests/installed: Move tasks into tasks/  directory
    tests: Better error message if target is not a symlink
    sysroot: Split out a helper function to delete a deployment dir
    tests/installed: Move auto-build logic to
    bin: Hide `admin instutil` command
  PR: #1538
    deploy: Clean up bootserial assignment function
    sysroot: Clean up origin loading function
    deploy: Silently do nothing if passed same set of deployments
  PR: #1548
    tests: Disable since it is too slow
    tests: Lower retry timeout to 5s
    fsck: Only print "marking commit partial" once
    tests/installed: Make reboot task less racy
    (and 1 commits from other authors)
  PR: #1558
    bin/deploy: Avoid loading merge deployment kargs unless necessary
    lib/deploy: Fix staged deployments with no kargs
  PR: #1567
    deploy: Don't prune repo at finalization time by default
    bin/admin-cleanup: Port to decl-and-initialize style
  PR: #1568
    lib/deploy: Throw an error if trying to stage when not ostree-booted
    lib/sysroot: Maintain one variable for "root is ostree booted"
  PR: #1583
    lib/sysroot: Add OSTREE_EX_STAGE_DEPLOYMENTS environment variable
    tests/installed: Disable all rpmmd repos

Giuseppe Scrivano (1 PR, 1 commit)
  commit, payload-reflink: do not write to the parent repo (#1525)

Jonathan Lebon (12 PRs, 16 commits)
  ci: turn gating back on for most testsuites (#1536)
  ci: use gpgme scratch build to workaround issues (#1540)
  ci: Temporary libgcrypt workaround for older kernels (#1547)
  ci: mark some ci testsuites as required again (#1552)
  ci: drop BDB1539 workaround (#1553)
  libglnx: Bump to fix F28 compilation (#1580)
  docs: Add "Hello World" example (#1581)
  PR: #1546
    tests: Port the last python2 script to python3
    tests/installed: Prefer python3 over python2
  PR: #1548
    tests/installed: increase async retries to 500
    (and 4 commits from other authors)
  PR: #1556
    lib/deploy: Also compare deployment csum versions
    lib/deploy: Factor out function to get deployment kargs
  PR: #1560
    man/ostree-init: Briefly describe various modes
    man/ostree: Document --repo option a bit more
  PR: #1575
    lib/commit: Fix function name typo in docstring
    lib/deploy: Add semi-colon in post-deployment msg

Matthew Leeds (8 PRs, 11 commits)
  lib/repo: Add timestamps to OstreeRepoFinderResult (#1518)
  lib/repo-pull: Document all options in pull_from_remotes_async (#1519)
  tests: Fix unit test for ref-binding metadata (#1520)
  lib/repo-pull: Improve error message when no summary is found (#1522)
  lib: Fix a few comments (#1526)
  lib/repo-pull: Rename a variable for clarity (#1528)
  PR: #1521
    libotutil/checksum-utils: Fix memory management
    lib/commit: Fix a memory leak of OtChecksum
  PR: #1543
    man: Add man page for create-usb
    create-usb: Update summary in destination repo
    tests: Fix typo in unit test

Owen W. Taylor (1 PR, 1 commit)
  Don't scan uncompressed_objects_dir if it doesn't exist (#1537)

Sam Spilsbury (1 PR, 1 commit)
  avahi: Don't complain with g_warning if the daemon wasn't running (#1542)

Simon McVittie (1 PR, 1 commit)
  build: Don't distribute Bison-generated parser in dist tarballs (#1563)

Tobias Mueller (1 PR, 1 commit)
  repo: handle GPG_ERR_AMBIGUOUS_NAME in sign_data (#1579)

Git-EVTag-v0-SHA512: a36ec85eaed518e9808fd572e801156171c8b7c8f043b5d151492ff94544e6d2a1fd2104de848605a32630b778739452500127e90ead78e29c405b20e1b97cca