Commit Graph

2889 Commits (95c3c942d3bd17383feca86783f273ae36f98b0b)
 

Author SHA1 Message Date
Alexander Larsson 08894bb720 Update to latest libglnx with tmpfile error fix 2017-05-19 09:40:10 +02:00
Colin Walters bcced9adc7 Bump libglnx, port to new tmpfile API
I think the new tmpfile here is a lot better; there were places in flatpak where
we weren't doing "unlink on failure" etc.
2017-05-19 09:27:03 +02:00
Alexander Larsson 05aa9e4eb3 Remove unused variable 2017-05-19 09:24:51 +02:00
Alexander Larsson 07609559b8 progress: Don't report ??? in the bar while estimating 2017-05-18 15:37:35 +02:00
Alexander Larsson 1c46cfe45d progress: Tweak metadata part of download
We artificially limit the metadata phase to the first 20 metadata
objects, because otherwise that phase takes too long time, as it
downloads content at the same time.
2017-05-18 15:36:34 +02:00
Alexander Larsson 435091e5cf progress: Simplify the progress calculations
For the delta case we can get perfect results by just ignoring
the counts and relying on the sizes. However, this needs a
recent ostree that supports the fetched-delta-part-size field.

For the object case we keep using the object average size
to estimate a size which we can compare with the extra data
size.
2017-05-18 15:14:42 +02:00
Alexander Larsson fbd5452aac progress: Use the new atomic progress API
We read everything at once, which means we will not
race against the download thread possibly updating the
values.
2017-05-18 12:28:57 +02:00
Alexander Larsson fcb59afe7a Require ostree 2017.6 for the new progress APIs 2017-05-18 11:30:18 +02:00
Alexander Larsson 7ac5d41bea Use the nicer progress reporting for the CLI too
We now use the same progress calculations as in libflatpak
so we get a nice progress bar also in the CLI.
2017-05-18 09:51:35 +02:00
Georges Basile Stavracas Neto 6924658f59 Improve progress report calculation
Now that we have access to the total extra-data download size,
we can have much more precise progress reports by summing up
all the download sizes from OSTree and extra-data.

This patch makes the progress report callback use the extra-data
sizes, as well as calculate the average size (in bytes) of the
content.

flatpak/flatpak#609
2017-05-18 09:02:02 +02:00
Alexander Larsson e7ad74c398 run: Fix race condition in app identification
There is a race condition in how the portals detects the peer app-id.
If we manager to open /proc/$pid/root, and then openat(fd,
".flatpak-info"), but the process dies inbetween the two, then the
.flatpak-info read-only bind mount (and all other mounts in the
namespace except the root one) is unmounted, so we will find
and empty .flatpakinfo file.

We fix this race by storing the contents in a regular file, but
also as a readonly bind mount on top of it.

For typical dbus portals the pid is the dbus proxy though, and in
that case the app can't modify the file, so we make it just
a file there instead of file + bind-mount.
2017-05-17 15:06:03 +02:00
Alexander Larsson 461084d1a9 builder: Add a install-rule to allow customized install
Fixes: https://github.com/flatpak/flatpak/issues/791
2017-05-15 09:38:22 +02:00
Alexander Larsson 4774b3c80f builder: Take "buildsystem" into consideration for cache freshness 2017-05-15 09:38:22 +02:00
Balázs Úr f69c39eb9c [master] Updated Hungarian translation 2017-05-15 09:15:20 +02:00
Alexander Larsson e3db39ea8f Require latest flatpak (2017.5)
This allows us to rely on the new BARE_USER_ONLY mode, as
well as the fixes to progress reporting. Also, it has a lot
of bugfixes that are nice. If you need an old ostree you can
run the old flatpak series.
2017-05-12 16:30:14 +02:00
Georges Basile Stavracas Neto 222c525910 dir: Report progress more frequently
Flatpak relies on OSTree to report the progress, and
OSTree's progress report frequency fallbacks to 1 second.

Recently, however, OSTree received support for setting
custom update frequencies. Since it relies on GVariant
options, if the user has an older OSTree, it'll simply
be ignored.

