ostree.git
4 years agotests: Ensure no dangling commit partials on remote depth pull
Dan Nicholson [Mon, 11 Jan 2021 23:05:05 +0000 (16:05 -0700)]
tests: Ensure no dangling commit partials on remote depth pull

This was already being done on the local depth pull test, so this just
adds the matching logic to the remote depth pull test.

4 years agoMerge pull request #2261 from cgwalters/boot-ro-more
OpenShift Merge Robot [Mon, 11 Jan 2021 14:20:30 +0000 (09:20 -0500)]
Merge pull request #2261 from cgwalters/boot-ro-more

sysroot: Handle ro /boot but rw /sysroot

4 years agosysroot: Handle ro /boot but rw /sysroot
Colin Walters [Sat, 9 Jan 2021 18:34:27 +0000 (18:34 +0000)]
sysroot: Handle ro /boot but rw /sysroot

The recent change in https://github.com/coreos/fedora-coreos-config/pull/659
broke some of our tests that do `mount -o remount,rw /sysroot` but
leave `/boot` read-only.

We had code for having `/boot` read-only before `/sysroot` but
in practice we had a file descriptor for `/sysroot` that we opened
before the remount that would happen later on.

Clean things up here so that in the library, we also remount
`/boot` at the same time we remount `/sysroot` if either are readonly.

Delete the legacy code for remounting `/boot` rw if we're not in
a mount namespace.  I am fairly confident most users are either
using the `ostree` CLI, or they're using the mount namespace.

4 years agosysroot: Also maintain canonical boot_fd
Colin Walters [Sat, 9 Jan 2021 20:40:55 +0000 (20:40 +0000)]
sysroot: Also maintain canonical boot_fd

Just like we hold a fd for `/sysroot`, also do so for `/boot`
instead of opening and closing it in a few places.

This is a preparatory cleanup for further work.

4 years agomain: Unconditionally set up mount namespace
Colin Walters [Sat, 9 Jan 2021 20:42:43 +0000 (20:42 +0000)]
main: Unconditionally set up mount namespace

I was being very conservative initially here, but I think it's
really safe to just unconditionally set up the mount namespace.

This avoids having to check twice for a read-only `/sysroot`
(once in the binary and once in the library).

5 years agoMerge pull request #2254 from dbnicholson/coding-style
OpenShift Merge Robot [Fri, 18 Dec 2020 18:54:08 +0000 (18:54 +0000)]
Merge pull request #2254 from dbnicholson/coding-style

pull: Use GNU coding style

5 years agopull: Use GNU coding style
Dan Nicholson [Fri, 18 Dec 2020 16:13:38 +0000 (09:13 -0700)]
pull: Use GNU coding style

5 years agoMerge pull request #2253 from dbnicholson/pull-no-verify-bindings
OpenShift Merge Robot [Fri, 18 Dec 2020 15:39:29 +0000 (15:39 +0000)]
Merge pull request #2253 from dbnicholson/pull-no-verify-bindings

pull: Allow disabling commit binding verification

5 years agopull: Allow disabling commit binding verification
Dan Nicholson [Thu, 17 Dec 2020 21:07:08 +0000 (14:07 -0700)]
pull: Allow disabling commit binding verification

In some cases such as backups or mirroring you may want to pull commits
from one repo to another even if there commits that have incorrect
bindings. Fixing the commits in the source repository to have correct
bindings may not be feasible, so provide a pull option to disable
verification.

For Endless we have several repositories that predate collection IDs and
ref bindings. Later these repositories gained collection IDs to support
the features they provide and ref bindings as the ostree tooling was
upgraded. These repositories contain released commits that were valid to
the clients they were targeting at the time. Correcting the bindings is
not really an option as it would mean invalidating the repository
history.

5 years agoMerge pull request #2249 from mwleeds/fix-readme-flatpak-typo
OpenShift Merge Robot [Wed, 2 Dec 2020 04:55:25 +0000 (05:55 +0100)]
Merge pull request #2249 from mwleeds/fix-readme-flatpak-typo

README: Fix typos of Flatpak

5 years agoREADME: Fix typos of Flatpak
Phaedrus Leeds [Wed, 2 Dec 2020 01:44:51 +0000 (17:44 -0800)]
README: Fix typos of Flatpak

