Commit Graph

1524 Commits

Author SHA1 Message Date
Robert Ancell
b204ed2466 app: Fix warning when listing a document with no permissions.
(flatpak documents:2965757): GLib-CRITICAL **: 11:27:35.128: g_variant_iter_next_value: must not be called again after NULL has already been returned.

This is due to the applications iterator being checked twice even though it is empty.
2022-09-06 13:18:09 +02:00
Phaedrus Leeds
600e18567c Add a vim modeline and .editorconfig
To make indentation work with less effort. The modeline was copied from
libostree with minor modification and the .editorconfig from GLib.

The advantage of having both a modeline and an editorconfig is we can
work out of the box on more editor setups, and the modeline allows us to
specify the style with a lot more fine grained control.
2022-08-22 19:48:10 -07:00
Phaedrus Leeds
ff8490a91e app: Add -u alias for --user
Save folks a few keystrokes. There is a command which already has a '-u'
option, document-export, but it doesn't support --user so there should
be no conflict. However '-s' is used by the info command among others,
so we can't use that for --system.
2022-08-16 10:50:29 +02:00
Simon McVittie
a03111a3d1 enter: Don't overwrite the DISPLAY
Now that we're using the same display number in the sandbox as on the
host, we can forget about overwriting it with :99.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-08-16 10:45:08 +02:00
Phaedrus Leeds
60005cfcc2 build-export: Don't warn on missing Exec= if DBusActivatable=true
The Desktop Entry spec says that Exec= is only required if
DBusActivatable= is not set to true, so don't emit a warning when Exec=
is missing but not required.
2022-08-16 10:42:06 +02:00
Danilo Bargen
298286be2d build-export: Explicitly allow empty Exec values in desktop file 2022-08-16 10:42:06 +02:00
Danilo Bargen
6dbc097ac5 build-export: Avoid segfault if Exec line is missing from desktop file 2022-08-16 10:42:06 +02:00
Phaedrus Leeds
6db7806762 build-export: Fully ignore stdout content of icon validation
The docs for g_spawn_sync() say:
"Note that you must set the G_SPAWN_STDOUT_TO_DEV_NULL and
G_SPAWN_STDERR_TO_DEV_NULL flags when passing NULL for standard_output
and standard_error."

So add in the stdout flag when calling flatpak-validate-icon in the
build-export command. Without this, there's output in the test logs
from when they're building the test app, due to
https://github.com/flatpak/flatpak/pull/4803
2022-07-25 16:58:16 -04:00
Phaedrus Leeds
cf8979b1b0 app: Un-split translatable strings again
As with the previous commits, try not to split translatable sentences.
See the discussion here about whether the "Warning: "/"Error: " prefix
should be separable:
https://github.com/flatpak/flatpak/pull/4963#discussion_r908326539

Also, don't translate the "(internal error..." message since internal
errors shouldn't be translated to make debugging easier.
2022-07-23 14:18:50 -05:00
Phaedrus Leeds
0465c464af app: Remove a duplicated else if block 2022-07-23 14:18:50 -05:00
Phaedrus Leeds
da5a38c17c app: Un-split some translatable strings
Also make them a bit prettier while we're here

Fixes https://github.com/flatpak/flatpak/issues/4877
2022-07-23 14:18:50 -05:00
Phaedrus Leeds
bf2a0cc2ec app: Un-split EOL translatable sentences
Fixes https://github.com/flatpak/flatpak/issues/4956
2022-07-23 14:18:50 -05:00
Phaedrus Leeds
e1e6465f26 uninstall: Prompt for confirmation on used runtime removal
It doesn't make a lot of sense to prompt for confirmation when an in-use
extension is requested to be uninstalled, but not do so for an in-use
runtime, even if (or perhaps especially since) the latter causes the
transaction to fail later on.
2022-07-21 14:32:45 -05:00
Phaedrus Leeds
bf99c266a8 app: Tweak messages about dependent apps
Use a "Info: " prefix which matches the message printed in
print_eol_info_message(). Also make the message accurately use either
the word "runtime" or "extension" as appropriate.
2022-07-21 14:32:45 -05:00
Phaedrus Leeds
65a4bb0a3d uninstall: Ask for confirmation for used runtime extensions
Based on discussions on the issue tracker, it seems that users sometimes
remove runtime extensions without really understanding whether they're
in use. Add a confirmation prompt to address this.