This patch, then, makes Flatpak report progress every
100ms rather than the default value of 1 second.

flatpak/flatpak#609
2017-05-12 16:16:03 +02:00
Matthias Clasen 514886dd13 Document flatpakref format extensions
gnome-software is reading some extra keys. Document them.
2017-05-12 12:27:16 +02:00
Matthias Clasen b232c9e1fa Document flatpakrepo format extensions
gnome-software is reading some extra keys. Document them.
2017-05-12 12:27:16 +02:00
Alexander Larsson 3e9bc8ba7a Rewrite exported mimetype files
We only allow globs, not magic matches, and we drop the glob
priority to a very low level (weight=5) which means that its
hard for app-installed mimetypes to override the system installed
ones. That should make exporting mimetypes pretty safe.
2017-05-11 18:16:13 +02:00
Alexander Larsson 050fe4e795 exports: Fix up exporting of dbus service files
The relative paths for the symlinks in the table was wrong.
2017-05-11 17:20:32 +02:00
Alexander Larsson 2ebf672866 Disable exported search providers by default
Installing a search provider is a minor security issue, as it
can see all that you search for in the desktop, so we rewrite
these so that they are always disabled by default. The user
can then chose to enable it if he wants.
2017-05-11 16:04:45 +02:00
Alexander Larsson e8369a69ef install: Limit the exported file to a whitelist
Instead of exporting any files we add a whilelist
of directories that get exported:

 share/applications
 share/icons
 share/dbus-1/services
 share/gnome-shell/search-providers
 share/mime/packages

This avoids potentially installing some kind of file that the
host system reads and interprets in a risky way.

Applications and dbus services are safe because we rewrite them.
Icons are safe as long as the image loaders are, and if they are
not we have worse problems.
Search providers and mime formats are somewhat problematic, and
follow-up commits will rewrite these to be safer.
2017-05-11 15:28:19 +02:00
Alexander Larsson 373d2155ec deploy: Verify that xa.metadata in the commit matches the deployed file
We may have made decisions based on the permissions listed in the
metadata in the (signed, thus trusted) commit. However, at runtime
we actually look at the metadata file that is deployed. Make sure
these are the same by comparing them when we deploy.
2017-05-11 14:13:44 +02:00
Alexander Larsson 98e749202a update: Fix update for partial commits with system-helper
When we're pulling via the system-child repo we don't inherit
the commitpartial state from the parent, so we didn't know a
commit was partial, so the full contents was not downloaded.
This fixes updating a partial install to the same commit, but
with different subsets.
2017-05-11 13:58:46 +02:00
Alexander Larsson b5c66a7689 update: If resused ostree repo fails, blow it away and create new
This happened to me because I had some leftover from a test run
that failed. But could happen for other reasons.
2017-05-11 13:57:43 +02:00
Alexander Larsson 703a0d7900 update: flatpak update --subpath= means all subpaths 2017-05-11 12:44:15 +02:00
Alexander Larsson 529c3bbaf1 deploy: Append the subdirs to the checkout dir
This allows us to easily move between different partial
installs of the same commit id.
2017-05-11 12:43:30 +02:00
Alexander Larsson 093b60c157 deploy: Uncouple active link from checksum
We don't guarantee that the active link is identical to the
checksum anymore. If you really need the checksum you have
to look at the deploy data.

This is mainly changing the names from "checksum" to "active_id"
in the code that touches the active link, except the case where
we're undeploying after an update. We then use the old active
link value rather than the old commit id as the undeploy id.

This will allow us to have partial deploys with different names
than the full or differently partial deploy.
2017-05-11 12:40:36 +02:00
Alexander Larsson 3fca1584ff remote-ls: Don't rely on active symlink value, use deploy data
We want to tweak the active symlink value so we can't rely
on this being exactly the commit id.
2017-05-11 12:27:36 +02:00
Alexander Larsson c35bce077f remote-add: Use the new system-helper for initial metadata update
This removes some duplicated code, and also follows the new
redirect-url property on initial add.

