Skip to content

Releases: ostreedev/ostree

2017.9

27 Jul 13:13
v2017.9
Compare
Choose a tag to compare

A notable new feature in this release is that the pull machinery now interprets
two new metadata keys: ostree.ref-binding and ostree.collection-binding.
This allows closing a longstanding class of "sidegrade" attacks that Florian
Weimer identified when performing a security audit of libostree years ago:
https://bugzilla.gnome.org/show_bug.cgi?id=724873
There was a more recent discussion on this topic on the list:
https://mail.gnome.org/archives/ostree-list/2017-May/msg00013.html

For the ostree-as-host case, this only matters if you offer multiple refs. For
flatpak, it's more important as a MITM attacker could actually switch applications;
that's why flatpak implemented this a while ago as xa.ref.

I'll note here that it's recommended for content providers to make use of
ostree's support for tls-ca-path to implement TLS CA pinning, which protects
all metadata and content in a strong fashion; in this scenario the GPG
signatures act as a secondary layer of defense and make offline verification
easier (for e.g. mirroring).

Otherwise, there's some performance enhancements for local pulls, and a variety
of bugfixes.

Thanks to all contributors!

Colin Walters (24):
      build-sys: Post-release version bump
      deploy: Port some functions to new style
      checkout: Don't set dir mtime to 0 when doing a force copy checkout
      tests: Run pull tests for bare/bare-user
      lib/pull: Avoid journaling 404s for optional content
      ci/papr: Update to F26
      lib/pull: Do local content imports async too
      Add a notion of "physical" sysroot, use for remote writing
      bin/cookies: Drop libsoup code, fix fd-relative issues, new style
      lib/pull: Drop direct use of ->repodir
      Update libglnx, port various bits to new API
      core: Sanitize error text validating refs (e.g. against HTML)
      lib/repo: Auto-recreate repo/tmp if it's deleted
      ci/papr: Switch primary to libcurl, add libsoup context
      lib/commit: Fix EBADF with GENERATE_SIZES option for commit
      ci/papr: Add a suite to run introspection-based tests without ASAN
      lib: Add #defines for current well-known metadata keys
      tests: More fixes for gjs tests
      ci: Enable -Werror for clang
      build: Turn off default warnings if we find -Werror specified
      Update libglnx, port some uses to newer APIs
      lib/core: Add #defines for ref/collection binding
      ci: Enable libcurl by default on Fedora
      Release 2017.9

Emmanuele Bassi (1):
      Move the include directive to the enum template

Krzesimir Nowak (4):
      ostree: Add collection and ref bindings to metadata on commit
      lib/pull: Pass the ref together with the request
      lib/pull: Collection and ref bindings verification
      tests: New tests for creating commits with bindings and pulling them

Philip Withnall (4):
      lib/repo-commit: Fix types of content size cache entries
      lib/repo: Add OSTREE_REPO_METADATA_REF as a well-known metadata store
      build: Ensure all .sym files are distributed in tarballs
      build: Ensure all experimental tests are distributed in tarballs

Ruixin (1):
      lib: Add #define for endoflife metadata key

Simon McVittie (1):
      build: Don't distribute generated man pages

Git-EVTag-v0-SHA512: d5eff57f587038fcb29ee373db2ecae03908bb1fb0cbbad8d6f30fa8ec618c24b7312b03a4b958a8c10ce1450525382609f6726e837b77a7de8aa26c87a9cf67

2017.8

18 Jul 18:02
v2017.8
Compare
Choose a tag to compare

This is a quicker release closely following 2017.7, but it still
includes a number of changes. First, a lot of work is landing
from Philip/Krzesimir for doing "collections" and pulling
content from Avahi/USB drives etc. That work is still underneath
--enable-experimental-api, but look for more from that soon!

Other notable user-visible feature PRs from this cycle are:

lib/repo: Add min-free-space-percent option, default 3%: #987
Add "pull --localcache-repo": #982

An important bugfix for bare-user repo mode owners is:
lib/commit: Ensure bare-user objects are always user-readable: #989

Besides that we have a lot of code cleanup, CI work, etc.

Thanks to all contributors!

Colin Walters (44):
      main: DevelBuild=yes to `ostree --version` for devel builds
      build-sys: Post-release version bump
      repo: Squash a gcc `-Wmaybe-uninitialized` warning
      ci: Enable -Werror=maybe-uninitialized
      lib/core: Avoid NULL deref in content_file_parse() if out variable unset
      lib/repo: Split archive/bare file parsing
      lib/repo: More cleanup of load_file() internals
      lib/deltas: Port to more to new code style
      cmd/fsck: Port to new style
      tests: add a syntax-check rule for glnx_prefix_error()
      lib/commit: Clean up commit file type handling variables
      lib: Hoist unlinkat() cleanup API to fsutil, use in pull
      lib: Use OtTmpFile for static delta processing
      lib/commit: Fix fallocate size for bare-user symlinks
      lib/ref: Suppress more collection ref methods from introspection
      ci: Make introspection warnings fatal
      lib/deltas: Some style porting
      build: Don't scan ostree-remote.h for introspection if !experimental-api
      pull: Check free space when pulling deltas
      ci: Actually run installed tests again
      Port to GLnxTmpfile
      tree-wide: Misc porting to newer libglnx APIs
      libutil: Add a helper for O_TMPFILE + mmap()
      lib/commit: Refactor non-failable size indexing function
      lib/deltas: More porting to new code style
      lib/repo: Port bareuser-conversion stat to bare load
      lib/pull: Some small style porting
      tests: Fix assert_files_hardlinked
      lib/pull: Don't fetch detached metadata twice for local pulls
      tree-wide: Replace various uses of `archive-z2` → `archive`
      cmdline/pull: Print final status even if noninteractive
      lib: Add a helper to convert struct stat → GFileInfo
      lib/commit: Port a few minor functions to new style
      lib/pull: Move check for requested content earlier
      Add "pull --localcache-repo"
      lib/commit: Fix a tmpfile fd leak in static delta processing
      bin/commit: Port helper functions to new style
      bin/commit: Add '=' to --statoverride
      lib/commit: Ensure bare-user objects are always user-readable
      lib/commit: Use provided length when doing writes
      lib/repo: Add min-free-space-percent option, default 3%
      pull: Cleanly error when doing local pulls of remote-prefixed refs
      lib/repo: Immediately error creating bare-user repo on tmpfs
      Release 2017.8