Helps: #4549
2022-07-21 14:32:45 -05:00
Phaedrus Leeds
ae0de69b17 app: Improve checking for dependent apps in EOL messages
flatpak_dir_list_app_refs_with_runtime_extension() only works when the
runtime extension it is passed and the apps it returns are both
installed. Sometimes a end-of-life message is printed for a runtime that
is not installed but is being installed by the current transaction, or a
runtime that is installed but one of the apps that needs it is being
installed by the current transaction. To cover these cases, check the
operations in the current transaction when building informational
messages about EOL runtimes.
2022-07-21 14:32:45 -05:00
Phaedrus Leeds
e739773056 app: List apps that use a runtime extension when it's EOL
Currently if a runtime extension, e.g.
org.freedesktop.Platform.html5-codecs//18.08 is used by a runtime
org.kde.Platform//5.12 which itself is used by one or more apps, when we
print a message to the user about html5-codecs being EOL, we don't find
any apps using it and don't print any. Fix this by including apps that
indirectly use a runtime extension in the "Applications using this
runtime:" list.

In a later commit we can re-use the helper function added here to add a
confirmation dialog if the user tries to remove a runtime extension
that's being used; currently we just let them remove it.

This is limited to only looking in the current flatpak installation, so
a per-user app using a system-wide runtime extension would not be found.

This is implemented using in-memory caches because otherwise it is
horribly slow; see
https://github.com/flatpak/flatpak/pull/4835#discussion_r876425289

Helps: #3531
2022-07-21 14:32:45 -05:00
Phaedrus Leeds
320889c1a2 app/flatpak-complete.c: Fix typo 2022-07-18 18:51:07 -05:00
Phaedrus Leeds
bf93e004e9 app: Fix inefficiency in pin and mask commands
There's no point reading data from disk on a code path that doesn't do
anything with it.
2022-07-18 18:51:07 -05:00
Fina Wilke
f4b038c8b1 Increase verbosity of extension missing error messages
Adds arch and branch to the error message to help with locating the required
extension arch and branch.
2022-07-17 15:36:21 -05:00
Alexander Larsson
1c9e65d5e4 Move all use of soup APIs into flatpak-utils-http
This will allow us to make the soup dependency optional.
2022-06-16 13:49:45 +02:00
Alexander Larsson
b1083a4c41 http utils: Make a generic FlatpakHttpSession instead of SoupSession
Its still just a SoupSession, but now the implementation is more
centralized and can be something else down the line.
2022-06-16 13:49:45 +02:00
Phaedrus Leeds
e9030fe2f6 update: Add newline before nothing to do message
This looks better in case there are warnings or info messages printed
during the update operation, since those are separated from each other
by newlines (at least the EOL ones).
2022-06-15 16:44:17 -07:00
Phaedrus Leeds
f8d24a9b1e app: Use bold app ID for permissions heading 2022-06-15 16:44:17 -07:00
Phaedrus Leeds
6a9a71b2de uninstall: Fix support for --noninteractive
Just copy the same way we set opt_yes in the install and update
commands.
2022-06-15 16:44:17 -07:00
Phaedrus Leeds
1f7ff92c51 app: Improve end-of-life info message
I think the "app//branch" syntax is pretty ugly, and maybe not all users
understand it.

Helps: #3531
2022-06-15 16:44:17 -07:00
Phaedrus Leeds
4869437880 app: Fix typo in debug message 2022-06-15 16:44:17 -07:00
Alexander Larsson
204abd772f main: Don't install polkit agent when running in tests, fixing slowness.
In the tests we don't use a systemwide helper anyway, so the polkit
stuff is unnecessary. Also, for some reason this was taking a very
long time for me, causing the tests to be super slow.
2022-06-13 20:02:04 +01:00
Debarshi Ray
ed3a1b5f45 build: Don't leak the destination prefix
Clearly, 'dest' can't be a 'const char *' when it's pointing at
g_strdup:ed strings.
2022-06-03 10:53:03 +02:00
Ryan Gonzalez
12305b2cae Add --include-sdk/debug to install SDK/debuginfo along with a ref
This makes it a lot easier to give guidance on using `flatpak run -d` or
`flatpak-coredumpctl`, because there's an easy way to install the
relevant refs.