This also means we're requiring gpg signatures to be correct
on remote-add, so fix up the tests
2017-05-11 11:20:39 +02:00
Alexander Larsson af7195e6ae update-metadata: silently ignore for non-signed system-helper case
We can't really verify the new updates in the system helper for
the non-signed case, so just ignore it.
2017-05-11 11:10:02 +02:00
Alexander Larsson fcfc732904 fix clang warning
clang complained about the undefined g_rmdir (because we didn't include
gstdio.h), so we use the regular rmdir instead.
2017-05-11 10:55:26 +02:00
Alexander Larsson 8c78700363 builder: Allow specifying the git commit if the branch is a tag
If the ref specified in "branch" is actually a tag, we were requiring
that the "commit" property must match "git rev-parse $branch", but
in the case of a tagname that actually expands to the id of the
tag object, not the commit id. We now also try to match against
"rev-parse $branch^{commit}" which expands to the actual commit
object.

We still allow the tag object for backwards compat.
2017-05-11 10:52:30 +02:00
Alexander Larsson 3d1b51b5c0 builder: Use mkdtemp for initial git/bzr checkout
Rather than just prepending _tmp this creates a unique
directory name, which means we don't run into issues
when retrying if the first checkout fails.

Fixes https://github.com/flatpak/flatpak/issues/786
2017-05-11 10:29:51 +02:00
Alexander Larsson 2fa6e2fe97 build-update-repo: Use the size/metadata info in the commit object
If the data is already there, there is no need to re-calculate it.
2017-05-11 10:09:39 +02:00
Alexander Larsson c6d4330cea export: Add install/download size and metadata to commit
This way we can faster access this when updating the
summary, and also have a way to access this in case we ever
want to not have it in the summary.
2017-05-11 10:09:39 +02:00
Alexander Larsson 1e5ffa926a Add workaround to flatpak_repo_collect_sizes for uncommited objects
It turns out the underlying call ostree_repo_query_object_storage_size
doesn't work for staged objects, so we work around this by actually
loading the object, walking back to the original unix input stream
and fstat:ing the fd from that.
2017-05-11 10:09:39 +02:00
Matthias Clasen f15d1b78ec Remove an unused autoptr definition
This makes clang complain about an unused function.
2017-05-11 08:38:32 +02:00
Matthias Clasen 029a5e38e1 Remove unused variables
clang flags these.
2017-05-11 08:38:32 +02:00
Matthias Clasen 3ce8be47a9 Improve error wording
I just saw a confusing error messages that looked like two error
messages just running into each other. Better to end the first
one with a colon when using g_prefix_error.
2017-05-11 08:38:01 +02:00
Alexander Larsson 644bb1cd41 common: Break out the flatpak progress calculator to a helper method. 2017-05-10 17:24:48 +02:00
Alexander Larsson 96cdf9acfc Don't use gdbus-codegen autoptr generation
This requires a glib more recent than what we want, so just do it
manually.
2017-05-10 17:22:05 +02:00
Matthias Clasen 9998b0e6a1 repo: Print out gpg key hash too
This seems useful, at least it shows that a key is there.
2017-05-10 16:01:24 +02:00
Alexander Larsson 2f533f3a68 tests: run test-repo.sh with system repo too 2017-05-10 11:54:27 +02:00
Alexander Larsson 755d4b6337 tests: Add tests for --redirect-url and new GPG key 2017-05-10 11:54:27 +02:00
Alexander Larsson b09185c356 tests: Add new test-repo.sh with initial GPG tests
This just ensures we can install from GPG and non-GPG repos
and we can't install with missing on wrong GPG key.
2017-05-10 11:54:27 +02:00
Alexander Larsson ec89340a26 tests: Add a second gpg keyring 2017-05-10 11:54:27 +02:00
Alexander Larsson b33d6fd04f tests: Allow overriding GPG args 2017-05-10 11:54:27 +02:00
Alexander Larsson 99a6200cab tests: Make it possible to create multiple test repos 2017-05-10 11:54:27 +02:00
Matthias Clasen 66e91f55e8 Add a marker to rewritten desktop files
Add X-Flatpak=true to rewritten desktop files.
Desktop files have multiple consumers, and this
makes it easier for them to know what to do.
2017-05-10 11:54:19 +02:00