Jonathan Lebon (6):
      ci: add ci-release-build.sh
      papr: build and test on c7
      test-switchroot.sh: skip if no busybox
      codebase: start using GLNX_HASH_TABLE_FOREACH macros
      ci: unconditionally turn on -Werror
      pull: fix GLNX_HASH_TABLE_FOREACH_KV regressions

Philip Withnall (31):
      build: Add ‘devel’ or ‘release’ to OSTREE_FEATURES for test-symbols.sh
      lib/core: Add ostree_validate_remote_name() for remote names
      lib/core: Fix ‘Since’ line for ostree_validate_remote_name()
      lib/sym: Fix symbol versions for 2017.7 experimental symbols
      lib/remote: Fix ‘Since’ line for OstreeRemote
      lib/repo: Split out ref handling from regenerate_summary()
      lib/ref: Add OstreeCollectionRef type for globally unique refs
      lib/repo: Add collection ID support to OstreeRepo
      lib/refs: Add methods for setting/listing collection–refs
      lib/pull: Add collection support to ostree_repo_pull_with_options()
      lib/repo-finder: Add basic support for finding remote URIs by ref name
      lib/repo-finder: Add config-file based OstreeRepoFinder implementation
      lib/repo-finder: Add mount based OstreeRepoFinder implementation
      lib/bloom: Add an internal bloom filter implementation
      lib/repo-finder: Add Avahi based OstreeRepoFinder implementation
      find-remotes: Add a find-remotes built-in command
      find-remotes: Add pull support to the find-remotes built-in command
      init: Add a --collection-id argument to the built-in init command
      remote-add: Add a --collection-id argument to the built-in add command
      refs: Add a --collections argument to the built-in refs command
      ostree/dump: Include collection IDs and mirrored refs in summary dumps
      ostree/builtins: Add support for collection–refs to a few utilities
      tests: Add integration tests for collections
      lib/refs: Add runtime error checking for collection ID validity
      lib/repo: Fix a typo in a documentation comment
      tests: Fix incorrect `summary --update` usage in test-local-pull.sh
      ostree/summary: Add support for adding additional metadata
      lib/pull: Don’t cache summary file until its signature is verified
      lib/pull: Check whether summary is in normal form when loading it
      lib/pull: Use ostree_repo_verify_summary() to verify summary on pull
      lib/repo: Fix repo-finder deleting remote configs when run

Simon McVittie (1):
      build: Always include ostree-trivial-httpd.xml in tarballs


Git-EVTag-v0-SHA512: e1c420d6528a51dc5daacaec241c6ffaa66be4ba8e07d61bad74086e6add9418a036f26f571e13ea90db482ff2985608c97faa3eb951216a0411cf062de8a4cc

2017.7

19 Jun 15:45
v2017.7
Compare
Choose a tag to compare

The most notable thing for this release is that for flatpak users/distributors,
this release adds a lot of (opt-in) hardening against setuid or world-writable
files. These issues are also (to a lesser degree) applicable to ostree-based
build systems which use the bare-user repository mode. A pending flatpak
version will require this version of libostree. More information in:
flatpak/flatpak#845

For ostree-as-host, we fixed a major regression in SELinux labeling for
/etc (only applies to SELinux-using host systems).

Known issue: test-symbols.sh will fail when building from the tarball (as
opposed to a git clone). Pending fix: #944

Besides that, there's various smaller cleanups and fixes. It's great to see
contributors from a variety of organizations; having libostree be a shared
infrastructure layer across distributions is a longstanding vision. Thanks to
all contributors!

Alexander Larsson (5):
      fetcher: Send Accept-Encoding: gzip when downloading summary
      repo: After renaming in all loose objects, ensure metadata is stable
      lib/repo: Always look in staging directory for objects
      pull: When mirroring, only replace summary if we're doing a full mirror
      static delta apply: Work on bare-user-only repos

Anton Gerasimov (1):
      lib/sysroot: Add API to get pending/rollback for given stateroot

Brian C. Lane (1):
      Remove the OSTREE_MAX_RECURSION limit on metadata depth

