8077 Commits

Author SHA1 Message Date
Georges Basile Stavracas Neto
1440f4faa6 Update translation files for 1.16.0 1.16.0 2025-01-09 18:28:29 +01:00
Georges Basile Stavracas Neto
8abdf5d187 Update NEWS for 1.16.0 2025-01-09 18:28:29 +01:00
Simon McVittie
424400edc6 flatpak(1): Expand description of FLATPAK_TTY_PROGRESS
Signed-off-by: Simon McVittie <smcv@collabora.com>
2025-01-09 17:33:54 +01:00
Georges Basile Stavracas Neto
4febfb5973 flatpak: Disable progress escape sequence by default
And add the FLATPAK_TTY_PROGRESS env var to re-enable it.

This seems to only be supported by recent versions of terminal emulators
which will cause problems with shipping Flatpak on older distros.

Closes https://github.com/flatpak/flatpak/issues/6052
2025-01-09 17:22:19 +01:00
Will Thompson
2eb4819240 Fix "end of line" typo in internal #defines
The ostree and Flatpak APIs both refer to "end of life", but
this internal #define (though not the data stored in the cache)
refer to "end of line".

Fix this.
2025-01-09 17:00:07 +01:00
Hubert Figuière
6b1bb87a29 gir: Fix closure annotations
This is a new warning. Reproducible on F41
Fixes:

../common/flatpak-installation.c:1963: Warning: Flatpak: invalid closure annotation: only valid on callback parameters
../common/flatpak-installation.c:1858: Warning: Flatpak: invalid closure annotation: only valid on callback parameters
../common/flatpak-installation.c:2129: Warning: Flatpak: invalid closure annotation: only valid on callback parameters
../common/flatpak-installation.c:2014: Warning: Flatpak: invalid closure annotation: only valid on callback parameters
../common/flatpak-installation.c:1732: Warning: Flatpak: invalid closure annotation: only valid on callback parameters
../common/flatpak-installation.c:2177: Warning: Flatpak: invalid closure annotation: only valid on callback parameters
../common/flatpak-installation.c:2220: Warning: Flatpak: invalid closure annotation: only valid on callback parameters
../common/flatpak-installation.c:2608: Warning: Flatpak: invalid closure annotation: only valid on callback parameters

Signed-off-by: Hubert Figuière <hub@figuiere.net>
2025-01-09 16:59:40 +01:00
Simon McVittie
5250be9502 doc: Document $FLATPAK_FANCY_OUTPUT
Signed-off-by: Simon McVittie <smcv@collabora.com>
2025-01-09 16:44:19 +01:00
Simon McVittie
8a6f98e283 Update NEWS
Signed-off-by: Simon McVittie <smcv@collabora.com>
2025-01-09 15:26:26 +00:00
Simon McVittie
8882a7f0a8 Merge pull request #6043 from smcv/libglnx-2024-12-06
Update subtree: libglnx 2024-12-06
2025-01-02 14:47:30 +00:00
Simon McVittie
5f1938437a Update subtree: libglnx 2024-12-06
* Fix an assertion failure attempting to create a directory that exists
  as a dangling symlink[1]
* Fix a Meson deprecation warning[2]

[1] https://gitlab.gnome.org/GNOME/libglnx/-/issues/1
[2] https://gitlab.gnome.org/GNOME/libglnx/-/merge_requests/60

Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-12-22 12:43:53 +00:00
Georges Basile Stavracas Neto
7a6c98c563 Post-release version bump 2024-12-20 10:44:19 -03:00
Georges Basile Stavracas Neto
18bb8a5f23 Update translation files for 1.15.91 1.15.91 2024-12-20 14:27:36 +01:00
Georges Basile Stavracas Neto
07d062b4a6 Update NEWS for 1.15.91 2024-12-20 14:27:36 +01:00
Georges Basile Stavracas Neto
f8da8d0360 Change release version to 1.15.91
As suggested by Simon.

This will be the first release (and hopefully last) release candidate
for Flatpak 1.16.0.
2024-12-20 14:27:36 +01:00
Owen W. Taylor
35995290f5 Add a FLATPAK_DOWNLOAD_TMPDIR variable
Instead of hardcoding /var/tmp when temporarily downloading layer
tarballs, support overriding with a FLATPAK_DOWNLOAD_TMPDIR
environment variable.

