Commit Graph

5739 Commits

Author SHA1 Message Date
Alexander Larsson
bf20a1d89d Merge pull request #3500 from smcv/ilp32-format
dir: Format 64-bit ints correctly
2020-03-26 14:12:20 +01:00
Simon McVittie
09f05a6f87 dir: Format 64-bit ints correctly
%ld is only 32 bits long on ILP32 (32-bit) platforms.

This partially addresses #3499.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2020-03-26 11:38:13 +00:00
Alexander Larsson
75f23be46e Merge pull request #3488 from smcv/really-deprecate
Really deprecate functions deprecated in 102c710b
2020-03-26 11:53:26 +01:00
Alexander Larsson
ccbb08926d Merge pull request #3495 from flatpak/gitignore-oci-auth
.gitignore: Add flatpak-oci-authenticator
2020-03-26 11:52:27 +01:00
Matthew Leeds
fec3cd13fa Merge pull request #3492 from smcv/less-printerr
transaction: Remove a stray debugging message
2020-03-25 17:26:11 -07:00
Matthew Leeds
0b498869dc .gitignore: Add flatpak-oci-authenticator 2020-03-25 17:24:18 -07:00
Simon McVittie
8d25ecf2e1 transaction: Remove a stray debugging message
I assume this isn't meant to be user-facing.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2020-03-25 20:04:20 +00:00
Simon McVittie
6ba07613b4 installation: Formally deprecate deprecated methods
Signed-off-by: Simon McVittie <smcv@collabora.com>
2020-03-25 12:56:56 +00:00
Simon McVittie
2d3642931d installation: Fix typos in deprecations
Signed-off-by: Simon McVittie <smcv@collabora.com>
2020-03-25 12:45:04 +00:00
Alexander Larsson
05eba2b32c Merge pull request #3474 from flatpak/wip/hadess/more-similar-appids
common: Allow version numbers in app-id for DConf migration
2020-03-25 09:57:43 +01:00
Alexander Larsson
aa6d9550c1 Merge pull request #3476 from alexlarsson/drop-p2p
Drop support p2p in favour of simpler side-loading scheme
2020-03-25 09:54:41 +01:00
Alexander Larsson
59d34280b9 lib: Only support FLATPAK_REMOTE_TYPE_STATIC remote types
With the new sideload support usb sideload works differently, they don't
appear like separate remotes. Its just the normal remote and installs
from it will automatically work. However, to list just the sideloadable
refs we point the docs to the new ONLY_SIDELOADED flag.
2020-03-25 08:52:28 +01:00
Alexander Larsson
c092fa4cb7 installation: Reimplement flatpak_installation_list_installed_refs_for_update
Instead of doing a lot of FlatpakInstallation calls we do lower level
FlatpakDir calls, sharing a single RemoteState per remote for the
entire operation. Also, some parts of the checks are moved to FlatpakDir
as flatpak_dir_check_if_installed_ref_needs_update()
2020-03-25 08:27:18 +01:00
Alexander Larsson
102c710b39 FlatpakInstallation: Mark non-transaction install/update ops deprecated
These versions still work, but they don't do neearly as much as you'd
want (depdendencies and whatnot), so document this.
2020-03-25 08:20:18 +01:00
Alexander Larsson
1117f0d872 lib: Add new FLATPAK_QUERY_FLAGS_ONLY_SIDELOADED option 2020-03-24 20:18:57 +01:00
Alexander Larsson
9648cc5eaa tests: Revert the --merge option
This is causing the tests to hang on errors sometimes.
2020-03-24 20:14:29 +01:00
Alexander Larsson
56158a0087 DeployData: Add commit timestamp to deploy data
We want to use this to do quick checks if we need to do an update.
2020-03-24 20:12:50 +01:00
Alexander Larsson
83795c210c Remove unused variable 2020-03-24 17:29:19 +01:00
Alexander Larsson
e5e498c34f remote-ls/info: Add --sideloaded option
This means we load the info from sideloaded repos only
2020-03-24 16:17:06 +01:00
Alexander Larsson
9c6bdc5bfd dir: Add flatpak_remote_state_load_data() function
This is similar to lookup_cache() but it also works for
sideloaded refs. Additionally it returns an allocated metadata
pointer rather than a pointer to the cache.