5 years agoMerge pull request #2248 from jjardon/jjardon/more_distros
OpenShift Merge Robot [Wed, 2 Dec 2020 00:14:11 +0000 (01:14 +0100)]
Merge pull request #2248 from jjardon/jjardon/more_distros

README.md: Add Apertis and GNOME OS

5 years agoREADME.md: Add Apertis and GNOME OS
Javier Jardón [Tue, 1 Dec 2020 20:25:20 +0000 (20:25 +0000)]
README.md: Add Apertis and GNOME OS

5 years agoMerge pull request #2246 from smcv/pull-summary-sigs-mtime
OpenShift Merge Robot [Mon, 30 Nov 2020 22:20:18 +0000 (23:20 +0100)]
Merge pull request #2246 from smcv/pull-summary-sigs-mtime

test-pull-summary-sigs: Set timestamps to serve expected files

5 years agotest-pull-summary-sigs: Set timestamps to serve expected files
Simon McVittie [Sun, 22 Nov 2020 13:17:24 +0000 (13:17 +0000)]
test-pull-summary-sigs: Set timestamps to serve expected files

If this is not done, the test can fail when the temporary directory is
a tmpfs: for example this happens during build-time testing with /var/tmp
on tmpfs or TEST_TMPDIR pointing to a tmpfs, or installed-tests with
gnome-desktop-testing-runner allocating the test directory on a tmpfs.

In particular, many of Debian's official autobuilders now do the entire
build and test procedure in a chroot hosted on a tmpfs, to improve build
performance and prevent fsync overhead.

In this situation, it appears that overwriting summary.sig with a copy
of summary.sig.2 is not sufficient for the web server to tell the
libostree client that it needs to be re-downloaded. I'm not completely
sure why, because tmpfs does appear to have sub-second-resolution
timestamps, but forcing a distinct mtime is certainly enough to
resolve it.

Resolves: https://github.com/ostreedev/ostree/issues/2245
Bug-Debian: https://bugs.debian.org/975418
Signed-off-by: Simon McVittie <smcv@collabora.com>
5 years agoMerge pull request #2244 from lucab/ups/docs-release-guide
OpenShift Merge Robot [Thu, 19 Nov 2020 14:40:33 +0000 (15:40 +0100)]
Merge pull request #2244 from lucab/ups/docs-release-guide

templates: add release-checklist

5 years agoMerge pull request #2243 from lucab/ups/workflow-checkout
OpenShift Merge Robot [Wed, 18 Nov 2020 16:14:05 +0000 (17:14 +0100)]
Merge pull request #2243 from lucab/ups/workflow-checkout

workflow/release: further refinements

5 years agotemplates: add release-checklist
Luca BRUNO [Wed, 18 Nov 2020 11:14:15 +0000 (11:14 +0000)]
templates: add release-checklist

This collects all release steps in a release-checklist template.

5 years agoworkflow/release: further refinements
Luca BRUNO [Wed, 18 Nov 2020 10:24:19 +0000 (10:24 +0000)]
workflow/release: further refinements

This tweaks the release GH workflow further so that it only triggers
when the `configure.ac` file (which owns the version) changes.
Plus it properly checkouts the PR branch to avoid wrongly looking
at a synthetic merge commit.

5 years agoMerge pull request #2242 from stb-tester/tarball-import-xattrs
OpenShift Merge Robot [Tue, 17 Nov 2020 21:38:32 +0000 (22:38 +0100)]
Merge pull request #2242 from stb-tester/tarball-import-xattrs

ostree commit --tree=tar: Import xattrs from tarballs

5 years agoostree commit --tree=tar: Import xattrs from tarballs
William Manley [Tue, 17 Nov 2020 00:46:10 +0000 (00:46 +0000)]
ostree commit --tree=tar: Import xattrs from tarballs

If you specify an `xattr_callback` the xattrs will still be taken from
there for now.

5 years agoMerge pull request #2241 from lucab/release-2020.8
OpenShift Merge Robot [Tue, 17 Nov 2020 15:18:58 +0000 (16:18 +0100)]
Merge pull request #2241 from lucab/release-2020.8

Release 2020.8

5 years agoconfigure: post-release version bump
Luca BRUNO [Tue, 17 Nov 2020 10:50:56 +0000 (10:50 +0000)]
configure: post-release version bump

5 years agoRelease 2020.8
Luca BRUNO [Tue, 17 Nov 2020 10:14:16 +0000 (10:14 +0000)]
Release 2020.8