Colin Walters (51):
      tests/test-symbols.sh: Fix with --enable-experimental-api
      ci: Add unit case for --enable-experimental-api
      tests/libtest-core: Copy rpm-ostree changes, clean up
      bin/cookies: Delete dead tmpfile code in cookie list command
      Add stub for new libglnx tmpfile API, port simpler callers to it
      lib/deploy: Port config merge logic to new code style
      tests: Add some C tests for object writing
      pull-test: Add some 404 tests
      lib/fsutil: Delete unused GFile ioctl method
      lib/fsutil: Port to new code style
      lib: Add an "is_system" member to OstreeRepo
      lib/sysroot: Add non-failable ostree_sysroot_repo()
      tree-wide: Add+run spatch to use glnx_throw()
      cmd: Use autoptr for GKeyFile
      lib/util: Some style conversion
      Add a notion of "physical" sysroot, use for remote writing
      repo/commit: Dedup metadata writing API implementations
      repo/commit: Dedup content writing API implementation
      repo/commit: In the expected checksum case, check existence early
      repo/commit: Don't renormalize trusted metadata
      repo/commit: Split up metadata/content commit paths
      lib/repo: Delete unused private prototypes
      Revert "Add a notion of "physical" sysroot, use for remote writing"
      Don't install trivial-httpd man page if not enabled
      Canonicalize bare-user-only perms with 0755 mask
      builtins/cat: Port to new code style
      lib/repofile: Port mostly to new code style
      lib/repofile: Follow symlinks for `g_file_read()`
      lib/repo: For bare-user, mask content object modes with 0775
      tests: Add a test for bare-user-only failing to commit suid content
      repo/commit: Support group-writable files for bare-user-only
      ci: Update to match current rpm-ostree
      ci: Add CentOS 7 build
      repo: Fix leak of superblock fds when generating summary
      lib/commit: Port final object writing function to new code style
      lib/commit: Drop some conditionals/clarify code in content path
      lib/checkout: Ignore world-writable dirs for bare-user-only checkout
      lib/repo: Refactor object copy import function
      lib/repo: Skip import via hardlink if repo owners don't match
      lib/repo: Import metadata via hardlink even for distinct repo modes
      lib/repo: Support hardlink conversions from bare-user to bu-only
      lib/pull: Add OSTREE_REPO_PULL_FLAGS_BAREUSERONLY_FILES
      lib/checkout: Add bareuseronly_dirs option
      build-sys: post-release version bump
      lib/sysroot: Add some g_prefix_error() for ostree_sysroot_cleanup()
      lib/pull: Extend BAREUSERONLY_FILES flag to HTTP requests
      lib: Split symbol versioning into -released and -devel
      checkout: Fix SELinux policy labeling when recursing
      tests: Fix previous commit for selinux testing
      build-sys: Add "release build" flag, use for symbol versioning
      Release 2017.7

Daniel Drake (2):
      libtest: allow committing to alternative branches
      Allow commits to mark refs as EOL, replaced by others

David Shea (1):
      lib/repo: Fix annotations for out parameters

Jonathan Lebon (6):
      pull: complete detached meta fetch before scanning
      PAPR: migrate to the new name
      checkout: don't apply SELinux labeling in user mode
      checkout: also chmod in the user checkout case
      manual: document bare-user-only repo mode
      basic-test.sh: explicitly check for uncompressed objects

Krzesimir Nowak (1):
      lib/sysroot: Document the NO_CLEAN flag

Owen W. Taylor (1):
      lib/repo: Don't copy xattrs when manipulating the GPG keyring

Philip Withnall (16):
      lib/remote: Add a getter for OstreeRemote.name
      lib/remote: Add internal annotations to OstreeRemote
      lib/remote: Add arguments to internal OstreeRemote constructor
      lib/repo: Add return value to _ostree_repo_add_remote()
      lib/repo: Make ost_repo_remove_remote() available internally
      lib/remote: Fix compilation with --enable-experimental-api
      build: Use AM_TESTS_ENVIRONMENT rather than TESTS_ENVIRONMENT
      lib/repo: Reindent some code in regenerate_summary() for clarity
      lib/pull: Fix a typo in a documentation comment
      lib/pull: Simplify a for-loop initialisation
      lib/pull: Drop some trailing whitespace
      lib/pull: Fix an over-indented block
      ostree/dump: Improve formatting for well-known commit metadata keys
      lib/repo: Omit deltas from the summary file if there are none
      lib/fetcher: Add cleanup function for OstreeFetcher
      lib/pull: Fix construction of a refspec to use the correct separator

Tristan Van Berkom (1):
      ostreee-version.h.in: Added Since: version annotations



Git-EVTag-v0-SHA512: 5115bcfa837cf59ed3672f5c7717796091ce2e88eb3ecb75148d14055246529afc2206d8e02540d2f6cb0254bee4d29506b47dbd65212f5a0b14a846f1cc986e
-----BEGIN PGP SIGNATURE-----

iQEwBAABCgAaBQJZR/ALExx3YWx0ZXJzQHZlcmJ1bS5vcmcACgkQ3EX9WSHBPwsj
Fwf+J5XIzBg7EWZOvM46tJsIz4SheSC0ULEIOT497S25mZepMUbyWfp5eS1pgr8O
daj/tUwRqWjC84kTF6lo0ChBahQl6d+QFQsC8HYdyKfBgnIfVOEkKfdea5Q2Syed
Ox/ntiPUDdO1bUZ+72X6TpQGaBhV1XfL8l9GT91ZCRgQ22yt3i0hdiAJOX+ka0ix
bD3Dy1LQz/CieUz7ViAMHWxZvva42a+ybKdzgX2r0W9Ci6NXXysOSMtKXCzoNyZl
rf0lzpmx0LpddICUEkn07uSoC2y9Yep8JRH4UKJ5vdbP3h76D1cMckRwNvYvtsjO
vapkPL9pqn/Fv2Rr/oNY3WPJ5w==
=IYbt
-----END PGP SIGNATURE-----

2017.6

17 May 21:36
v2017.6
Compare
Choose a tag to compare

One of the most notable changes in this release is that we switched
to using a systemd generator for handling /var, which means admins
can now set it up as an explicit mount point. We feel pretty confident
in the code, but do test your specific setup. One note in particular;
the new model (obviously) requires systemd, and while we tried to preserve
the non-systemd path, it wasn't explicitly tested.
Issue: #855

The work to port to a new code style continues rapidly; at this point
most of the library is converted, with just the command line remaining.
I think the new style is a lot more readable now that we rely fully
on __attribute__((cleanup)).

Philip Withnall contributed changes to enhance the OstreeAsyncProgress
reporting API, which I think is going to be quite useful for user
interface frontends (like GNOME Software).
PR: #819

There's a smattering of smaller bugfixes; minor memory leaks, double close()
and the like. In this cycle we also beefed up our CI/testing more - we
now test both Fedora Atomic Host and flatpak more explicitly. Contributions
to extend the suite to other distributions would be appreciated; for example,
tests for ostree-as-host on Debian. Our Travis-executed tests
should be extensible.

Thanks to Dan Nicholson for also fixing some of the test suite for installed
tests, and also contributing introspection fixes for language bindings.