Also convert some callers to use this when it makes sense.
2020-03-24 16:15:23 +01:00
Alexander Larsson
8999e70c4a RemoteState: Try the sideload paths even for local-only states
This is so we can use these for listing sideloaded refs.
2020-03-24 16:13:24 +01:00
Alexander Larsson
a843d2d594 sideload: Add api and CLI support to specify sideload repos dynamically 2020-03-24 14:01:20 +01:00
Alexander Larsson
b8d2196c2e create-usb: Add --allow-partial option
If you really want to export partial refs you can use this switch.
2020-03-24 12:51:12 +01:00
Alexander Larsson
1d1703fcd8 tests: Enable stderr/stdout merging
This makes it a lot easier to read the error logs, and I don't
think we have anything that writes something that confuses TAP
to stderr.
2020-03-24 12:06:43 +01:00
Alexander Larsson
e4df0fa6a6 sideload: Support pulling individual objects from sideload repos
We use the localcache-repos option to ostree_repo_pull to make ostree
directly import any files that are locally available in the sideload
repo even when pulling the main commit from upstream.

This also adds a test that verifies that such files are not
pulled via http.
2020-03-24 11:46:33 +01:00
Alexander Larsson
9cf2ee7324 dir: Resolve extra-data setup from sideload repo too 2020-03-24 09:16:11 +01:00
Alexander Larsson
a2299486a6 Merge pull request #3478 from mwleeds/retry-on-transient-errors-upstream
Retry network requests on transient errors
2020-03-23 18:02:09 +01:00
Alexander Larsson
d30e902d9f Add build-update-repo --deploy-sideload-collection-id option
This is a new version of --deploy-collection-id that only applies
the collection id update for new (1.7.x+) version of flatpak clients.
This allows you to enable collection ids for sideload use but not
affect older clients where the p2p codepaths are not as tested.
2020-03-23 17:58:04 +01:00
Alexander Larsson
9208913664 Migrate config: Always enable gpg-verify-summary if collection id is set
This used to not be set for collection-id remotes as we used the
ostree-metadata branch for resolving. However, we now use the summary
always when doing a remote install (and not ostree-metadata for local
sideloads), so we still want to verify summary.

The signature on the summary is a nice security feature, but it is also
a very efficient small file to download to verify that no new summary
needs to be downloaded in the no-op update case.
2020-03-23 17:58:04 +01:00
Alexander Larsson
cd88ddd2af tests: Add more tests for sideloading
* Test that we load from sideload repo even when online
 * Test that when offline we don't update to older version in sideload repo
 * Test update to explicit version in sideload repo
 * Test updates to new version from sideload repo
2020-03-23 17:58:04 +01:00
Alexander Larsson
b3da5db1c3 update: Allow update --commit to install from sideloaded repo 2020-03-23 17:58:04 +01:00
Alexander Larsson
9abbb00b33 Drop xa.sideload-collection remote option in favour of regular collection-id
Nothing fundamentally happens differently in ostree if the collection-id
is set, as long as we don't call the p2p specific apis. So, lets keep
using it instead of adding our own special magic.
2020-03-23 17:58:04 +01:00
Alexander Larsson
316baff539 Don't enforce gpg-verify false when using collection id
With the new sideload approach to collection ids it is fine to require
gpg signed summaries. (Not for the child repos or the sideload repos
though, but thoser are either trusted (sideload) or safe for other
reasons like ref-bindings and signed commits).
2020-03-23 17:58:04 +01:00
Alexander Larsson
7710549596 tests: Add tests for sideloading apps 2020-03-23 17:58:04 +01:00
Alexander Larsson
2ac6be91f3 Change how we handle refs in child-repo for system installs
We used to to do a MIRROR pull and make a copy of the upstream summary
file in the child repo. However, now that we want to allow side-loading
from a repo with a partial summary we can no longer do that.

So, the new approach is that the child repo *always* contains
"remote:ref" style refs (never heads or mirror/collection-id refs),
but in order to not let you import a signel commit into the wrong ref
name we now require the commits to have a ref-binding (they all do
since a long time anyway).
2020-03-23 17:58:04 +01:00
Alexander Larsson
904e7b2e2f tests: Remove test-unsigned-summaries.sh
We no longer support unsigned summaries since we dropped the use
of the ostree-metadata branch for p2p.
2020-03-23 17:58:04 +01:00
Alexander Larsson
1d1819840e config: Support setting sideload-repos option 2020-03-23 17:58:04 +01:00
Alexander Larsson
bea879c0d0 FlatpakRemoteState: Drop separate tracking of metadata
We now always use the metadata from the summary, so no need
to track it separately.
2020-03-23 17:58:04 +01:00
Alexander Larsson
124b0be92e Drop more collection_id use
Most code that looks for a regular collection id set on the remote is
removed, as these should never happen in flatpak repo setups now.