5 years agoMerge pull request #2240 from lucab/ups/ci-pr-title
OpenShift Merge Robot [Mon, 16 Nov 2020 19:33:46 +0000 (20:33 +0100)]
Merge pull request #2240 from lucab/ups/ci-pr-title

workflows/release: pattern-match on PR title

5 years agoworkflows/release: pattern-match on PR title
Luca BRUNO [Mon, 16 Nov 2020 17:08:52 +0000 (17:08 +0000)]
workflows/release: pattern-match on PR title

This adds an additional condition in order to run sanity check all
PRs starting with `Release` (case-insensitive).

5 years agoMerge pull request #2239 from lucab/ups/gh-actions
OpenShift Merge Robot [Mon, 16 Nov 2020 16:00:01 +0000 (17:00 +0100)]
Merge pull request #2239 from lucab/ups/gh-actions

ci: run ci-release-build.sh on GitHub

5 years agoci: run ci-release-build.sh on GitHub
Luca BRUNO [Mon, 16 Nov 2020 11:05:52 +0000 (11:05 +0000)]
ci: run ci-release-build.sh on GitHub

This adds a GitHub action in order to run ci-release-build.sh on
release PRs (detected via the `kind/release` label).

5 years agoMerge pull request #2232 from cgwalters/deploy-docs
OpenShift Merge Robot [Thu, 12 Nov 2020 18:40:28 +0000 (19:40 +0100)]
Merge pull request #2232 from cgwalters/deploy-docs

deployment: Add a bunch of docs and fix annotations

5 years agoMerge pull request #2235 from cgwalters/checkout-some-new-style
OpenShift Merge Robot [Thu, 12 Nov 2020 08:34:44 +0000 (09:34 +0100)]
Merge pull request #2235 from cgwalters/checkout-some-new-style

bin/checkout: Port some to new style

5 years agoMerge pull request #2231 from cgwalters/some-nullable-annotations
OpenShift Merge Robot [Thu, 12 Nov 2020 02:01:22 +0000 (03:01 +0100)]
Merge pull request #2231 from cgwalters/some-nullable-annotations

deployment: Ensure query_deployments_for returns nullable values

5 years agodeployment: Ensure query_deployments_for returns nullable values
Colin Walters [Fri, 6 Nov 2020 19:24:58 +0000 (19:24 +0000)]
deployment: Ensure query_deployments_for returns nullable values

Since that's a common case; hit this while working on rpm-ostree
code using the ostree-rs bindings.

5 years agodeployment: Add a bunch of docs and fix annotations
Colin Walters [Fri, 6 Nov 2020 19:38:40 +0000 (19:38 +0000)]
deployment: Add a bunch of docs and fix annotations

We were missing docs for these, also add some nullability annotations.
Motivated by using these from the Rust bindings.

5 years agobin/checkout: Port some to new style
Colin Walters [Mon, 9 Nov 2020 19:03:12 +0000 (19:03 +0000)]
bin/checkout: Port some to new style

I was reading this code for unrelated reasons and noticed it
was still old style; port most (but not all) to new style.

5 years agoMerge pull request #2236 from lucab/ups/travis-xenial
OpenShift Merge Robot [Wed, 11 Nov 2020 16:01:13 +0000 (17:01 +0100)]
Merge pull request #2236 from lucab/ups/travis-xenial

ci/travis: move to newer base distro

5 years agoci/travis: move to newer base distro
Luca BRUNO [Tue, 10 Nov 2020 13:06:34 +0000 (13:06 +0000)]
ci/travis: move to newer base distro

This removes the old pinned distro (Ubuntu Trusty 14.04) from Travis,
moving to the newer default distro (Ubuntu Xenial 16.04).

5 years agoMerge pull request #2233 from cgwalters/repo-annotations
OpenShift Merge Robot [Mon, 9 Nov 2020 18:56:24 +0000 (18:56 +0000)]
Merge pull request #2233 from cgwalters/repo-annotations

sysroot: Fix up some GI nullable annotations

5 years agosysroot: Fix up some GI nullable annotations
Colin Walters [Fri, 6 Nov 2020 20:04:54 +0000 (20:04 +0000)]
sysroot: Fix up some GI nullable annotations

Hit `ostree_sysroot_repo()` shouldn't be nullable while using
the ostree Rust bindings.

