Skip to content

Releases: ostreedev/ostree

2019.1

11 Jan 18:40
v2019.1
Compare
Choose a tag to compare

This is the first libostree release of 2019; no big changes, just a collection of smaller
features and bugfixes.

On the features side, a good example is:
lib/repo: Search a list of paths in gpgkeypath for gpg keys
from PR #1773 - this will be useful for Fedora which rotates GPG keys
across releases.

Another feature is grub2: add support for devicetree
from PR: #1790

lib/kargs: allow empty-list arguments i.e. PR #1785 is between a
bugfix and feature - it ensures libostree supports "empty list" kernel
arguments.

There's also some ongoing work to have libostree be a "backend"
for OCI/Docker container storage; checkout: honor opaque checkouts
in PR #1486 is part of that.

pull: If built with --disable-http2, allow enabling via http2=1 from
PR #1798 will allow people to more easily play with HTTP2 if
it's disabled by default.

Thank you to all contributors!

Alexander Larsson (1 PR, 1 commit)
  Fix leak in ostree_content_stream_parse() (#1784)

Colin Walters (6 PRs, 8 commits)
  lib/commit: Try checksum+hardlink for untrusted local same-uid repos (#1776)
  Update libglnx (#1781)
  ci/papr: Drop insttests (#1783)
  pull: If built with --disable-http2, allow enabling via http2=1 (#1798)
  PR: #1766
    ci: Add `dist-then-build` target to catch missing `EXTRA_DIST`
    build-sys: Dist ostree-finalize-staged.path
  PR: #1800
    Post-release bump
    Release 2019.1

Giuseppe Scrivano (1 PR, 1 commit)
  checkout: honor opaque checkouts (#1486)

Jonathan Lebon (7 PRs, 7 commits)
  bin/refs: Disallow creating broken aliases (#1768)
  bin/pull-local: Add --commit-metadata-only (#1769)
  lib/commit: Copy user.ostreemeta only for bare-user (#1771)
  lib/commit: Add devino_cache_hits to txn stats (#1772)
  bin/pull: Add URL metavar for --url switch (#1782)
  boot/grub2: Add some more explanation in ostree-grub-generator (#1791)
  PR: #1761
    ostree/main: Wrap `Version` in `--version` in quotes
    (and 1 commit from other author)

Luca Bruno (1 PR, 1 commit)
  lib/kargs: allow empty-list arguments (#1785)

Matthew Leeds (1 PR, 1 commit)
  lib/repo: Clarify docs for importing w/ trust (#1777)

Matthias Clasen (1 PR, 2 commits)
  PR: #1788
    Fix a small leak in ostree_repo_remote_list_collection_refs
    Fix a small leak in ostree_repo_pull_with_options

Rafael Fonseca (2 PRs, 2 commits)
  admin/status: Correctly check GPG signature (#1787)
  admin/status: test GPG signature check (#1797)

Ricardo Salveti (1 PR, 1 commit)
  grub2: add support for devicetree (#1790)

Sinny Kumari (1 PR, 1 commit)
  atomic-upgrades doc: fix example url to fetch a ref checksum (#1795)

Umang Jain (3 PRs, 3 commits)
  lib/repo-commit: Relax min-free-space check in prepare_transaction() (#1779)
  man/ostree.repo-config: Update min-free-space-* docs (#1786)
  PR: #1761
    Post-release version bump
    (and 1 commit from other author)

rfairley (1 PR, 1 commit)
  lib/repo: Search a list of paths in gpgkeypath for gpg keys (#1773)

2018.9

25 Oct 14:38
v2018.9
Compare
Choose a tag to compare

https://github.com/ostreedev/ostree/releases/tag/v2018.9

It's been two months since our last release, so this one is slightly
larger than usual (the ~monthly cadence). It's mostly bugfixes
again, although there were some API additions and new
configuration options.

These new features are things like:

  • Allow disabling pulling from LAN/USB/Internet (#1758)
  • lib/repo: Add an API to get min-free-space-* reserved bytes (#1715)
  • OstreeMutableTree: add _remove method (#1724)
  • repo: Add a checkout option to not hardlink zero-sized files (#1752)

On the bugfix side, nothing major; we have the usual small memory
leak fixes (yeah, we use GCC autocleanups, but still, this is C).
Beyond that, good examples of bugfixes are:

  • finalize-staged: Bump timeout to 5 minutes (#1755)
  • deploy: Fix removing /var/.updated with separate /var mount (#1730)
  • src/ostree: Don't delete refs having aliases (#1749)

One notable change in this release is the initrd service
ostree-prepare-root.service now runs earlier in the boot process.
This shouldn't actually affect OSes, unless there's extended logic
in the initrd that integrates tightly with OSTree. The use case for this is
better integration with Ignition, which will be used in Fedora CoreOS.
PR: #1759

Another systemd related change is the introduction of a path unit:
ostree-finalize-staged.path. This allows the service of the same name
to be path activated instead of explicitly started at deployment staging time.
This release however does not yet rely on this mechanism to give time for
packagers and integrators to adapt to the new unit (e.g. by enabling it in
the systemd presets). A future release will require this.
Note that deployment staging is still not the default for libostree, although
at least rpm-ostree now unconditionally uses staging, and while it
generally worked well, we hit issues with people using slower hard drives,
hence the increase in timeout in PR #1755 .
PR: #1740

Another change to call out is:
lib/commit: Don't chown objects to repo target owner (#1754)
We previously had incomplete support for a process running as uid 0
writing to a repository owned by a non-zero uid, but it was never finished.
This will likely be revisited at a later time.

We also merged:
lib/grub2: Support Debian-style grub.cfg path (#1714)
from a new contibutor (thanks Felix!). Who incidentally also
posted recently about new Rust bindings:

https://mail.gnome.org/archives/ostree-list/2018-October/msg00000.html
https://crates.io/crates/libostree

Thanks a lot to all contributors!

Colin Walters (12 PRs, 13 commits)
  Post-release version bump (#1705)
  deploy: Fix removing /var/.updated with separate /var mount (#1730)
  lib/commit: Don't copy xattrs for metadata objects (#1736)
  lib/progress: Fix leak of GSource (#1741)
  Only verify OSTREE_MAX_METADATA_SIZE for HTTP fetches (#1744)
  rofiles-fuse: Improve error message for failure to open root (#1747)
  repo: Add a checkout option to not hardlink zero-sized files (#1752)
  checkout: Support --union-identical and --force-copy{,--zerosized} (#1753)
  finalize-staged: Bump timeout to 5 minutes (#1755)
  remount: Refactor to helper function instead of loop (#1760)
  README: Add bindings section (#1762)
  PR: #1757
    sysroot: Add error prefixing to deployment parsing
    sysroot: Update some code to use fstatat_allow_noent API

Dan Nicholson (1 PR, 1 commit)
  lib/commit: Don't chown objects to repo target owner (#1754)

Felix Krull (1 PR, 1 commit)
  lib/grub2: Support Debian-style grub.cfg path (#1714)

Jonathan Lebon (7 PRs, 12 commits)
  ci: Disable f28-rpmostree for now (#1727)
  ci: Bump rpm-ostree tag to 2018.8 (#1728)
  boot: Add ostree-finalize-staged.path (#1740)
  lib/mutable-tree: Port to new style (#1742)
  PR: #1732
    lib/fetcher-curl: Prefix fatal errors with full URL
    lib/fetcher-curl: Drop unnecessary check
    lib/fetcher-util: Mark journaled msgs as LOG_ERR
  PR: #1750
    lib/sysroot-deploy: Write to journal when finalizing
    boot: Add Documentation= lines to services
    boot: Remove [Install] from ostree-finalize-staged
  PR: #1759
    ostree-prepare-root.service: Run earlier in initrd
    ostree-prepare-root.service: Use RemainAfterExit=yes

Laurent Bonnans (1 PR, 1 commit)
  lib/fetcher: Fix some memory leaks in curl fetcher (#1716)

Matthew Leeds (10 PRs, 14 commits)
  avahi: Be robust to missing refs in peer summaries (#1717)
  lib/repo: Clean up OstreeRepo docs (#1725)
  lib/repo: Define a metadata key, ostree.deploy-collection-id (#1726)
  create-usb: Always use archive mode (#1733)
  create-usb: Add a --commit option (#1735)
  bash-completion: Fix --repo autocomplete (#1745)
  man/create-usb: Don't recommend summary updates (#1746)
  PR: #1737
    man/ostree.repo-config: Document locking options
    lib/repo: Fix minor mistake in locking docs
    lib/repo: Allow disabling lock timeout
  PR: #1758
    lib/repo-pull: Disable LAN updates by default
    Allow disabling pulling from LAN/USB/Internet
  PR: #1763
    Rename core.repo-finders to core.default-repo-finders
    lib/repo-pull: Add an explanatory comment

Robert McQueen (1 PR, 1 commit)
  OstreeMutableTree: add _remove method (#1724)

Sinny Kumari (1 PR, 1 commit)
  src/ostree: Don't delete refs having aliases (#1749)

Umang Jain (3 PRs, 6 commits)
  Release 2018.9 (#1761)
  PR: #1715
    lib/repo: Ensure min-free-space* config value doesn't overflow
    Add tests for ostree_repo_get_min_free_space_bytes
    lib/repo: Add an API to get min-free-space-* reserved bytes
  PR: #1722
    tests: Update tests for ostree_repo_get_min_free_space_bytes()
    lib/repo: Separate min-free-space-* calculation from transaction codepath

Git-EVTag-v0-SHA512: 7d4337f3b58ddd13c825eb80c0e39ebd5f4db1368a34ba6a037264c9941b373ba594a7b9f3ac63cb85e64f475bf5589001032a7ba6da371a2c76a336b4c89c85

2018.8

22 Aug 14:32
v2018.8
Compare
Choose a tag to compare

This release is pretty much all minor bugfixes: memory leaks,
fixing error messages and docs, handling a race condition
on pull with summary updates. There's one new feature (noted below),
and we also gained a new contributing tutorial:
https://mail.gnome.org/archives/ostree-list/2018-August/msg00005.html
Thanks to Robert Fairley and Cheryl Fong!

The one bugfix I want to call out explicitly is:
ostree-remount.service: RemainAfterExit=yes
PR: #1697
It's surprising it took us so long to find and fix this; I've seen
occasional boot failures that I believe trace down to this problem.
The behavior of systemd units of Type=simple without RemainAfterExit=yes set
is rather nonsensical; I may try to push to have a warning emitted
upstream if such a unit is a dependency of another.

And the one new feature is the auto-update-summary config option
for repositories. For more information, see the docs and
PR: #1681

Thanks to all contributors!

Alexander Larsson (3 PRs, 3 commits)
  Fix leak in ostree_repo_list_collection_refs (#1700)
  ostree_repo_static_delta_generate: Fix leak (#1701)
  ostree_repo_pull_from_remotes_async: Fix leak of options (#1702)

Colin Walters (3 PRs, 3 commits)
  lib/pull: Fix minor memleak in error path (#1684)
  ostree-remount.service: RemainAfterExit=yes (#1697)
  Release 2018.8 (#1705)

Dan Nicholson (1 PR, 5 commits)
  PR: #1698
    repo: Add OSTREE_REPO_TEST_ERROR=invalid-cache env var
    tests: Test for recovery from corrupted summary cache
    lib/pull: Fetch summary if cached version doesn't match signature
    lib/pull: Add debug message when loading summary from cache
    tests: Add tests for remote summary update races

Jonathan Lebon (4 PRs, 10 commits)
  ci: Bump rpm-ostree tag we build for tests (#1708)
  PR: #1692
    lib: Fix some logic/error-checking code
    lib: Fix some minor memory leaks
    lib: Check for NULL pointers in some more places
  PR: #1693
    lib/commit: Only auto-update summary if refs were written
    lib/config: Deprecate commit-update-summary option
    lib/config: Rename change-update-summary to auto-...
    lib/refs: Use GLNX_HASH_TABLE_FOREACH_KV helper
  PR: #1710
    ostree/config: Delete rogue printf and tweak help
    man/config: Keep cmdsynopsis for GROUP.KEY version

Matthew Leeds (4 PRs, 5 commits)
  man/ostree.repo-config: Update min-free-space-* docs (#1687)
  lib/repo-commit: Fix min-free-space error message (#1691)
  lib/repo-pull: Use correct keyring for dynamic remotes (#1695)
  PR: #1681
    config: Add a core/change-update-summary option
    lib/repo: Take exclusive lock while generating summary

Philip Withnall (1 PR, 1 commit)
  lib/repo-pull: Prefer object pull over from-scratch delta if ref exists (#1709)

Robert Fairley (2 PRs, 2 commits)
  docs: Add Contributing Tutorial to Mkdocs pages (#1711)
  PR: #1694
    docs: Add contributing tutorial
    (and 1 commit from other author)

Sinny Kumari (1 PR, 1 commit)
  src/ostree: Add --group option to ostree config (#1696)

Stefan Agner (1 PR, 1 commit)
  Avoid race condition in case tests directory does not exist (#1704)

Umang Jain (1 PR, 1 commit)
  Post-release version bump (#1683)

Will Thompson (1 PR, 1 commit)
  repo: remove outdated note from write_config() docs (#1707)

Will Thompson (1 PR, 1 commit)
  man/ostree.repo-config: improve min-free-space-* docs (#1706)

bubblemelon (2 PRs, 2 commits)
  bin/refs: Clarify --create error message (#1690)
  PR: #1694
    docs: Add detail to CONTRIBUTING.md and link to tutorial
    (and 1 commit from other author)


Git-EVTag-v0-SHA512: cb84a0dc71f917fc9fa715531e3154a23e861bf1e4223caf6c34e16461c7830a383bb9f090963eaaeaeb3c449434be7cf4246e63c15d5a2d5c7da101568f52e3

2018.7

20 Jul 20:42
v2018.7
Compare
Choose a tag to compare

I've said this before but the regular variety of contributors to libostree
makes me very happy - part of the reason I like working on Free Software
is collaborating with smart people around the world! Thanks to all of you!

There's no one major feature in this release, but we have a variety
of improvements and bugfixes.

The addition of min-free-space-size in the previous release caused
issues with older libostree/flatpak interacting with it. We now tolerate
both min-free-space-size and min-free-space-percent being set for
compatibility.
PR: #1685

The way libostree writes bootloader spec snippets has changed to
have the version number first, aiding sorting. It turns out some BLS
implementations order via filename. This is preparatory work for more
directly adopting the BLS in Fedora (and I for one will not miss grub2-mkconfig
and particularly os-prober)!

libostree became significantly smarter about handling "recommitting" content,
such as ostree commit --tree=ref=foo -b bar; it's now nearly free, and this
can be extended to very quickly "union" or merge different refs into a unified
whole. See the discussion in:
PR: #1643

There are two fixes for staged deployments (still not the default), but
we're aiming to do that by default in rpm-ostree soon, and that's shaking
out some remaining issues (for example, the API didn't support overriding
kernel arguments correctly).

Another notable bugfix is for separate /var partition, which we regressed
in 2018.6 as part of working on Ignition integration.
PR: #1668

Thanks again to all contributors!

Alex Kiernan (2 PRs, 2 commits)
  boot: Use emergency.target, not emergency.service (#1665)
  switchroot: Move late /run/ostree-booted creation to ostree-system-generator (#1675)

Alex Kiernan (2 PRs, 2 commits)
  build: Use ostree_prepare_root_CPPFLAGS for ostree-prepare-root (#1670)
  switchroot: Fix typo in comment ENINVAL => EINVAL (#1676)

Colin Walters (9 PRs, 9 commits)
  sysroot: Reject attempts to pin the staged deployment (#1660)
  ci/flatpak: Fix to use built ostree version (#1662)
  deploy: Retain staged by default (#1672)
  deploy: Fix overriding kernel args for staged deployments (#1677)
  build-sys: Link with gpg-error directly (#1679)
  Update libglnx (#1680)
  ci: Mark insttests as not required (#1686)
  PR: #1652
    ci: Workaround getfedora.org/atomic_qcow2_latest being 404
    (and 1 commit from other author)
  PR: #1668
    tests/installed: Add var-mount.yml destructive test
    (and 2 commits from other authors)

Emmanuele Bassi (1 PR, 1 commit)
  Add a check for gpg-error via pkg-config (#1682)

Javier Martinez Canillas (2 PRs, 2 commits)
  ostree-grub-generator: sort BLS files by version instead of alphabetically (#1653)
  deploy: Change BootLoaderSpec filenames so they can be used for sorting (#1654)

Jonathan Lebon (2 PRs, 3 commits)
  PR: #1652
    tests/installed: Wait a bit more for http.server
    (and 1 commit from other author)
  PR: #1668
    tests/installed: Add NOTE when re-using RPMs
    switchroot: Fix regression for separately mounted /var
    (and 1 commit from other author)

Marcus Folkesson (2 PRs, 2 commits)
  ci: exclude 'lib' from libsoup configure option (#1661)
  build: add ostree-soup-* to build process when configured with avahi (#1666)

Matthew Leeds (2 PRs, 2 commits)
  man/ostree.repo-config: Document collection-id (#1646)
  create-usb: Tweak docs for --destination-repo (#1656)

Philip Withnall (1 PR, 1 commit)
  lib/repo-commit: Abort a transaction if preparing it fails (#1647)

Robert Fairley (2 PRs, 3 commits)
  tests: Run network retries test for many retries directly (#1673)
  PR: #1669
    ostree/pull: Add network-retries command line option
    tests: Move assert_fail function to tests/libtest.sh

Simon McVittie (2 PRs, 2 commits)
  avahi: Fail immediately if we can't talk to D-Bus or Avahi (#1639)
  OstreeRepoFinderConfig: Fix guint/gsize confusion (#1641)

Umang Jain (6 PRs, 9 commits)
  lib/repo: Minor fixes around min-free-space (#1663)
  Release 2018.7 (#1683)
  lib/repo: Allow min-free-space-size and -percent to co-exist (#1685)
  PR: #1602
    lib/repo: Cleanup current boot's staging dir min-free-space-* checks are hit
    lib/repo: cleanup_tmpdir should be executed after releasing lock file
  PR: #1614
    tests: Add tests for space checks during deltas codepath
    lib/repo: Enforce min-free-space-* size check for regfiles in deltas
  PR: #1671
    lib/repo-commit: Factor out min-free-space-size error reporting
    repo: Reword min-free-space-size option's error strings

William Manley (4 PRs, 7 commits)
  ostree repo commit: Speed up composing trees with `--tree=ref` (#1643)
  tests: Save corefiles back to tests/ directory if one exists (#1657)
  PR: #1645
    OstreeMutableTree: Document ostree_mutable_tree_ensure_dir
    OstreeMutableTree: Document each private member of `OstreeMutableTree`
    Add test for composing trees in different ways
  PR: #1655
    OstreeMutableTree: Invalidate parent contents checksum when metadata changes
    OstreeMutableTree: Refactor: Add `parent` pointer

v2018.6

21 Jun 13:48
v2018.6
Compare
Choose a tag to compare

This release includes the final merge of the previously "experimental" API
for peer-to-peer discovery/download. This is currently supported by Flatpak
and the EndlessOS updater. One use case for example that this improves
is the "update via USB stick" case; you'll need to set collection IDs, and
have your update system use the repo finder API. (Today ostree admin upgrade
doesn't). Thanks a lot to Endless for all of their work on this!
PR: #1596

libostree learned how to retry HTTP requests on transient network errors.
By default, requests on such errors are now retried 5 times.
PR: #1594

There is also now a new "min-free-space-size" config option. This is similar
to the "min-free-space-percent" option but instead takes absolute values, such
as "1GB" or "10MB".
PR: #1616

The original systemd design for ConditionNeedsUpdate= didn't quite work
with libostree, but Endless wrote a fix and had been shipping it for a while.
That's now been merged: deploy: Delete .updated file from /etc and /var on new deployments
Part of the reason this came up now is we're planning to change rpm-ostree
to switch to systemd-sysusers: coreos/rpm-ostree#49
And today sysusers uses ConditionNeedsUpdate=. Once we make
the switch in rpm-ostree and test it out I'd recommend other operating
systems follow (and not use nss-altfiles). And if you've already made the switch,
let us know!
PR: #1631

We're working on using https://github.com/coreos/ignition for Fedora CoreOS,
which means integrating it with libostree. As both run in the initramfs,
we added a simple change to ensure /var is mounted. A future enhancement
here will likely involve handling custom /var mounts too.
PR: #1617

There are a variety of other changes, like fsck --all, having u-boot support devicetree,
etc.

Thanks to all contributors!

Alexander Larsson (2 PRs, 3 commits)
  ostree_repo_resolve_rev: Resolve refs set in the transaction (#1624)
  PR: #1591
    fsck: Add --all to print all corrupted object
    fsck: Include the commits that contain the corruption in errors

Andrea Galbusera (1 PR, 1 commit)
  u-boot: add support for devicetree (#1590)

Arnaud Rebillout (1 PR, 1 commit)
  docs: var/local -> var/usrlocal (#1588)

Colin Walters (4 PRs, 8 commits)
  Post-release version bump (#1586)
  lib/archive: Tell g-ir-scanner to ignore the private libarchive bits (#1629)
  PR: #1566
    lib/sysroot: Add wrapper API to prune system repository
    lib: Add a public helper method for pruning to find all ref'd commits
  PR: #1632
    tests/installed: Add a free-space success path test
    lib/repo: Do free space math under lock in error path
    lib/repo: Rename free_space_size variable to free_space_mb
    lib/repo: Fix double-set-error in min-free-space-size code

Dan Nicholson (1 PR, 1 commit)
  deploy: Delete .updated file from /etc and /var on new deployments (#1631)

Jan Tojnar (1 PR, 1 commit)
  tests: Fix locale detection (#1611)

Jonathan Lebon (4 PRs, 6 commits)
  ci: Add .papr-ex.yaml (#1587)
  .gitmodules: Update URL for libglnx (#1604)
  switchroot: Allow letting ostree-prepare-root mount /var (#1617)
  PR: #1601
    ci: Drop gpgme and libgcrypt hacks
    ci: Bump to f28, except flatpak
    ci: Stop layering oci-kvm-hook

Matthew Leeds (8 PRs, 15 commits)
  bash-completion: Don't add a space after files and directories (#1598)
  Update libglnx to get g_autoptr backports (#1603)
  admin: Fix list of subcommands in help and manpage (#1621)
  lib/prune: Don't modify dirent->d_name in place (#1627)
  PR: #1596
    lib: Fix building against old glib versions
    Make P2P API public (no longer experimental)
  PR: #1605
    Fix building P2P code against old glib versions
    find-remotes: Fix unused variable warnings
    Allow compiling OstreeRepoFinderAvahi without libsoup
    Allow compiling with experimental API but without curl/soup
  PR: #1607
    ci: Use master branch as flatpak tag
    ci: Bump flatpak build to F28
  PR: #1615
    tests: Add test for including ostree.h
    Fix building against old glib versions
    Revert "lib: Fix building against old glib versions"

Philip Withnall (4 PRs, 16 commits)
  lib/repo-commit: Delay propagation of errors from abort_transaction() (#1626)
  PR: #1594
    lib/fetcher: Factor out HTTP status code handling from soup and curl
    lib/repo-pull: Add some missing assertions for progress statistics
    tests: Test pull behaviour when network timeouts occur
    ostree/trivial-httpd: Add --random-408s command line option
    lib/fetcher-soup: Map more SoupStatus codes to known GIOErrors
    lib/repo-pull: Support retrying requests on transient network errors
  PR: #1599
    lib/repo-pull: Factor out enqueue function for FetchStaticDeltaData
    lib/repo-pull: Factor out enqueue function for FetchObjectData
    lib/repo-pull: Factor out enqueue function for ScanObjectQueueData
    lib/repo-pull: Rename a variable
    lib/repo-pull: Factor out free function for FetchDeltaSuperData
    lib/repo-pull: Use GCC `?:` ternary shortcut where appropriate
    lib/repo-pull: Use values from struct in enqueue_one_object_request()
  PR: #1600
    lib/repo-pull: Support retries for delta superblocks
    lib/repo-pull: Support queuing delta superblock requests

Umang Jain (1 PR, 1 commit)
  lib/repo: Add min-free-space-size option (#1616)

2018.5

11 May 14:34
v2018.5
Compare
Choose a tag to compare

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
directory.

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)
  README.md: 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 playbook-run.sh
    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 itest-pull.sh 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

2018.4

22 Mar 21:39
v2018.4
Compare
Choose a tag to compare

A quick turnaround after 2018.3 to include one main PR: #1508

"switchroot: Ensure /run/ostree-booted is created even without initramfs"

This fixes ostree when booting without an initramfs. Thanks to @akiernan for the
bug report and helping review the fix! I'm working on enhancing the test suite,
which will help in adding some coverage here.

Colin Walters (6 PRs, 10 commits)
  Post-release version bump (#1506)
  ci/papr: Fix artifacts (#1507)
  switchroot: Ensure /run/ostree-booted is created even without initramfs (#1508)
  lib/deltas: Squash some GCC maybe-uninitialized warnings (#1510)
  Release 2018.4 (#1512)
  PR: #1509
    tests/payload-link: Just test a single duplicate object
    tests: Small tweaks for local iteration
    tests/installed: Use temporary directories more consistently
    tests/str: Verify standard-test-roles is installed
    tests/str: Rework sysinstall-tests to be an entrypoint


Git-EVTag-v0-SHA512: ad47f2566b56f852982235224bc5256f1ac682da78579998b6ebcef719691c9dc2d9987691ee98730c7776da48c7ff50b02f55cbf5e7355a12627cb2843dcf51
-----BEGIN PGP SIGNATURE-----

iQFHBAABCgAxFiEEq5KKnPjdBikJw3u93EX9WSHBPwsFAlq0IgQTHHdhbHRlcnNA
dmVyYnVtLm9yZwAKCRDcRf1ZIcE/C2tDB/9daUpx5+lMfTBnBZdvHopnkmd1XaKS
zCeg813L54BxrmReUeRAZWjTmizqd+yQJoxkA/ioTkERH3H1p3VI6EoaeerSfukc
tFytvX11KNTk9ereBC1zg8eC5jLePMO1XHyrNi2TZ7F4da8sWQ8SJ8JiJFnlkZ+d
PagsZxPFN/7l2P8IczB+9wsYY155xDFNW1lWHA3Gm9hcvsl0gehy+VOJcB79CyX+
9nEPhurN+L6AAU9l6ECVUiY1zCYxvsoXduHEj9KlieK+exkbNsc0Ho4EEk3xd+HB
iv3vexsSFUvtQZBuq16/G4+Dv8SHwTGGuc8cP6MLHXlPMrTXyECjOZOp
=zaOP
-----END PGP SIGNATURE-----

2018.3

21 Mar 17:11
v2018.3
Compare
Choose a tag to compare

Keeping up with our ~monthly cadence. A variety of contributors here again, it's
great to see! There's two notable features, and a variety of non-critical bugfixes.

On the features side we have:

  • sysroot: Add concept of deployment "pinning" 📌 (#1464)
  • ostree: introduce PAYLOAD_LINK object type (#1443)

(EDIT: Also lib/fetcher: Allow clients to append to User-Agent (#1496))

By default libostree prunes older deployments; the pinning feature allows you to
explicitly retain them until unpinned. This is useful for major version updates.

The PAYLOAD_LINK functionality allows libostree to do content-based
deduplication. Previously, if e.g. a file changes in metadata (mode, owner,
xattrs such as SELinux labels), we can't make a plain Unix hardlink, and hence
by default end up with a new copy on disk. However, the Linux kernel has
standardized "reflinks" and some filesystems support them, including modern
versions of XFS. When reflinks are available, this functionality causes
libostree to compute a content-only payload, and when importing an object, if it
matches in content with an existing object, to use reflinks to deduplicate, while
using different inodes.

Finally, the HTTP User-Agent API is intended for higher level tools linking to libostree where one wants to expose the app version as well.

Beyond that, as mentioned above we have a variety of non-critical fixes such
as memory leaks, test suite improvements, correctly printing the "would be pruned"
size when using prune --no-prune, etc.

Thanks to all contributors!

Colin Walters (15 PRs, 20 commits)
  build-sys: Post-release version bump (#1455)
  ci: Rework installed tests to use Fedora Standard Test interface (#1462)
  bash-completion: Remove `admin` completions (#1468)
  prune: Error if --static-deltas-only without --delete-commit (#1482)
  lib/repo: Do account for size with prune --no-prune (#1483)
  docs/prune: Document that --static-deltas-only isn't that useful (#1484)
  repo/refs: Clean up error prefixing (#1485)
  tests/str: Rework invocation (#1493)
  tests: Avoid generating lots of output in itest-payload-link (#1494)
  lib/deploy: Port various functions to declare-and-initialize (#1499)
  main, status: Factor out deployment printing into helper (#1504)
  Release 2018.3 (#1506)
  PR: #1464
    sysroot: Add concept of deployment "pinning" 📌
    sysroot: Add API to clean up transient keys in origin files
    sysroot: Bump mtime when writing an origin file
  PR: #1497
    sysroot: Rework how we find booted deployment
    sysroot: Track whether /run/ostree-booted exists
    lib/deploy: Port deployment checkout func to new style
  PR: #1505
    lib/deploy: Have internal origin writing API take sepolicy
    lib/deploy: Use in-function error prefixing more

Giuseppe Scrivano (1 PR, 3 commits)
  PR: #1443
    commit: add logic for .payload-link
    ostree: introduce PAYLOAD_LINK object type
    ostree-repo-private: remove declaration for _ostree_repo_find_object

Jeremy Hiatt (1 PR, 1 commit)
  lib/repo: Fix multi-signature support when generating summary files (#1489)

Joaquim Rocha (1 PR, 1 commit)
  pull: Ignore the cancellable when aborting a transaction (#1492)

Jonathan Lebon (2 PRs, 2 commits)
  lib/fetcher: Allow clients to append to User-Agent (#1496)
  lib/core: Support <remote>: syntax when listing refs (#1500)

Jonathan Lebon (1 PR, 1 commit)
  lib/sysroot: Fix retrieving non-booted pending deployment (#1472)

Luca Bruno (1 PR, 1 commit)
  rust/bupsplit: minor idiomatic fixes (#1502)

Matthew Leeds (6 PRs, 6 commits)
  lib/repo-finder-mount: Fix path to flatpak repo (#1471)
  lib/repo-finder-mount: Update comment about paths (#1473)
  lib/repo-pull: Fix free function for hash table (#1474)
  lib/remote: Fix memory leak (#1476)
  lib/repo-finder-mount: Improve debug message (#1477)
  lib: Fix memory leaks of OstreeRemote (#1478)

Rasmus Thomsen (1 PR, 1 commit)
  configure: add option for libsystemd (#1490)

Simon McVittie (2 PRs, 5 commits)
  Use Python 3 for tests (#1463)
  PR: #1457
    tests/bootloader-entries-crosscheck: Use Python 3-friendly sorting
    test-concurrency: Explicitly use floor division
    test-concurrency: Replace range with xrange
    test-concurrency: Use Python 3 syntax for octal


Git-EVTag-v0-SHA512: 00afcacb0ad3b8c2c42c2d3e44e1c807a0dbb65beb2ba888ceab459c603d8c1e5ef380abb0a77c02eacba839b0a3b6138a92a0f05e4c2bfe04eeefe41081e6bf
-----BEGIN PGP SIGNATURE-----

iQFHBAABCgAxFiEEq5KKnPjdBikJw3u93EX9WSHBPwsFAlqyj8ITHHdhbHRlcnNA
dmVyYnVtLm9yZwAKCRDcRf1ZIcE/C3p2CACNSfFslraxxBLtJxR6hWnz1r7g1m+N
7v6UdXPLHNOZ85EPV6x9M35on1rVgFCPofwU/nX6yn+QDJV0IyRfKOonqfb7gIDv
jB7r0+bpxHDJXPfCdkTGeZIo7gsnuaerqIlNGSAjinLem0p+w569PD2a5rzQEkym
yLg4cD9ib0MlNINNrH+/jyVJ6da4+yLF2jQ91NNnu1v2HzBzfuyGPVI6T7+1Nx9I
GRzqe2vcZsWLQwnaBHJ5GVXZQSlgzPDqdI3Q/uTW7kG4OD2Qw4TYKw9PsfXzBHLg
GWsWrxoR0A4gFsSQe0xYhTi88Sq5zZNehLEN/5gEwZMqB6yvkl6J3Nie
=K4BR
-----END PGP SIGNATURE-----

2018.2

15 Feb 15:00
v2018.2
Compare
Choose a tag to compare

We're keeping up with the approximately-monthly release cycle. There's
mostly a collection of smaller fixes here, with some enhancements.
I'm biased but my personal favorite is #1438 since it makes
the output of findmnt rather significantly nicer on this workstation
where I have container tooling creating sub-mounts in /var that are
no longer replicated in /sysroot.

For the embedded space, #1411 for devicetree support is likely interesting,
and is related to a discussion on the mailing list:
https://mail.gnome.org/archives/ostree-list/2018-February/msg00001.html

Jonathan's PR #1441 to add callback filtering to checkout
was necessary for us to re-implement some hairy logic from librpm
around "file coloring"; see coreos/rpm-ostree#1227
We're getting quite far along now in having rpm-ostree be a truly
hybrid system, supporting the existing RPM ecosystem.

Marcus definitely wins the "lines changed" count this cycle by adding
SPDX-License-Identifier to all of the C source files (#1439). This happened
because we relicensed the documentation to dual CC BY-SA and GFDL in #1432
to enable a Wikipedia page which I just
noticed exists now!

It's great to see all of the interest in and use of libostree across
the board, and thanks to all contributors!

Alex Kiernan (2 PRs, 2 commits)
  switchroot: Fix split source/build directory (#1445)
  Fix static-compiler when CC includes args (#1454)

Colin Walters (13 PRs, 13 commits)
  ci: Run a subset ⊂ of rpm-ostree's tests (#771)
  ci: Bump flatpak version (and build to f27) (#1400)
  build-sys: Post-release version bump (#1417)
  lib/pull: Port a few functions to new style (#1424)
  ci/papr: Update most contexts to f27 (#1426)
  bin/delta: Fix compilation with relative subdirs --filename (#1427)
  docs: Dual license under CC BY-SA and the GFDL (#1432)
  switchroot: Ensure /sysroot is set to "private" propagation (#1438)
  deploy: SELinux-relabel installed kernel/initramfs data (#1444)
  repo: Create uncompressed-object-cache dir dynamically (#1446)
  core: Add API (and standard concept for) content checksum (#1449)
  fetcher: Drop max queue size assertion in libsoup/libcurl backends (#1453)
  Release 2018.2 (#1455)

Jonathan Lebon (2 PRs, 4 commits)
  lib/checkout: add filter API to skip over files (#1441)
  PR: #1442
    bin/checkout: add --selinux-policy switch
    tests/installed: support TESTS filter
    libotutil: factor out utility to parse file by line

Marcus Folkesson (1 PR, 1 commit)
  Add SPDX-License-Identifier to source files (#1439)

Matthew Leeds (5 PRs, 5 commits)
  man: Add man page for find-remotes (#1410)
  find-remotes: Minor fixes to --finders code (#1414)
  man: Update ostree-summary.xml (#1416)
  lib/pull: Allow specific commits in P2P updates (#1425)
  lib/pull: Properly remove temporary remotes (#1450)

Philip Withnall (1 PR, 1 commit)
  lib/core: Expand documentation for ostree_parse_refspec() (#1437)

William Manley (2 PRs, 4 commits)
  PR: #1411
    Add support for devicetree files alongside the kernel and initramfs
    syslinux: Add support for DEVICETREE from bootloader spec
  PR: #1418
    ostree admin deploy: Add --no-prune option
    ostree admin deploy: Refactor bringing cleaning into `main`

Git-EVTag-v0-SHA512: cbb96ab975e3430d3dcb0552b8b9fec4c32c3d289343a66b304f3d937d56d60f635791b7c31da4118545ecbaec18130cef5d077429b0e0c39fbb235dc7f960b6

2018.1

15 Jan 15:44
v2018.1
Compare
Choose a tag to compare

One of the most notable things in this release is patches
from Gatis Paeglis and William Manley to fix up libostree's
support for systems without an initramfs (prominent in the
embedded/appliance case).

Just as a side note: On the flip side some initial testing of a Fedora Atomic
Host (which uses libostree) was done on an IBM S390x system - real mainframe
hardware. Just like the Linux kernel and systemd, the vision for libostree is to
span a wide range of use cases like this.

Related to this, build patches were contributed by Anton Gerasimov and Marcus
Folkesson - per the above we try to keep our feature set
configurable.

Next I want to note a major new feature landed in this
release that we will be using in rpm-ostree; --copyup support
for rofiles-fuse: #1382
For a long time we were trying to change the Fedora RPM package
scripts to be "pure rofiles" compatible, but I finally decided
to punt on that due to glibc. I suspect other people maintaining
build systems may be in a similar situation.

Also, I landed a series of hardening patches against path
traversal; as I say in the PR set, since we've checked this
in the HTTP code since the start I think we're generally safe:
#1412

There are a variety of other changes here; see
the linked PRs below for more information.

Thanks a lot to all contributors!

Anton Gerasimov (1 PR, 1 commit)
PR: #1397
build-sys: Allow building with curl, but without libsoup
(and 1 commits from other authors)

Colin Walters (9 PRs, 13 commits)
rofiles: Add --copyup option (#1382)
rofiles: Fix --copyup when creating a new file (#1396)
grub2: Exit gracefully if there's no system ostree repository (#1399)
lib/fetcher: Add version to USER_AGENT string (#1406)
Release 2018.1 (#1413)
PR: #1387
build-sys: Post-release version bump
ci: Make rust build nonblocking for now
PR: #1391
Revert "ci: Make rust build nonblocking for now"
build-sys: Link with -ldl for rust build
PR: #1397
bin: Fix cookie builtin build with curl but no soup
(and 1 commits from other authors)
PR: #1412
lib: Validate metadata structure more consistently during pull
lib/checkout: Validate pathnames during checkout
tests: Add a test case for path traversal in a dirtree

Gatis Paeglis (1 PR, 4 commits)
PR: #1401
ostree-grub-generator: update outdated comment
Support for booting without initramfs
deploy: add --karg-none argument
ostree-prepare-root: enabler for simpler kernel arg
(and 1 commits from other authors)

Jonathan Lebon (2 PRs, 4 commits)
tests/libtest-core: support multiple literal checks (#1409)
PR: #1402
bash/ostree: add missing --add-metadata option
bin/commit: add --keep-metadata option
bin/commit: move parent checking code higher up

Marcus Folkesson (1 PR, 1 commit)
lib/pull: allways include ostree-repo-pull-private.h (#1389)

Matthew Leeds (1 PR, 2 commits)
PR: #1407
tests: Use --finders option for find-remotes
find-remotes: Add --finders option

Philip Withnall (1 PR, 1 commit)
build: Fix typo in -Wparentheses warning (#1388)

Simon McVittie (2 PRs, 2 commits)
tests: Don't assume uid == primary gid (#1390)
tests: Assert that byte-order is swapped on LE but not BE CPUs (#1393)

Will Thompson (1 PR, 1 commit)
ostree-grub-generator: fix typo in comment (#1398)

William Manley (1 PR, 1 commit)
PR: #1401
Tests: test-no-initramfs: Test both legacy and new kernel locations
(and 4 commits from other authors)