We don't use TMPDIR because the layer tarballs can be very big
(in extreme cases like an SDK > 1GB), and TMPDIR is more
likely to point to a in-memory tmpfs.
2024-12-18 16:35:46 +00:00
Owen W. Taylor
73dd78f775 Add FLATPAK_DATA_DIR environment variable
Now that we read remotes from $datadir/flatpaks/remotes.d as well as
/etc/flatpaks/remotes.d, we should have a mechanism to redirect this, as
we do for almost all other filesystem path locations.

To avoid an explosion of new variables, we introduce FLATPAK_DATA_DIR to
represent configuration that ships with the operating system.

This is useful:
 - To fix sandboxing of tests
 - When installing using flatpak into a chroot, so that we read
   the chroot's configuration rather than the host.

It also is used when reading triggers, but the current
FLATPAK_TRIGGERSDIR is left for compatibility.

Co-authored-by: Sebastian Wick <sebastian.wick@redhat.com>
2024-12-18 16:32:02 +00:00
Christian Hergert
a1bfc19d49 flatpak: emit progress escape sequence
Following on systemd adopting the progress OSC that ConEmu and Windows
Terminal use, this exports the progress percentage to the terminal
emulator.

VTE also has support for this in the upcoming 0.80 release and is used
by Ptyxis to display progress in the tab widget.
2024-12-15 02:39:23 +01:00
Simon McVittie
6b1b2cc804 wayland: Handle WAYLAND_SOCKET, even when using security-context-v1
As described in #5614, `WAYLAND_SOCKET` provides a single-use socket
as a file descriptor, which some Wayland compositors use to track
special-purpose Wayland clients like input methods and panels.
Since #5615, there are two cases for how it works:

1. With `--nosocket=inherit-wayland-socket` (default): the file
   descriptor is marked close-on-exec so that the sandboxed app does
   not inherit it, and the `WAYLAND_SOCKET` environment variable
   becomes unset. Every time the sandboxed app connects to Wayland,
   because `WAYLAND_SOCKET` is unset, it will fall back to the ordinary,
   public `WAYLAND_DISPLAY`.

2. With `--socket=inherit-wayland-socket`: the file descriptor is
   allowed to be inherited, and the environment variable continues
   to be set. The first time the sandboxed app connects to Wayland,
   it will connect to the `WAYLAND_SOCKET`. The second and subsequent
   connection attempts will be to the ordinary `WAYLAND_DISPLAY`.

However, when #4920 added a code path for the Wayland security-context-v1
interface, it was implemented as a completely separate code path which
early-returned from flatpak_run_add_wayland_args() before the point
where #5615 subsequently added the implementation for (1.). The practical
result of this is that if the compositor sets `WAYLAND_SOCKET` for
a Flatpak app, and it also happens to implement security-context-v1,
then the application will always inherit the `WAYLAND_SOCKET` as though
`--socket=inherit-wayland-socket` had been used. In this case, the app's
first connection to Wayland will use the `WAYLAND_SOCKET` (bypassing
the security context mechanism), the same as in compositors that do not
implement security-context-v1 at all, and only the second and subsequent
connections will use the special per-app `WAYLAND_DISPLAY` created by the
security context mechanism. This seems likely to be unexpected.

To give maintainers and users a choice between behaviours (1.) and (2.),
we can put the security-context-v1 code path through the same code to
handle `WAYLAND_SOCKET` that is used for Wayland compositors that do not
implement that interface. This means that
`--nosocket=inherit-wayland-socket` disables `WAYLAND_SOCKET` in all
cases: if the compositor supports security-context-v1 and the feature
was also available when Flatpak was compiled, then all of the sandboxed
app's Wayland connections will be to the per-app `WAYLAND_DISPLAY`
created by security-context-v1, and otherwise all of the sandboxed app's
Wayland connections will be to the ordinary, public `WAYLAND_DISPLAY`.

With `--socket=inherit-wayland-socket`, the sandboxed app's
first connection to Wayland will continue to be to the inherited
`WAYLAND_SOCKET` fd, and the second and subsequent connections will
be to the `WAYLAND_DISPLAY`, which might either be the special per-app
version created by security-context-v1, or the ordinary public version.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-12-15 02:14:22 +01:00
Simon McVittie
5d235764c0 wayland: Only have one code path to bind-mount WAYLAND_DISPLAY into sandbox
In the older code path where we were not using Wayland security contexts,
we would try to preserve the name of the Wayland display socket
(`$WAYLAND_DISPLAY`), only falling back to `wayland-0` if the name was
something unconventional (contains `/` or does not start with `wayland-`).
This means that in practice, apps could often successfully use a value
of `$WAYLAND_DISPLAY` from the wrong "world" - for example reading the
value used outside the sandbox from a file in code that runs inside the
sandbox, or conversely, passing the value used inside the sandbox via
IPC to a service like gpg-agent outside the sandbox.