5 years agoMerge pull request #2228 from jlebon/pr/drop-volatile
OpenShift Merge Robot [Tue, 3 Nov 2020 22:36:14 +0000 (17:36 -0500)]
Merge pull request #2228 from jlebon/pr/drop-volatile

Drop use of `volatile`

5 years agoMerge pull request #2230 from alexlarsson/pull-dont-save-passed-in-summary
OpenShift Merge Robot [Tue, 3 Nov 2020 17:35:06 +0000 (12:35 -0500)]
Merge pull request #2230 from alexlarsson/pull-dont-save-passed-in-summary

pull: Don't save into cache passed in GByte summaries

5 years agoMerge pull request #2229 from dbnicholson/static-delta-generate-annotations
OpenShift Merge Robot [Tue, 3 Nov 2020 14:32:54 +0000 (15:32 +0100)]
Merge pull request #2229 from dbnicholson/static-delta-generate-annotations

lib/deltas: Annotate from checksum as nullable

5 years agopull: Don't save into cache passed in GByte summaries
Alexander Larsson [Tue, 3 Nov 2020 10:48:33 +0000 (11:48 +0100)]
pull: Don't save into cache passed in GByte summaries

The cache shouldn't be affected by the user passing in some other
summary as it may not be the "official one".

I ran into this in flatpak where the passed summary was correct, but
the re-saving of the cache updated the mtime of the cached file which
led to later http If-Modified-Since calls failing to update.

5 years agolib/deltas: Annotate from checksum as nullable
Dan Nicholson [Mon, 2 Nov 2020 23:42:30 +0000 (16:42 -0700)]
lib/deltas: Annotate from checksum as nullable

Without this you can't create a scratch delta from GI. While here,
switch the deprecated allow-none annotations to nullable.

5 years agoDrop use of `volatile`
Jonathan Lebon [Mon, 2 Nov 2020 19:53:26 +0000 (14:53 -0500)]
Drop use of `volatile`

As detailed in
gitlab.gnome.org/GNOME/glib/-/issues/600#note_877282, volatile
isn't actually needed in these contexts because the atomic operations
already give us strong enough guarantees. In GCC 11, this triggers a
diagnostic due to the volatile qualifier getting dropped anyway.

There is a WIP to do the same in glib:
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719

This obsoletes this downstream patch:
https://src.fedoraproject.org/rpms/ostree/c/b8c5a6fb

5 years agoMerge pull request #2226 from alexlarsson/fix-gir-arg
OpenShift Merge Robot [Wed, 28 Oct 2020 17:31:50 +0000 (13:31 -0400)]
Merge pull request #2226 from alexlarsson/fix-gir-arg

ostree_repo_gpg_sign_data: Fix API doc argument name

5 years agoostree_repo_gpg_sign_data: Fix API doc argument name
Alexander Larsson [Wed, 28 Oct 2020 14:53:18 +0000 (15:53 +0100)]
ostree_repo_gpg_sign_data: Fix API doc argument name

I got:
src/libostree/ostree-repo.c:5232: Warning: OSTree: ostree_repo_gpg_sign_data: unknown parameter 'out_signature' in documentation comment, should be 'out_signatures'

5 years agoMerge pull request #2224 from stb-tester/bootloader-refactorings
OpenShift Merge Robot [Wed, 28 Oct 2020 10:39:57 +0000 (06:39 -0400)]
Merge pull request #2224 from stb-tester/bootloader-refactorings

Bootloader probing and construction refactoring

5 years agoMerge pull request #2225 from jlebon/pr/clear-timer
OpenShift Merge Robot [Tue, 27 Oct 2020 19:10:58 +0000 (15:10 -0400)]
Merge pull request #2225 from jlebon/pr/clear-timer

lib/fetch-curl: Unref timeout source

5 years agolib/fetch-curl: Unref timeout source
Jonathan Lebon [Tue, 27 Oct 2020 15:58:14 +0000 (11:58 -0400)]
lib/fetch-curl: Unref timeout source

The timeout timer should always be one-shot, so let's just always
destroy it in the callback. The main context has its own ref on it, so
it won't be freed behind its back.

This *should* fix a leak that was brought up in
https://bugzilla.redhat.com/show_bug.cgi?id=1891761.