Another feature that involved a lot of internal changes is our handling
for /etc on SELinux-based systems. We now label files as we go rather
than having a more fragile separate relabeling path. This is also
exposed as an API, which is used by rpm-ostree now. I think this
particular change highlights the strength of "libostree" as an API
that can be reused by higher level systems.
PR: #797

Thanks to all contributors!

Colin Walters (62):
      pull: Support deltas for explicit commits
      checkout: Fix bare-user symlink checkouts
      Bump release for 2017.5
      lib/boot: Convert bootconfig parser to new code style
      sysroot: Continue conversion of some simpler functions to new style
      cmdline: Start conversion to new code style
      repo: Optimize bare-user content object reads a bit
      repo/checkout: Finish conversion to new code style
      lib/cleanup: Port some of the cleanup code to fd-relative and new style
      repo: Add a "force copy" flag to checkout
      lib/core: Complete conversion to new code style
      Rename "osname" → "stateroot"
      lib/util: Delete some leftover pre-libglnx directory opening functions
      repo: Drop unused cache variables leftover from pack files
      repo/checkout: Cache lookups of dirmeta objects
      checkout: Merge union/add logic for copies during checkout
      tests: Factor out a libtest-core.sh
      tests/installed: New installed, privileged tests using Fedora AH
      checkout: Add SELinux labeling for checkout, use in deploy
      repo: Port object listing func to use libglnx more + new style
      repo: More porting to new style
      repo: Fix incorrect use of errno() error throwing
      lib/sepolicy: Convert to new code style
      sepolicy: Cache the value of is_selinux_enabled() to work around bug
      lib/checkout: Use TEMP_FAILURE_RETRY()
      ci: Add a context for testing flatpak
      ci: Fix flatpak test pkg install
      checkout: Dedup calls to memcache ref
      repo: Delete the last use of GFile tmp_dir
      tree-wide: Convert to using autoptr(GString) vs g_string_free(...,TRUE)
      Add --enable-installed-tests=exclusive, fix installed case
      utils/checksum: Port to new code style
      fsck: Check for refs missing corresponding commit
      tests: For installed, s/test-/itest-/ to avoid in-tree name clashes
      tests: Migrate test-pull-many.sh to installed on FAH
      ci: Extend FAH rootfs for installed tests
      ci: More flatpak ci fixes
      ci: Move travis scripts from tests/ → ci/
      diff: Port some to new code style
      sysroot: More porting to new code style
      checkout/commit: Use glnx_regfile_copy_bytes() if possible
      lib/prune: Complete porting to new code style
      lib/checkout: Move special case for subpath of file to toplevel
      lib/checkout: Optimize checkout by avoiding OstreeRepoFile recusion
      repo: Fix double close() in summary generation
      lib/repo: Port more of GPG and summary functions to new code style
      checkout: Plug a memleak of the state stringbuf
      tree-wide: Switch tabs ⭾ in various files over to spaces ␠
      lib/checkout: Fix regression in subpath for regular files
      remount: Drop support for auto-tmpfs-on-var; use systemd.volatile=state
      lib/remote: Box OstreeRemote if experimental-api
      lib/repo: Fix double close()
      switchroot/remount: Trim set of remounted filesystems
      switchroot/remount: Check mount status before remounting, be verbose
      Switch to using a systemd generator for /var
      tree-wide: Add a few missing O_CLOEXEC
      lib: Add "open dfd iter handling noent" helper, port tree-wide
      lib/upgrader: Port to new code style
      build: Use cd $(srcdir) instead of `git -C`
      switchroot/generator: Add var.mount to local-fs.target.requires
      lib/pull: Port some functions to new code style
      Release 2017.6

Dan Nicholson (5):
      pull: Fix crash specifying override URL in summary fetch
      commit: Mark ostree_repo_transaction_set_ref* checksums nullable
      pull: Allow additional HTTP headers for summary fetch
      tests: Install libtest-core.sh with installed tests
      tests: Look for trivial-httpd in $libexecdir

Francesco Giannelli (1):
      switchroot: Document a bit more, add demo shell implementation

Jonathan Lebon (2):
      tests/ci-commitmessage-submodules.sh: fix for RHCI
      libglnx: bump and use new helper methods

Krzesimir Nowak (1):
      apidoc: Add missing enums to sections file

Philip Withnall (22):
      ostree: Use G_OPTION_ARG_FILENAME where appropriate
      tests: Ignore some standard automake check output files
      libostree: Rework OstreeAsyncProgress to use GVariants internally
      libostree: Add multiple getter/setter support to OstreeAsyncProgress
      src: Port to new OstreeAsyncProgress atomic API
      libostree: Allow OstreeAsyncProgress:status to be set atomically
      libostree: Get and set OstreeAsyncProgress:status atomically
      libostree: Fix a typo in docs for ostree_repo_pull_with_options()
      libostree: Add missing checks for invalid timestamps
      libostree: Fix potential use of uninitialised memory in progress API
      libostree: Ensure progress keys are all always set
      libostree: Add some additional metadata to the summary file
      libostree: Document endianness of GVariant metadata types
      ostree: Add --view mode to `ostree summary`
      ostree: Improve formatting for well-known summary metadata keys
      ostree: Use #defines for well-known metadata key names
      tests: Add a test for `ostree summary --view`
      tests: Fix regex escaping in test-summary-view.sh
      build: Add --enable-experimental-api configure option for unstable APIs
      libostree: Expose $OSTREE_FEATURES in the pkg-config file
      libostree: Make OstreeRemote a public and internal API
      build: Add -C arguments to some git invocations

Sjoerd Simons (1):
      repo/commit: Fix memory leak

Git-EVTag-v0-SHA512: 47a502039ce8abaa83e5872560846d592fc5e38557a190c3b1101f7ea245a3eeee21be8b9aa39c1ab163dc30072d7ef495b26ba18388d4216421b73e3dfd9372
-----BEGIN PGP SIGNATURE-----