Signed-off-by: Ryan Gonzalez <ryan.gonzalez@collabora.com>
2022-05-06 17:35:30 -07:00
Phaedrus Leeds
239706c9c1 uninstall: Make help message more accurate 2022-04-23 14:54:58 +01:00
Phaedrus Leeds
c7d262b375 app: Disable fuzzy matching if not on a tty
As discussed in #4848, this disables fuzzy matching entirely if stdin or
stdout is not a tty, meaning that something like "flatpak install
firefox" would be treated as incorrect syntax, since this syntax is
intended for interactive CLI use. Even before this commit, "flatpak
install firefox" would error out if run without a tty, since we don't
automatically choose a matching app ID even if there is only one match.
However "flatpak install -y firefox" could work before, but won't any
more. People should be specifying the full app ID in any context other
than a tty.

This commit also introduces a new env var so the unit tests can continue
to check the fuzzy matching behavior, despite them being run without a
tty.
2022-04-21 20:53:46 +01:00
Phaedrus Leeds
5acb4ee7e4 app: Disable fuzzy ref matching when id has a period
As discussed in #4848, this disables fuzzy matching when the string
given has a period in it. So for example "flatpak install org.mozilla"
would not offer "org.mozilla.firefox" even though the string given is a
substring of the app ID. This is desirable because it helps ensure fuzzy
matching is only used when the user intended to use it.

As with the previous commit that fixed #4829, this does technically
break backwards compatibility, but only in an interface intended for
interactive use by a human, not an interface that's used
programmatically, so it seems okay.
2022-04-21 20:53:46 +01:00
Phaedrus Leeds
23926b7090 app: Disable fuzzy ref matching when id has a slash
Fixes https://github.com/flatpak/flatpak/issues/4829
2022-04-21 20:53:46 +01:00
Phaedrus Leeds
9e6b28daf5 uninstall: Make error message prettier
The "*unspecified*" bits are ugly, and the ref/arch/branch syntax is
especially confusing when we're doing fuzzy matching, since it implies
the id was searched for exactly.
2022-04-19 15:38:44 +01:00
Phaedrus Leeds
a30ef8f007 uninstall: Error out when all refs are invalid
Currently if you specify one non-existent ref to the uninstall command,
it exits with a non-zero status:

$ flatpak uninstall notaflatpak
error: notaflatpak/*unspecified*/*unspecified* not installed

...but if you specify more than one non-existent ref you get warnings
for each and a zero exit status:

$ flatpak uninstall notaflatpak alsonot
Warning: notaflatpak is not installed
Warning: alsonot is not installed

So make the latter case error out like the former.
2022-04-19 15:38:44 +01:00
Simon McVittie
c68f31d86a build: Consistently include libglnx header as "libglnx.h"
Recent Meson versions have warnings if you add the subprojects
directory as an include path, because the way Meson wants to consume
subprojects is by the subproject's build system producing a Meson
dependency object that encapsulates its include directory. Flatpak
doesn't have a Meson build system yet, but I'm working on that.

libglnx seems to be set up to have the libglnx directory be its include
path instead: for example, ostree (by the author of libglnx) already
uses "libglnx.h" or <libglnx.h> everywhere. Do the same here.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-04-11 10:32:34 +02:00
Phaedrus Leeds
03f11864b9 Improve --sideload-repo option to take create-usb dirs
Currently, when using the sideloading support for offline updates, there
are two types of directories that are interesting: an ostree repo
directory on a directory that was passed to `flatpak create-usb`. By
default the latter has a repo at the subpath ".ostree/repo", and if a
custom destination was specified with "--destination-repo", a symlink is
created pointing to it in ".ostree/repos.d".

Currently Flatpak supports either repos or create-usb dirs in the
`sideload-repos` directory in either the Flatpak installation or
`/run/flatpak` (see flatpak(1)), but only supports repo directories
being passed to "--sideload-repo" for the install and update commands.