Reported-by: Milan Crha <mcrha@redhat.com>
5 years agolib/fetcher-curl: Use G_SOURCE_REMOVE instead of FALSE
Jonathan Lebon [Tue, 27 Oct 2020 15:57:00 +0000 (11:57 -0400)]
lib/fetcher-curl: Use G_SOURCE_REMOVE instead of FALSE

They're equivalent, though I prefer the former because it's more
descriptive and it makes it really obvious that it's a `GSource`
callback.

5 years agofixup! Refactor `ostree_sysroot_query_bootloader`
William Manley [Tue, 27 Oct 2020 13:24:46 +0000 (13:24 +0000)]
fixup! Refactor `ostree_sysroot_query_bootloader`

5 years agofixup! Refactor: Centralise choosing the appropriate bootloader
William Manley [Tue, 27 Oct 2020 12:35:29 +0000 (12:35 +0000)]
fixup! Refactor: Centralise choosing the appropriate bootloader

5 years agoTests: Refactor bootloader-entries-crosscheck
William Manley [Tue, 14 Jul 2020 12:32:30 +0000 (13:32 +0100)]
Tests: Refactor bootloader-entries-crosscheck

I've made this use functions to make it easier to add support for more
bootloaders.  Seeing as there will be a big diff anyway I've also adjusted
the formatting to make it pep8 compliant.

5 years agoRefactor `ostree_sysroot_query_bootloader`
William Manley [Tue, 14 Jul 2020 11:53:17 +0000 (12:53 +0100)]
Refactor `ostree_sysroot_query_bootloader`

This is more regular, so will make it easier to add more bootloader types
in the future.

5 years agoAdd support for explicitly requesting any specific bootloader type
William Manley [Mon, 6 Jul 2020 15:12:29 +0000 (16:12 +0100)]
Add support for explicitly requesting any specific bootloader type

...with the `sysroot.bootloader` configuration option.  This can be useful
when converting a system to use `ostree` which doesn't currently have a
bootloader configuration that `ostree` can automatically detect, and is
also useful in combination with the `--sysroot` option when provisioning a
rootfs for systems other than the one you're running `ostree admin deploy`
on.

5 years agoRefactor: sysroot.bootloader: Store enum value rather than string
William Manley [Mon, 6 Jul 2020 14:50:28 +0000 (15:50 +0100)]
Refactor: sysroot.bootloader: Store enum value rather than string

It's easier to extend and it centralises the config parsing.  In other
places we will no longer need to use `g_str_equal` to match these values,
a `switch` statement will be sufficient.

5 years agoRefactor: Centralise choosing the appropriate bootloader
William Manley [Mon, 6 Jul 2020 13:54:31 +0000 (14:54 +0100)]
Refactor: Centralise choosing the appropriate bootloader

In preparation for enhancing `_ostree_sysroot_query_bootloader`

5 years agoostree_repo_get_bootloader: Document transfer none
William Manley [Mon, 6 Jul 2020 13:58:35 +0000 (14:58 +0100)]
ostree_repo_get_bootloader: Document transfer none

I think this may affect bindings too.

5 years agoMerge pull request #2188 from alexlarsson/delta-indexes
OpenShift Merge Robot [Fri, 23 Oct 2020 13:05:24 +0000 (09:05 -0400)]
Merge pull request #2188 from alexlarsson/delta-indexes

Add indexes for deltas outside of the summary

5 years agoostree pull: Add more g_debug spew around fetching deltas
Alexander Larsson [Tue, 20 Oct 2020 13:51:08 +0000 (15:51 +0200)]
ostree pull: Add more g_debug spew around fetching deltas

This is useful to debug what is happening when downloading via deltas.

5 years agoAdd ostree_repo_gpg_sign_data()
Alexander Larsson [Tue, 20 Oct 2020 06:37:35 +0000 (08:37 +0200)]
Add ostree_repo_gpg_sign_data()

This is similar to ostree_sign_data() but for the old gpg code.
Flatpak will need this to reproduce a signed summary.

5 years agotests: Add a testcase to ensure we're not using the summary if we don't need it
Alexander Larsson [Fri, 9 Oct 2020 14:30:29 +0000 (16:30 +0200)]
tests: Add a testcase to ensure we're not using the summary if we don't need it

With deltas outside the summary, if a commit is specified when pulling
we don't download the summary. Verify this.