iQEwBAABCgAaBQJZHMGOExx3YWx0ZXJzQHZlcmJ1bS5vcmcACgkQ3EX9WSHBPwt9
LQf/Vu7fVSmtfrlQV6j+uaWeg2sEcYjValgk517aksWBaMlacGbvlYf8N6PESYPv
RcXbv4uNAvHOLKck5yU8iT633f3QpW2gei/IvqIYrV25ePJGhODRs7qGwjkKVVy8
BjEf80AcX/0HT6HGyX0CYLsVJJ8Hg6QSM3dzSMBaqMeWx1HnAK/2pWFQAssUfqRh
6UWWjZfCzW809RqY2efy7nJXDfHDoB4sEFDM8CGs12kQ4tcPJqp6kjMHcuXfC8v9
XZh48yfHb/6o3En4ZTd8cUR7nB5nItnFp+AwXOje7VQa8o2vyiUWvZ8InVJj6/Fx
wZfYgbOcDCfqp++WzsZNhaajBg==
=+xRv
-----END PGP SIGNATURE-----

2017.5

18 Apr 22:03
v2017.5
Compare
Choose a tag to compare

This is a bugfix release for 2017.4 to fix a regression
that broke flatpak: #798

Colin Walters (2):
      checkout: Fix bare-user symlink checkouts
      Release 2017.5

2017.4

12 Apr 19:10
v2017.4
Compare
Choose a tag to compare

A notable new feature in this release is a fourth repository
mode: "bare-user-only". This is very similar to bare-user, but
canonicalizes permissions and ignores xattrs. The intended
use of this is for "non-OS" container tools such as flatpak, where one
intentionally discards the traditional file ownership.
(I'm calling this container case "non-OS" to distinguish from other container tools
where one might want to "log in" via PAM and supporting distinct UIDs
inside a single container is valuable)
More information: #750

We have a few new APIs, such as ostree_check_version() which is
important when making use of some of the "API extensions" we have
using GVariant on e.g. ostree_repo_pull_with_options().

The diff is a bit larger due to us switching to a new code style.