This is pretty confusing and actually made me think the sideload support
was broken because I forgot about this limitation. So change things so
we can accept either type of directory specified either way: via option
or via the "sideload-repos" directories.

I've tested all of the following cases:
- pointing to a repo with --sideload-repo
- pointing to a create-usb dir with --sideload-repo
- linking to a repo in ~/.local/share/flatpak/sideload-repos
- linking to a create-usb dir in ~/.local/share/flatpak/sideload-repos
- pulling from a sideload repo when online as a performance improvement
2022-04-11 10:31:13 +02:00
Phaedrus Leeds
759a525771 app: Don't overzealously tab complete options
If the user hasn't typed a '-', don't offer options in the tab
autocompletion. This is consistent with other linux commands, and less
messy.

Fixes https://github.com/flatpak/flatpak/issues/4753
2022-02-21 22:47:16 +00:00
Phaedrus Leeds
12ebf8fd9a Delete some unreachable ref-not-found code
flatpak_remote_state_lookup_ref() always sets the error to
FLATPAK_ERROR_REF_NOT_FOUND when it returns FALSE.

Found by coverity CID 1514265
2022-02-19 15:32:34 +00:00
Phaedrus Leeds
6dc067ca33 search: Improve memory efficiency 2022-02-17 08:29:20 -06:00
Phaedrus Leeds
af11e25975 search: Properly get branch values 2022-02-17 08:29:20 -06:00
Phaedrus Leeds
2af0c17297 search: Fix printing app ID with no .desktop suffix
In https://github.com/flatpak/flatpak/issues/4535 it was brough to light
that the search command strips the ".desktop" suffix from app IDs even
if they genuinely end in .desktop. This commit fixes the reverse issue
now that we've ported to libappstream: don't include the .desktop suffix
even if it's present in the id of the appstream component, which it
sometimes is.

Fortunately we already ignore any components that don't have flatpak
<bundle> elements, so we can unambiguously get the ID there.

Fixes #4535
2022-02-17 08:29:20 -06:00
Phaedrus Leeds
924d71d5d2 app: Check appstream file not found error code
Now that we switched from appstream-glib we don't need this hack.

See https://github.com/ximion/appstream/pull/362
2022-02-17 08:29:20 -06:00
Phaedrus Leeds
44117ee0cb Add macro for having appstream 0.14.0
Older versions of libappstream don't provide AS_CHECK_VERSION() so we
can't use that, and we need the check because as_component_get_branch()
is only in libappstream >= 0.14.0, and the return value of
as_metadata_parse_file() changed in 0.14.0
2022-02-17 08:29:20 -06:00
Philip Withnall
f027d49a79 app: Drop unnecessary wrappers
Since the port from libappstream-glib to libappstream, these wrappers
are trivially thin and can be dropped.

This commit introduces no functional changes.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-02-17 08:29:20 -06:00
Philip Withnall
9c059def69 app: Port to libappstream
libappstream-glib is mostly unmaintained, and libappstream is more
actively developed (and up to date with the AppStream specification).

Port from libappstream-glib to libappstream. Handily, a lot of the APIs
are exactly the same. The main changes are:
 * `AsApp` → `AsComponent`
 * `AsStore` → `AsMetadata`

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

(Mostly done by Philip, then Phaedrus finished this)
2022-02-17 08:29:20 -06:00
Phaedrus Leeds
fca2e5285f Revert "search: Don't strip .desktop suffix overzealously"
This reverts commit 62e09b406b.

This is implemented differently after the libappstream port.
2022-02-17 08:29:20 -06:00
Phaedrus Leeds
036542c28b Revert "search: Use <bundle> ID to determine flatpak app ID"
This reverts commit 39de0ef280.

This is implemented differently after the libappstream port.
2022-02-17 08:29:20 -06:00
Will Thompson
a62f8cfb62 build-init: Write .gitignore in build dir
It is common for the build directory to be within a Git checkout.
Developers never want to check this directory into Git.

Make 'flatpak build-init', and hence 'flatpak-builder', create a blanket
.gitignore file inside this directory, so the containing checkout
doesn't need to predict the name of the build directory and ignore it.

(Inspired by Meson's treatment of its build directory.)
2022-02-14 15:21:45 +00:00