5 years agopull: Only download summary if we need it for the pull operation
Alexander Larsson [Fri, 23 Oct 2020 11:05:25 +0000 (13:05 +0200)]
pull: Only download summary if we need it for the pull operation

If we have a commit id for all the refs we're pulling, and if we
don't need the summary to list all the refs when mirroring then the
only reason to download the summary is for the list of deltas.

With the new "indexed-deltas" property in the config file (and mirrored
to the summary file) we can detect when we don't need the summary for
deltas and completely avoid downloading it then.

5 years agodeltas: Set `indexed-deltas` key in the config and summary
Alexander Larsson [Fri, 9 Oct 2020 08:55:52 +0000 (10:55 +0200)]
deltas: Set `indexed-deltas` key in the config and summary

Clients can use these during pull and avoid downloading the summary if
needed, or use the indexed-deltas instead of relying on the ones in
the summary which may be left out.

5 years agodeltas: Take a shared repo lock while reindexing deltas
Alexander Larsson [Fri, 9 Oct 2020 08:15:42 +0000 (10:15 +0200)]
deltas: Take a shared repo lock while reindexing deltas

This ensures we're not racing with a prune operation that can be removing
the delta indexes we're relying on.

5 years agodeltas: Add tests for delta indexes
Alexander Larsson [Tue, 1 Sep 2020 14:00:08 +0000 (16:00 +0200)]
deltas: Add tests for delta indexes

This tests generation of the index as well as using it when pulling

5 years agodeltas: Use delta indexes when pulling
Alexander Larsson [Tue, 1 Sep 2020 12:52:49 +0000 (14:52 +0200)]
deltas: Use delta indexes when pulling

If there is no delta index in the summary, try to fetch the
delta index for the commit we're going to and use that to find the
delta (if any).

5 years agodeltas: Add CLI ops to list and reindex delta-indexes
Alexander Larsson [Tue, 1 Sep 2020 10:28:17 +0000 (12:28 +0200)]
deltas: Add CLI ops to list and reindex delta-indexes

5 years agodeltas: Make ostree_repo_static_delta_reindex() public
Alexander Larsson [Mon, 12 Oct 2020 13:57:53 +0000 (15:57 +0200)]
deltas: Make ostree_repo_static_delta_reindex() public

It is useful to be able to trigger this without having to regenerate
the summary. For example, if you are not using summaries, or ar generating
the summaries yourself.

5 years agodeltas: Add and document no-deltas-in-summary config option
Alexander Larsson [Tue, 1 Sep 2020 10:26:17 +0000 (12:26 +0200)]
deltas: Add and document no-deltas-in-summary config option

By default this is FALSE to keep existing clients working.

5 years agodeltas: Update delta indexes when updating summary
Alexander Larsson [Tue, 1 Sep 2020 10:05:36 +0000 (12:05 +0200)]
deltas: Update delta indexes when updating summary

When we update the summary file (and its list of deltas) we also update
all delta indexes. The index format is a single `a{sv}` variant identical
to the metadata-part of the summary with (currently) only the
`ostree.static-deltas` key.

Since we expect most delta indexes to change rarely, we avoid
unnecessary writes when reindexing. New indexes are compared to
existing ones and only the changed ones are written to disk.  This
avoids unnecessary write load and mtime changes on the repo server.

5 years agodeltas: Add ostree_repo_list_static_delta_indexes() function
Alexander Larsson [Tue, 1 Sep 2020 10:03:40 +0000 (12:03 +0200)]
deltas: Add ostree_repo_list_static_delta_indexes() function

This lists all the available delta indexes.

5 years agodeltas: Add _ostree_get_relative_static_delta_index_path()
Alexander Larsson [Tue, 1 Sep 2020 10:00:32 +0000 (12:00 +0200)]
deltas: Add _ostree_get_relative_static_delta_index_path()

This gets the subpath for a delta index file, which is of the form
"delta-indexes/$commit.index", that contains all the deltas going
to the particular commit.

5 years agoMerge pull request #2205 from pwithnall/etags-and-last-modified
OpenShift Merge Robot [Thu, 22 Oct 2020 22:20:23 +0000 (18:20 -0400)]
Merge pull request #2205 from pwithnall/etags-and-last-modified

Add support for ETag and Last-Modified headers for summary and summary.sig