However, the implementation in
flatpak_run_add_wayland_security_context_args() did not do this, and
instead would unconditionally use `wayland-0`. There's no real need to
enforce use of that name.

Apps should not really be passing the string value of `WAYLAND_DISPLAY`
across a sandbox boundary, but in practice some do, and we will get
better interoperability if we try to keep that working in at least the
simple cases. This is similar in spirit to how we have handled X11
since 2022 (flatpak/flatpak#5034).

For now, we skip the last few lines of flatpak_run_add_wayland_args() if
we are using Wayland security contexts, to preserve existing
functionality. A subsequent commit will revisit that.

Resolves: https://github.com/flatpak/flatpak/issues/5863
Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-12-15 02:14:22 +01:00
Simon McVittie
0edc8c4159 wayland: Avoid some duplication when getting the Wayland display name
There's no need to have the logic for falling back to `wayland-0` in more
than one place.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-12-15 02:14:22 +01:00
Will Thompson
5544bfdd82 Merge branch 'wip/smcv/issue1' into 'master'
glnx-shutil: Cope with ENOENT even after recursing to create parents

Closes #1

See merge request GNOME/libglnx!62
2024-12-06 13:57:01 +00:00
Simon McVittie
e6151ffbc0 Add a test for glnx_shutil_mkdir_p_at with an unusable parent
This is a slight generalization of the reproducer contributed by Will
Thompson: as well as exercising the case where the parent is a dangling
symlink (reproducing GNOME/libglnx#1), this also exercises the case where
the parent is a non-directory non-symlink (in this case a regular file).

Reproduces: GNOME/libglnx#1
Co-authored-by: Will Thompson <wjt@endlessos.org>
Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-12-06 13:29:50 +00:00
Simon McVittie
2eb4bcc282 glnx-shutil: Cope with ENOENT even after recursing to create parents
If we try to create `link/content` where `link` is a dangling symlink,
recursing to create `link` will succeed (mkdirat fails with EEXIST,
which is explicitly ignored), but then mkdirat for `link/content` will
still fail. Fail gracefully instead of crashing out with an assertion
failure.

Resolves: GNOME/libglnx#1
Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-12-06 13:29:50 +00:00
Simon McVittie
f44d944233 tests: Run each shutil test in a temporary directory
Otherwise it could potentially race with tests in other executables that
also want to create `./test`, or interfere with other test-cases in the
same executable that expect `./test` to be nonexistent or empty.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-12-06 13:29:50 +00:00
Will Thompson
b345955140 Merge branch 'wip/smcv/meson-bool' into 'master'
build: Use a boolean default for a boolean option, rather than a string

See merge request GNOME/libglnx!60
2024-12-05 11:39:21 +00:00
Simon McVittie
f92968a8d2 build: Use a boolean default for a boolean option, rather than a string
Meson 1.1.0 officially deprecates string defaults for boolean options,
but boolean defaults worked in many older Meson versions, going back to
at least 0.49.x.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-12-05 11:35:45 +00:00
Simon McVittie
51d01f810e Belatedly add more release notes for 1.15.11
Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-11-28 19:14:52 +00:00
Anders Jonsson
deea87f056 context: Use plural form in string 2024-11-28 17:16:41 +00:00
Simon McVittie
4025a96213 tests: Install missing test data
Without this, "as-installed" tests via `ginsttest-runner` will fail,
for example in Debian's autopkgtest framework.

Fixes: 1d56bd37 "context: Implement device lists for usb"
Signed-off-by: Simon McVittie <smcv@debian.org>
2024-11-28 16:52:36 +00:00
Simon McVittie
99a8b88a1a Post-release version bump
Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-11-28 16:24:14 +00:00
Simon McVittie
c7ae1cc18c release-checklist: Match the last few releases
The release checklist claimed we used titles like `Release 1.15.12`,
but in practice they've all been like `1.15.12` for a long time.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-11-28 16:23:25 +00:00
Simon McVittie
3081395d5b Update po/ for release
Signed-off-by: Simon McVittie <smcv@collabora.com>
1.15.12
2024-11-28 15:03:31 +00:00
Simon McVittie
686a89b6fe Prepare v1.15.12
Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-11-28 15:00:25 +00:00
Simon McVittie
31cb8d72a9 Revert "run: Use the instance id in the cgroup name"
apply_extra_data() passes a null instance ID to
flatpak_run_add_environment_args(), causing a segfault in
flatpak_run_in_transient_unit() which assumes the instance ID is non-null.
Revert this for now: flatpak#5962 was non-essential, and we can redo it
in a less crashy way later.

This reverts commit 7d6f3e8b6b.

Resolves: https://github.com/flatpak/flatpak/issues/6009
Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-11-28 14:49:51 +00:00
Georges Basile Stavracas Neto
a625aaa006 doc: Use post-release bumps in the checklist
As per suggestion in the Flatpak channel. This makes such
that the version built is always the version that will be
released.
2024-11-27 13:51:55 +01:00
Georges Basile Stavracas Neto
79b3372806 Post-release version bump to 1.15.12 2024-11-27 13:51:55 +01:00
Georges Basile Stavracas Neto
ae1c525311 Update translation files for 1.15.11 1.15.11 2024-11-26 16:09:08 +01:00
Georges Basile Stavracas Neto
9169a42ce1 NEWS, meson: Update for version 1.15.11 2024-11-26 16:09:08 +01:00
Georges Basile Stavracas Neto
51fec95f7d Update NEWS 2024-11-26 16:09:08 +01:00
Simon McVittie
b730771bd7 subprojects: Update bubblewrap to v0.11.0
<https://github.com/containers/bubblewrap/releases/tag/v0.11.0>

We don't use any of the new features yet, so the minimum required
version in the build system is still 0.10.0.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-10-31 10:03:52 -05:00
lumingzh
6bc8b6ade7 fix a translate string 2024-10-30 09:20:24 -03:00
lumingzh
61207666e8 update Chinese translation 2024-10-30 09:20:24 -03:00
Hubert Figuière
fd1b7e4440 po: Update POTFILES.in for usb
Signed-off-by: Hubert Figuière <hub@figuiere.net>
2024-10-25 10:36:50 -05:00
Maximiliano Sandoval
dc2ce2cb0b app: Check for component name when searching
We add the component name as part of the fallback search.

Before this patch, queries as

    flatpak search Element

or

    flatpak search d-spy

return no results even though the search term coincides with the
application name.
2024-10-17 18:20:07 -05:00
lumingzh
bb5c419290 update Chinese translation 2024-10-17 08:18:07 -03:00
Hubert Figuière
1beff8e577 flatpak-cli-transaction: show the USB portal permissions
Signed-off-by: Hubert Figuière <hub@figuiere.net>
2024-10-16 14:11:56 -03:00
Hubert Figuière
cced00fdb0 usb: Added tool examples to generate device lists
Signed-off-by: Hubert Figuière <hub@figuiere.net>
2024-10-16 14:11:56 -03:00
Hubert Figuière
1d56bd377e context: Implement device lists for usb
Signed-off-by: Hubert Figuière <hub@figuiere.net>
2024-10-16 14:11:56 -03:00
Hubert Figuière
19b447f49a flatpak: Add USB enumerables / hidden lists
Add '--usb' and '--nousb' to the FlatpakContext option group.

Map these parameters to either the enumarable list, or the hidden
list, of a new "USB Devices" group in the metadata key file. It looks
like this:

```
[USB Devices]
hidden-devices=cls:01:*;
enumerable-devices=vnd:0fd9+dev:0080;vnd:0fd9+dev:0080;
```

Flatpak itself does not use these values, they're meant to be used
by e.g. XDG Desktop Portal to filter which devices the app can see
through the USB portal.

Hidden devices must always take precedence over enumerable devices.

This is heavily inspired by https://github.com/flatpak/flatpak/pull/4083

Co-Authored-By: Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
Co-Authored-By: Ryan Gonzalez <rymg19@gmail.com>
Signed-off-by: Hubert Figuière <hub@figuiere.net>
2024-10-16 14:11:56 -03:00
Sebastian Wick
7d6f3e8b6b run: Use the instance id in the cgroup name
The systemd Desktop Environments conventions for cgroup names is

  app[-<launcher>]-<ApplicationID>[@<RANDOM>].service

where RANDOM should ensure that multiple instances of the application
can be launched. Currently flatpak uses the PID of itself but the
instance fullfills this convention and is a bit more useful for matching
the cgroup to a flatpak instance.
2024-10-15 13:54:04 +01:00