Another quite important change is that ostree trivial-httpd is
disabled by default. With a libcurl build, this is the last part
that links to libsoup. It's only needed for unit tests, so can
be subpackaged or discarded. (We're doing the latter for Fedora)

Speaking of curl, we now support --with-openssl which enables
using OpenSSL's libcrypto for SHA256. This can be notably faster.
You likely want this if e.g. libcurl is already linked to OpenSSL
for you. I'm increasingly confident in the curl code, and should
be ready to recommend using it by default in the next release or
two.

Thanks to all contributors!

Alexander Larsson (4):
      Add _ostree_repo_mode_is_bare helper
      Add bare-user-only repo mode
      commit: Add --canonical-permissions argument
      Add basic tests for bare-user-only repo modes

André Klitzing (2):
      Avoid unnecessary includes
      Fix includes if built against musl

Anton Gerasimov (1):
      Define TARGET_PREFIX to use with grub2 deployment

Colin Walters (46):
      Disable "ostree trivial-httpd" by default now
      core: Add runtime ostree_check_version()
      builtin/show: Convert to direct return/decl-after-stmt style
      pull: Squash a `-Wmaybe-uninitialized` warning
      lib: Exclude soup header from introspection
      lib: Squash most of the gtk-doc warnings for missing parameters
      lib: Add a private copy of checksum-instream
      core: Support building with OpenSSL for checksums
      sysroot/deploy: Some cleanup to decl-after-stmt/return FALSE style
      sysroot: Prep refactoring of cleanup logic
      build: Quiet automake warning for bupsplit
      build: Various fixes for openssl build
      Bump libglnx, port a few callers to new error API
      sepolicy: Add ostree_sepolicy_new_at()
      sepolicy: Add better private API for setfscreatecon
      cfg.mk: Add a syntax check for a redundant : in glnx_throw
      repo/refs: Convert to new code style
      sysroot: Add ostree_sysroot_write_deployments_with_options()
      core: Convert some functions to new code style
      build: Dist ostree-sepolicy-private.h
      commit: Prefix error with target object name on failure to write
      repo+tests: Add [core]disable-xattrs=true, use it on overlayfs
      pull: Also skip partial commits for deltas if no summary file
      ci: Enable -Werror=unused-result with -Wp,-D_FORTIFY_SOURCE=2
      sysroot: Don't cache sepolicy
      repo/commit: Change most of this file to new code style
      build: Expose autocleanups unconditionally, start using them
      lib: Fix OSTREE_CHECK_VERSION()
      lib: Delete old GFile path helpers, and migrate single last user
      lib: Delete old unused GFile helpers
      libutil: Delete unused threadpool wrapper
      libutil: Delete unused GVariant I/O functions
      libutil: Delete some unused checksum helper API
      libutil: Delete some unused error handling APIs
      Add Coccinelle usage: one for blacklisting, one for patch collection
      sepolicy: Fix regressions from introduction of sepolicy_new_at()
      Add flag to make SELinux label failure fatal, add hack for /proc
      ci: Add a check that submodule changes include "Update submodule: "
      core: Fix default value of disable_xattrs
      repo/core: Convert some functions to new code style
      soup: Hold a ref to the pending URI during completion processing
      sysroot/deploy: More code style conversion
      curl: Enable pipelining for HTTP/2
      Fix a few gtk-doc warnings
      checkout: Provide useful error with checkout -H and incompat mode
      Release 2017.4

Daniel J Walsh (1):
      sysroot/unlock: Ensure overlay label on /usr is `usr_t`

Erik Larsson (1):
      diff: Add ostree_diff_dirs_with_options(), expose via cmdline

Georges Basile Stavracas Neto (1):
      libostree: add versioning macros

Git-EVTag-v0-SHA512: 71f0649308f04f15eb6a22b4b34c2804d680d5870dd3b6391079fa2be6c0f4df74e7ed4f8abbb461104ad23707ecf38587b187a8bd240a9979e4800c13efce78
-----BEGIN PGP SIGNATURE-----

iQEwBAABCgAaBQJY7npbExx3YWx0ZXJzQHZlcmJ1bS5vcmcACgkQ3EX9WSHBPwuu
tAf+OodLq6R8wuDDJUwOHTHTPlaCW5fZn/MEm3IIpeX7A3Cnr3+t6ZgY4LBtc22Q
w3eHCoHMC181Xr6Rz3RtncRXtMJyvQjanLXDdTCJomkNEi4e4YngMLO1wqQ/5gY+
Dcgo8/u4n5lM9ns5rSxDZ3U+kSkkfVWwkTbDlBYpn5hnrW27k/OSbN4uXqCccjTE
LMRuniUqFaNSy1ia2Sr//6znpoYlaFfL30VEL9GJlvkxsg8c0ToCwnuzcvMP1mM4
SY3noj1LqZ+nVtBTRWDdpY666CdgzPm30OxssVL8fdtXN1MBIWQVBsNmkAvRhFjJ
sRaWwbjxsdQ0TXOmZuaJj3WQrQ==
=iIP/
-----END PGP SIGNATURE-----

2017.3

10 Mar 18:58
v2017.3
Compare
Choose a tag to compare

A variety of small fixes here. One of the most notable things is
the static delta progress computation is now more accurate; this should
make it easier to write a user interface consuming libostree that displays
how much will be downloaded before initiating it.

Related to this, ostree admin upgrade gained --pull-only and --deploy-only
which makes it easier to write e.g. a systemd timer unit that does background
pulls, but only do a deployment (i.e. upgrade) on administrator/device owner
action. A bit more information in #642
and #640

There are two API additions - it's now possible to configure the progress UI frequency
and the zlib compression level.

Besides that, there are a variety of smaller fixes. My favorite is probably
a small fix for grub2 on ppc64,
so we now have fedora/26/ppc64le/atomic-host.

Thanks to all contributors!

Christian Hergert (1):
      repo/checkout: fix 32-bit builds

Colin Walters (28):
      deltas: Don't put unreadable *from* objects in fallback
      delta-show: Don't dump whole superblock, do show fallback checksums
      repo: Fix static delta progress display
      pull: Explicitly error out if metadata objects are fallbacks
      pull: Fold together deltapart+fallback count for display
      ci: Install PyYAML
      lib: Ensure an error is set in ensure_unlinked() if errno != ENOENT
      libtest: Re-enable quiet mode for building fs tree
      README.md: Add more/clean up links to consuming projects
      libglnx: Re-bump to master due to accidental reversion
      ci: Hard error on all -fsanitize=undefined warnings
      build: Add --with-smack, use it to reset contexts for writing objects
      main: Make ostree --version output YAML (and add gitrev)
      deploy: Correctly use libmount unref() calls rather than free()
      man/repo-config: Document mirrorlist
      tree-wide: Squash noncritical compiler warnings
      deploy/libmount: Fix build with old util-linux 2.23 (CentOS7)
      fetcher: Log failures into journal
      upgrade: Add support for --pull-only and --deploy-only
      grub2: Use g_spawn_sync() rather than GSubprocess to avoid SIGCHLD
      grub2: Use "linux16" only on x86/x86_64
      pull: Use all available commits for delta sources
      fetcher/curl: Fix leaks caught by ASAN
      Allow and start using C99 declaration-after-statement
      repo/checkout: Verify early if src/destination are on same device
      checkout: Support a "pure addition" mode
      repo/checkout: Convert a few functions to new "stmt-decl/FALSE" style
      Release 2017.3

Gatis Paeglis (1):
      deltas: Expose the filename parameter

Georges Basile Stavracas Neto (2):
      repo-pull: add option to set the async update frequency
      ostree: allow setting update frequency from command line

Giuseppe Scrivano (1):
      contrib/golang: rm directory

Jonathan Lebon (2):
      pull: don't use static deltas if archive repo
      libglnx: bump for -Wmaybe-uninitialized fix

Philip Withnall (2):
      build: Fix disabling --enable-man if xsltproc is not available
      libostree: Allow compression level to be set for archive-z2 stream


Git-EVTag-v0-SHA512: 55adebf589a0f2115f0ab3cb3f69b42ba3a08c19b3bf54580c437ac08e336651d54849666ab5718e466bdc99bbbaedca79f91619d6e5db3a0f15849029d33cfe
-----BEGIN PGP SIGNATURE-----

iQEwBAABCgAaBQJYwa5GExx3YWx0ZXJzQHZlcmJ1bS5vcmcACgkQ3EX9WSHBPwvT
ywf/dTxmhHzODOw1cCx+OIb7kNf5THsxfz58RR+mhglzt26pNcoo+qKmSbRafHLi
n7+lt5U3VxucqLqPnxbEgj/1r6LzKZ5ZKyqXivsouSLv/leBm/cIeR1s/6JxL8N1
CHc6v9/AG7U4W9USYhy/PSf8PM1M0RbyeCXRi+tfvIfQRDyVo8JY3VBXxbm9YX3T
rY0GT35yHbbY9J+nMhJvi5jqKuiGa86OvT+pYmOUXIfaD54wmjLwoGGDyXh7Zhnb
rhLCNMe8hXM5PTWoidYloczTkwcw2HiKxS0olb1+hHTekSdOEsS86SxMst9JLXu3
0eTaFMNlKKf26LKYliV4jUI0mA==
=8CIL
-----END PGP SIGNATURE-----

2017.2

14 Feb 18:40
v2017.2
Compare
Choose a tag to compare

First, this release renames the project to libostree. This best matches
the current usage of the code, where different projects act as client tools.
More information in the pull request.
However - if you're a user of ostree admin upgrade; don't worry, it will
continue to be maintained and there are improvements in the pipeline.

It's possible that there will be an effort to have a "canonical" ostree
client-side daemon in the future.

Moving on, there are some smaller bugfixes and enhancements in this release,
and two big new build-time options.

--with-curl: We now support libcurl as a HTTP backend. This passes all of the
existing tests, and is suitable for evaluation by downstream consumers. Please
give it a try, and it's likely we'll classify it as equally stable as the
libsoup backend within a release or two. Among other features, the libcurl
backend can speak HTTP/2, which can result in substantial speedups in the
non-static-delta case. Another motivation for this is that for rpm-ostree we
already depend on libcurl, which also links to OpenSSL in Fedora. Whereas
libsoup->glib-networking->gnutls, so with this change we'll drop gnutls too.
PR: #641

--enable-rust: This is an experiment in following a similar plan to what Firefox is doing with
Rust. When this build time option is enabled, a very small bit of libostree (the
rsync-style rollsum code) is in Rust, and linked statically into the rest of the
library. There are no plans right now to make this a hard requirement in the
near future. Please let us know if a dependency on Rust would be
a blocker for your usage of libostree. Or conversely, if using Rust is exciting
for you and would make you more likely to contribute, please also let us know that!
There's more information in the pull request.

Thanks to all contributors!

Alexander Larsson (1):
      rofiles-fuse: Support write/read_buf()

Anton Gerasimov (1):
      admin-switch: Don't segfault if there's no remote

Chen Fan (1):
      doc: fix typo in CONTRIBUTING

Colin Walters (19):
      lib: Adjust comments in symbols section for last release
      lib: Prefix GPG errors with the checksum
      travis: Disable tests (but keep builds) on flaky distros
      lib: Move the bupsplit selftest into our test framework
      tests: Add setup for more realistic repo, change pull-many to use
      Rename to libOSTree
      oxidation: Add implementation of bupsplit in Rust
      packaging/: Delete
      lib: Add ostree_repo_reload_config()
      rust: Support `make dist` -> cargo vendor
      repo: Add archive/zlib-level option, drop default compression to 6
      pull: Add queuing into the higher level logic
      fetcher: Drop the libsoup queue
      pull: Show Estimating if we're scanning too
      libcurl backend
      libglnx: Bump
      commit: Support -F/--body-file, like git
      build: Remove .PHONY for Rust shared library
      Release 2017.2

Jonathan Lebon (4):
      trivial-httpd: trivial option help string fixes
      docs: update pulp_ostree link
      trusted.gpg.d: keep in the same location
      fetcher queue: also throttle on outstanding writes

Krisztian Litkey (1):
      libostree: added empty ot_cleanup_{read,write}_archive macros.

Philip Withnall (1):
      ostree-repo: Clarify error behaviour of remote option getters

Simon McVittie (1):
      libostree: Don't distribute generated enumtypes in tarballs

Git-EVTag-v0-SHA512: 1191007c2417ecaae5eded9453e830f1e91532360d44a9d4e9a845ab62491863e0ad1a20437d476172d6867a4b0548ca89ad5715b802c2a9e0f6d53f62f812a8
-----BEGIN PGP SIGNATURE-----

iQEwBAABCgAaBQJYo0urExx3YWx0ZXJzQHZlcmJ1bS5vcmcACgkQ3EX9WSHBPwsi
xQgAgqh6Ncfdalon2ib1RHYzVEl4lqGz+cVRZGCZAl7bdwx8HbAfbS2lGnrSG6RA
o97/Q9rtOfnMjsjFWQpwxt56DXu7s/ULthGOjw7y0f5gp8e2sPcbnbQdOxI9wnyU
v1JjiKD8QmO5u1Dj6rLIMi5WmQFAEsU6TPUcJw95KBHc4e0n9MVfy3gJZV/MO51Y
uT6qAa4MNl3O9Inos4JOqLDYnSLHkLquVqGvebOuRiJfhIcH9BLPsXGe5CWwUTe3
1KVN5lGD0wnBawCnsZiJw7iVG5Nb3lHEz3qIyfVZH2b+eq3gqt+EpXCOia7WeUz8
qfl84nExhadLEhbrGLtl+QpeRw==
=8xvm
-----END PGP SIGNATURE-----

2017.1

23 Jan 21:18
v2017.1
Compare
Choose a tag to compare

This release has mostly bugfixes, the main new feature is that the prune
command gained more sophistication around selectively pruning branches. We're
planning to use this in Project Atomic work where we want to co-locate both
"development" and "stable" branches in the same repository.

The next release is likely to be more exciting, as we have an additional new
libcurl backend in the works - this release contains some preparatory cleanup
for that.

Thanks to all contributors!

Colin Walters (19):
      docs: Fix ostree.version -> version
      fetcher: Hoist core "mirrored request" API to public
      fetcher: Move high level functions into "fetcher-util"
      fetcher: Split lowlevel API into file/membuf variants
      build-sys: Minor makefile tweaks
      Split trivial-httpd into separate binary
      pull: Rework delta superblock fetches to be async
      trivial-httpd: Daemonize better
      .dir-locals.el: Standard Emacs indentation config
      unlock: Fix description for --hotfix
      tests: Alias assert_not_reached() -> fatal()
      pull: Fix theoretical checksum collision for metadata fetches
      fetcher: Rework API to use strings for tls keys/db
      tests: Don't inject newline in URL
      tests: Loosen error regexp
      libtest: Enable web server logs
      Add support for more selective pruning
      tests: Add a big (many objects) pull
      Release 2017.1

Dan Nicholson (3):
      repo: Fix indentation
      repo: Fix object list keys ownership
      repo: Fix list_objects annotations

Mario Sanchez Prada (1):
      static-delta: Pretend that world unreadable objects are new objects

Paul van Tilburg (1):
      admin: Use execlp() to look for systemctl as the shell would

Simon McVittie (3):
      Fix TAP syntax in test-basic-user.sh, and run it
      Sourced test snippets: remove shebang and make non-executable
      Make corrupt-repo-ref.js executable


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

iQEwBAABCgAaBQJYhm+2Exx3YWx0ZXJzQHZlcmJ1bS5vcmcACgkQ3EX9WSHBPwtM
gQf+PDEGF6JSj82cpfm9j6ghqhUULgiJWS96zR3Y+QGJuyUG12vhh4G+oXgWZ6PC
N8bInWnylzYNYVvfHx8DErIi+GZrILYgDDo2yV+C3GRUUY6POZmTO1NyzPAVDbMV
p/qYKj3w2a5LeZXbl8+hoL/sNcrrpzKJwNdL4j4c5sxhkSrlGtNNVgtkPA+qIUXv
9HolOoa5/JWY1mL8d31US3cOzSFswJPd6M8kki3kqCdTozpD82WbICiWazXepyuS
NdG5V6l7oosYtwcv/TKqo05Omu+DFQd7CoJEKuvZpbLgrwtO7rINvRDXJPvuEEb7
sdYOzUax1YhkgvemDBSLHkyEWg==
=Rwxg
-----END PGP SIGNATURE-----

2016.15

12 Dec 17:48
v2016.15
Compare
Choose a tag to compare

This release is mostly bugfixes - for example, it cleans up the vast
majority of memory leaks caught by ASAN. We also build without
libsoup again, which is preparatory for a potential addition
of a libcurl HTTP backend.

Another notable change is that we now always checksum individual
objects even when applying static deltas, regardless of whether or not
the summary file is signed. This is part of an ongoing thread about
supporting OCI as a transport layer.

Alexander Larsson (5):
      pull: scan_commit_object() - don't load variant twice
      ostree-repo-traverse: Don't leak floating GVariant
      pull_with_options: Don't leak csum_v
      pull: Don't leak delta superblock variants
      delta compilation: Fix leak

Colin Walters (34):
      [ASAN] delta compilation: More leak fixes
      [ASAN] deltas: Fix minor memory leak
      [ASAN] cmdline: Fix minor leak in delta cmdline entrypoint
      traverse: Use g_hash_table_add
      [ASAN] sysroot: Fix leak/double free of keyfile origin
      [ASAN] metalink: Fix leaks of buffer
      [ASAN] bootconfig: Drop a pointless strdup in parser
      [ASAN] set-origin: Squash a leak
      [ASAN] tests: Fix leaks
      Define and use cleanup helpers for libarchive
      [ASAN] tests: Cleanup all current remaining leaks
      tests: Use G_DEBUG=fatal-warnings here too
      tests/keyfile-utils: Drop tests covering preconditions
      lib: Always checksum content in deltas
      pull: Write .commitpartial for local pulls first too
      lib: Remove unused ostree_metalink_get_uri()
      tree-wide: Use g_hash_table_add() where applicable
      ci: Make all ci tests gating for Homu
      build: Add more default errors
      lib: Ensure we use _GNU_SOURCE in enum templates
      fetcher: Define an abstraction over SoupURI
      build: Make libsoup optional again
      [ASAN] sysroot: Squash a leak in lockfile acquisition
      build: Always do enum scanning now
      tree-wide: Switch to autoptr for GOptionContext
      build: Error if glib isn't found
      repo: Add unconfigured-state to remote config options
      Skip gjs-based tests if ASAN is enabled
      tests: Tweak installed tests to deal with ASAN
      ci: Drop sudo installed tests
      ci: Combine UBSAN and ASAN by default
      lib: Squash last use of GFile deltas_dir
      ci: Rebase to f25
      Release 2016.15

Dan Nicholson (1):
      repo: Fix annotations for remote_fetch_summary functions

Jasper St. Pierre (1):
      ostree-repo-traverse: Remove an accidental print statement

Mario Sanchez Prada (1):
      man: Mention bare-user in manpages, along with the other modes

Simon McVittie (13):
      build: clean up ostree-remount if building without systemd
      ci-build: consistently use yes/no for booleans, not yes/empty
      ci-install: add ci_distro
      travis-ci: put an explicit copyright/license on the scripts
      travis-ci: Use a non-ostree-specific name for the Docker image
      travis-ci: Move helper function to before we start building anything
      travis-ci: cat the test log after successful test runs
      travis-ci: Run `make distcheck` too
      travis-ci: Use "slim" Debian image for testing
      travis-ci: Enable stretch (the future Debian 9), replacing unstable
      travis-ci: document parameter variables
      tests: prepend to an existing LD_LIBRARY_PATH, GI_TYPELIB_PATH
      Terminate individual tests after (10 * $TEST_TIMEOUT_FACTOR) minutes


Git-EVTag-v0-SHA512: 18060109c2493e6a1524e293c8a664b4a8da1f23c6b25761083fc50f806aa06911d8d58171fa2985909ea1e33a011c7d3e0dc824cda54b4699fe8b04e0a1a00d
-----BEGIN PGP SIGNATURE-----

iQEwBAABCgAaBQJYTuJtExx3YWx0ZXJzQHZlcmJ1bS5vcmcACgkQ3EX9WSHBPwsN
DQf/cMQmtVotFK81Lu/NuebOPaKJtaB0gx/TDW0ODJuPO15PTVYBbDLfFwIg4cCG
KtiKp4YVGBeBjK04lLNovrpcZts7xfrRIrUiprAzPfbmDciEChg9LGUEz5WfcI+b
s88Lg+3OHDZbI3M3vdAu9nX02M8Go80lkUshG/SEnAruZg2Kis8l3ciiShKylSVr
X7Ndp3IOHKnut03jcI6SK9BGpSbCx5CHatYnvExYq50DXptWLr9CfQitGDiBtdVk
fMTvSSeZMJSnAp56y0KdentJiRePbYeAyhAUPTrNpgTxlt0WUJeh58qlmV2AHA7l
GUbFLVNinNfOVCS30TmPIADMeA==
=8Pnb
-----END PGP SIGNATURE-----