5 years agotests: Split RFC 2616 date parsing code out and add tests
Philip Withnall [Fri, 16 Oct 2020 16:05:54 +0000 (17:05 +0100)]
tests: Split RFC 2616 date parsing code out and add tests

This makes it testable, and increases its test coverage too 100% of
lines, as measured by `make coverage`.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
5 years agoostree/trivial-httpd: Add Last-Modified/ETag support
Philip Withnall [Fri, 9 Oct 2020 17:46:06 +0000 (18:46 +0100)]
ostree/trivial-httpd: Add Last-Modified/ETag support

This is basic support for the
Last-Modified/ETag/If-Modified-Since/If-None-Match headers. It’s not
high performance, and doesn’t support all of the related caching
features (like the If-Match header, etc.).

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
5 years agotests: Add simple test for summary file caching
Philip Withnall [Fri, 9 Oct 2020 17:34:55 +0000 (18:34 +0100)]
tests: Add simple test for summary file caching

This test would have actually passed before the summary file caching
changes (in the previous few commits) were added, as the `summary.sig`
essentially acted as the ETag for the summary file, and itself wasn’t
updated on disk if it didn’t change when querying the server.

Actually testing that the HTTP caching headers are working to reduce
HTTP traffic would require test hooks into the pull code or the
trivial-httpd server, neither of which I have the time to add at the
moment.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
5 years agolib/pull: Hook up HTTP caching headers for summary and summary.sig
Philip Withnall [Tue, 29 Sep 2020 09:51:26 +0000 (10:51 +0100)]
lib/pull: Hook up HTTP caching headers for summary and summary.sig

As `summary` and `summary.sig` aren’t immutable, HTTP requests to
download them can be optimised by sending the `If-None-Match` and
`If-Modified-Since` headers to avoid unnecessarily re-downloading them
if they haven’t changed since last being checked.

Hook them up to the new support for that in the fetcher.

The `ETag` and `Last-Modified` for each file in the cache are stored as
the `user.etag` xattr and the mtime, respectively. For flatpak, for
example, this affects the cached files in
`~/.local/share/flatpak/repo/tmp/cache/summaries`.

If xattrs aren’t supported, or if the server doesn’t support the caching
headers, the pull behaviour is unchanged from before.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
5 years agolibostree: Add support for ETag and Last-Modified headers
Philip Withnall [Thu, 24 Sep 2020 16:49:48 +0000 (17:49 +0100)]
libostree: Add support for ETag and Last-Modified headers

Add support in the soup and curl fetchers to send the `If-None-Match`
and `If-Modified-Since` request headers, and pass on the `ETag` and
`Last-Modified` response headers.

This currently introduces no functional changes, but once call sites
provide the appropriate integration, this will allow HTTP caching to
happen with requests (typically with metadata requests, where the data
is not immutable due to being content-addressed). That should reduce
bandwidth requirements.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
5 years agoMerge pull request #2222 from fkrull/patch-v2020.7
OpenShift Merge Robot [Tue, 20 Oct 2020 20:48:37 +0000 (16:48 -0400)]
Merge pull request #2222 from fkrull/patch-v2020.7

lib: add missing GI annotation

5 years agoMerge pull request #2221 from kelvinfan001/fix-docs
OpenShift Merge Robot [Mon, 19 Oct 2020 18:11:50 +0000 (14:11 -0400)]
Merge pull request #2221 from kelvinfan001/fix-docs

docs: Fix various typos

5 years agodocs: Fix various typos
Kelvin Fan [Thu, 15 Oct 2020 23:51:44 +0000 (19:51 -0400)]
docs: Fix various typos

5 years agolib: fix GI parameter tags
Felix Krull [Sat, 17 Oct 2020 20:14:09 +0000 (22:14 +0200)]
lib: fix GI parameter tags

5 years agoMerge pull request #2219 from jlebon/pr/fix-inode-print-format
OpenShift Merge Robot [Thu, 15 Oct 2020 20:15:37 +0000 (16:15 -0400)]
Merge pull request #2219 from jlebon/pr/fix-inode-print-format

ostree-prepare-root: print st_dev and st_ino as 64-bit ints

5 years agoMerge pull request #2218 from cgwalters/travis-32bit
OpenShift Merge Robot [Thu, 15 Oct 2020 19:27:48 +0000 (15:27 -0400)]
Merge pull request #2218 from cgwalters/travis-32bit

travis: Add a 32 bit build