Some is replaces with looking at xa.sideload-collection-id:
 * The libflatpak FlatpakRef::collection-id property now comes comes from the sideload id
 * Various CLI commands showing or changing the collection-id for a remote now uses the sideload id
 * Collection id deploy in update now sets the sideload-collection-id instead
 * Setting the collection id for a remote in libflatpak now sets the sideload id

Additionally we now delete the code that allows unsigned summaries
when there is a collection id (because there is none).

create-usb now uses the sideload id as as collection id source when exporting.

The direct repo operations (export, bundle, commit-from) still support
collection ids, because on the server we do want to set it so that we
can sideload.
2020-03-23 17:58:04 +01:00
Alexander Larsson
336a127f55 Support sideloaded repos
This adds a xa.sideload-collection-id option to the remote
configuration and a global xa.sideload-repos option (which is a list
of paths to local repos).

When resolving or listing refs, if we fail to download the real remote
summary (i.e. we're offline) then we instead look into the configured
sideloaded repos for refs that match ref and the sideloaded collection
id for the remote.

For the transaction to resolve the ref we need more metadata. In the
regular summary case we use the metadata from the summary, but that
is not available in the (partial) summary in the sideload repo, so
there we load the actual commit object and use the data from there.
(The ostree-metadata branch is not used/needed.)

This actually also fixes a longstanding issue when you "flatpak update
--checksum=XYZ" because we now handle this correctly by downloading
the commit object from the remote. Before we used the metadata in the
summary which is not right for non-HEAD commits.

To handle the sideloading we record the path to the sideload repo
when sideloading and pass the url to the repo as the remote name
when pulling, which will do a direct local pull.

We avoid using sideloaded refs when offline if the timestamp in the
commits is older than what is already installed locally.
2020-03-23 17:58:04 +01:00
Alexander Larsson
9061b855d8 Initial remove of p2p codepaths
This removes the most basic codepaths for p2p installation, as well
as the tests for it. There still remains various codepaths that
looks as the collection id, these will be removed later.

This is the first step in dropping the p2p code and replacing it with
a simpler approach that focuses on the sideloading case only.
2020-03-23 17:58:04 +01:00
Alexander Larsson
116a8b8487 transaction: Ensure the metadata in the pulled commit matches what we resolved
We're using the metadata from the summary, ostree-metadata or available
commit when making security sensitive decisions, so lets verify this
matches what we get in the actual commit we pulled.

We already did check that this then actually also matches what gets deployed,
so the new check shares code with that.

Note, we don't do this for OCI installs, because it seems the current
fedora flatpaks don't have this set, and we don't want to break
existing remotes.
2020-03-23 17:58:04 +01:00
Alexander Larsson
32194f2d29 create-usb: Detect the case of partial deploys and warn/fail
We don't want to make a usb repo with e.g. just one translation.
2020-03-23 17:58:04 +01:00
Alexander Larsson
83ef801537 dir: Add flatpak_deploy_data_has_subpaths() helper 2020-03-23 17:58:04 +01:00
Alexander Larsson
224b60016f tests: Print calling file+lineno when assert fails 2020-03-23 17:58:04 +01:00
Matthew Leeds
384c68d77a test-http-utils.sh: Fix a few typos 2020-03-20 15:52:50 -07:00
Matthew Leeds
5560132ba6 flatpak-utils-http.c: Add retry logic for transient failures
Currently if flatpak is installing an extra data app such as Spotify and
the server with the .deb file fails to complete the request, the
installation fails with a message like "Connection terminated
unexpectedly". This commit makes flatpak instead try 5 times to download
a given URI if the error returned seems like a transient one (so not,
for example, 404 not found). This is analogous to what was done in
libostree in commit 938055392fd455027a69398c441b992ae521aa87, and we use
some code from there.
2020-03-20 15:47:18 -07:00
Matthew Leeds
0b25455af1 flatpak-utils-http.c: Use more specific GIOError codes
Instead of defaulting to G_IO_ERROR_FAILED, use more specific codes when
we can. These were copied from libostree.
2020-03-20 13:46:36 -07:00
Alexander Larsson
ee93324333 tests: Avoid showing stderr for commands expected to fail 2020-03-20 15:37:10 +01:00
Alexander Larsson
241c5c7f40 tests: Hide unnecessary trace output from the test logs
We use some BASH_XTRACEFD hackery to hide the trace output from
the internals of the assert (and ok) functions, so that the
log output can focus on what is important, i.e. what asserts are
checked and what errors do they print.
2020-03-20 15:37:10 +01:00