5 years agoostree-prepare-root: print st_dev and st_ino as 64-bit ints
Jonathan Lebon [Thu, 15 Oct 2020 16:05:34 +0000 (12:05 -0400)]
ostree-prepare-root: print st_dev and st_ino as 64-bit ints

This matches what systemd does and should work fine on all platforms.

Possibly resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1888436

5 years agotravis: Add a 32 bit build
Colin Walters [Thu, 15 Oct 2020 13:35:40 +0000 (09:35 -0400)]
travis: Add a 32 bit build

In the past we've had 32 bit bugs that were caught by
the compiler, let's add this to Travis.

5 years agoMerge pull request #2215 from cgwalters/fd-transfer
OpenShift Merge Robot [Tue, 13 Oct 2020 22:45:13 +0000 (00:45 +0200)]
Merge pull request #2215 from cgwalters/fd-transfer

deploy: Remove (transfer none) from fd arg

5 years agoMerge pull request #2214 from cgwalters/release-2020-7
OpenShift Merge Robot [Tue, 13 Oct 2020 22:18:49 +0000 (00:18 +0200)]
Merge pull request #2214 from cgwalters/release-2020-7

Release 2020.7

5 years agodeploy: Remove (transfer none) from fd arg
Colin Walters [Tue, 13 Oct 2020 21:39:18 +0000 (17:39 -0400)]
deploy: Remove (transfer none) from fd arg

GI complains.  And in general one needs to assume that file
descriptors aren't stolen.

5 years agoPost-release version bump
Colin Walters [Tue, 13 Oct 2020 18:33:14 +0000 (14:33 -0400)]
Post-release version bump

5 years agoRelease 2020.7
Colin Walters [Tue, 13 Oct 2020 18:31:26 +0000 (14:31 -0400)]
Release 2020.7

5 years agoMerge pull request #2213 from alexlarsson/summary-bugfixes
OpenShift Merge Robot [Thu, 8 Oct 2020 19:18:34 +0000 (15:18 -0400)]
Merge pull request #2213 from alexlarsson/summary-bugfixes

Various fixes from the indexed-summaries branch

5 years agosignatures: Fix leak in _sign_detached_metadata_append()
Alexander Larsson [Wed, 16 Sep 2020 13:54:03 +0000 (15:54 +0200)]
signatures: Fix leak in _sign_detached_metadata_append()

This needs to ref_sink the returned variant, as it is used with g_autoptr
in the callers.

5 years agofetch_summary_with_options: Fix n-network-retries option parsing
Alexander Larsson [Wed, 16 Sep 2020 10:09:41 +0000 (12:09 +0200)]
fetch_summary_with_options: Fix n-network-retries option parsing

"&u" is not a valid gvariant format string, it should just be "u".

5 years agoostree_repo_find_remotes_async: Fix leak of summary
Alexander Larsson [Mon, 14 Sep 2020 11:52:10 +0000 (13:52 +0200)]
ostree_repo_find_remotes_async: Fix leak of summary

We were creating a GVariant from a GBytes and storing it in an
g_autoptr without ref_sinking it.

5 years agoMerge pull request #2212 from jlebon/pr/packit-tweak
OpenShift Merge Robot [Wed, 7 Oct 2020 19:34:22 +0000 (15:34 -0400)]
Merge pull request #2212 from jlebon/pr/packit-tweak

ci: Make Packit ignore downstream patches

5 years agoMerge pull request #2211 from jlebon/pr/close-fd
OpenShift Merge Robot [Wed, 7 Oct 2020 19:23:43 +0000 (15:23 -0400)]
Merge pull request #2211 from jlebon/pr/close-fd

lib/deploy: Don't leak fd when checksumming dtbs

5 years agoci: Make Packit ignore downstream patches
Jonathan Lebon [Wed, 7 Oct 2020 19:04:17 +0000 (15:04 -0400)]
ci: Make Packit ignore downstream patches

We don't really carry "Fedora-only" patches in dist-git. So we want to
nuke all the patches which exist there.

Follow-up to #2210.

5 years agolib/deploy: Don't leak fd when checksumming dtbs
Jonathan Lebon [Wed, 7 Oct 2020 18:44:25 +0000 (14:44 -0400)]
lib/deploy: Don't leak fd when checksumming dtbs

Likely the root of https://bugzilla.redhat.com/show_bug.cgi?id=1886149.