Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/dotnet.rst
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ A few placeholders have been used in the steps below, while going through the st

id: <app-id>
runtime: org.freedesktop.Platform
runtime-version: '23.08'
runtime-version: '24.08'
sdk: org.freedesktop.Sdk
sdk-extensions:
- org.freedesktop.Sdk.Extension.dotnet8
Expand Down
4 changes: 2 additions & 2 deletions docs/electron.rst
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ ID. It also configures the runtime and SDK:

id: org.flathub.electron-sample-app
runtime: org.freedesktop.Platform
runtime-version: '23.08'
runtime-version: '24.08'
sdk: org.freedesktop.Sdk

The Freedesktop runtime is generally the best runtime to use with Electron
Expand All @@ -61,7 +61,7 @@ manifest:
.. code-block:: yaml

base: org.electronjs.Electron2.BaseApp
base-version: '23.08'
base-version: '24.08'

BaseApps are described in :doc:`dependencies`. Using the Electron base
app is much faster and more convenient than manually building Electron
Expand Down
122 changes: 83 additions & 39 deletions docs/extension.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ This is a typical example of an application extension point.

id: org.flatpak.app
runtime: org.gnome.Platform
runtime-version: '45'
runtime-version: '48'
sdk: org.gnome.Sdk
command: foo
add-extensions:
Expand Down Expand Up @@ -208,50 +208,80 @@ The extensions are mounted in alphabetical path order of directory.
by Flatpak builder like ``.Locale, .Debug`` also do not need to be
in application manifest.

``org.freedesktop.Platform.ffmpeg-full`` is an application extension
(mounted inside ``/app/extension_directory``) belonging to
``org.freedesktop.Platform``.
Finding Base Runtime Version
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Some extensions are either built as part of the runtimes or have their
extension points defined within them. These typically follow the branch
pattern of the runtime. In case of
``org.gnome.{Platform, Sdk}, org.kde.{Platform, Sdk}`` they follow the
branch pattern of Freedesktop SDK (``org.freedesktop.{Platform, Sdk}``).

When using such extensions, the extension version must match the base
runtime version. This ensures ABI and API compatibility.

For example, ``org.freedesktop.Platform.ffmpeg-full`` is built as part
of the Freedesktop SDK and provides versions
``22.08, 23.08, 24.08, ...``. Suppose the application uses the runtime
``org.kde.Platform//5.15-24.08``, which is based on Freedesktop SDK.

To find the base runtime version of ``org.kde.Platform//5.15-24.08``,
run::

flatpak remote-info flathub -m org.kde.Platform//5.15-24.08 | \
grep -A 5 -F '[Extension org.freedesktop.Platform.GL]'

The output will have ``versions=24.08;24.08-extra;1.4``, and thus the
base runtime version is of ````org.kde.Platform//5.15-24.08`` is
``24.08``.

Similarly, for ``org.freedesktop.Sdk.Extension.texlive``, the extension
point ``org.freedesktop.Sdk.Extension`` is defined in the Freedesktop
SDK. To determine the base runtime version for a derived runtime such as
``org.gnome.Platform//48``, run::

flatpak remote-info flathub -m org.gnome.Sdk//48 | \
grep -A 5 -F '[Extension org.freedesktop.Sdk.Extension]'

The output will have ``versions=24.08``, and thus ``24.08`` needs
to be used as ``version`` in ``add-extensions``.

Examples
^^^^^^^^^

.. code-block:: yaml

id: org.flatpak.cool-app
runtime: org.kde.Platform
runtime-version: '5.15-23.08'
runtime-version: '5.15-24.08'
sdk: org.kde.Sdk
command: foo
add-extensions:
org.freedesktop.Platform.ffmpeg-full:
version: '23.08'
version: '24.08' # replace by appropriate version
directory: lib/ffmpeg
add-ld-path: .
cleanup-commands:
- mkdir -p ${FLATPAK_DEST}/lib/ffmpeg

``org.freedesktop.Sdk.Extension`` is an extension point defined in
``org.freedesktop.Sdk``.

.. code-block:: yaml

id: org.flatpak.cool-app
runtime: org.freedesktop.Platform
runtime-version: '23.08'
runtime: org.gnome.Platform
runtime-version: '48'
sdk: org.freedesktop.Sdk
command: foo
add-extensions:
org.freedesktop.Sdk.Extension.texlive:
directory: texlive
version: '23.08'
version: '24.08' # replace by appropriate version
cleanup-commands:
- mkdir -p ${FLATPAK_DEST}/texlive

Note that ``Compat`` or ``GL32`` extensions need to specifically
requested. For providing runtime i386 support or for building i386
modules, please refer to :doc:`multiarch`.

There is currently no way to `request` autodownload of a runtime
extension from an application. The extension point in the runtime has
to be set to autodownload or the user has to manually install it.

A few related extension properties can be found in application or runtime
manifests. These are:

Expand All @@ -267,10 +297,10 @@ manifests. These are:

id: org.flatpak.cool-app
runtime: org.gnome.Platform
runtime-version: '45'
runtime-version: '48'
sdk: org.gnome.Sdk
base: org.winehq.Wine
base-version: stable-23.08
base-version: stable-24.08
inherit-extensions:
- org.freedesktop.Platform.GL32
- org.freedesktop.Platform.ffmpeg-full
Expand All @@ -291,22 +321,23 @@ manifests. These are:

id: org.flatpak.cool-app
runtime: org.freedesktop.Platform
runtime-version: '23.08'
runtime-version: '24.08'
sdk: org.freedesktop.Sdk
add-build-extensions:
- org.freedesktop.Sdk.Extension.openjdk11
command: foo

- ``sdk-extensions`` can be used to install extra extensions having
an extension point in the parent runtime that has to be installed for the
app to build. These are similarly made available during build and
not in the final flatpak.
an extension point in the parent runtime that has to be installed for
the app to build. These are similarly made available during build and
not in the final flatpak. These always follow the branch pattern
of the base runtime (see above).

.. code-block:: yaml

id: org.flatpak.cool-app
runtime: org.freedesktop.Platform
runtime-version: '23.08'
runtime-version: '24.08'
sdk: org.freedesktop.Sdk
sdk-extensions:
- org.freedesktop.Sdk.Extension.golang
Expand Down Expand Up @@ -348,7 +379,7 @@ is discussed below.
branch: '1.0'
runtime: org.flatpak.app
runtime-version: 'stable'
sdk: org.gnome.Sdk//45
sdk: org.gnome.Sdk//48
build-extension: true
separate-locales: false
build-options:
Expand Down Expand Up @@ -441,7 +472,7 @@ exported into that extension.

id: org.flatpak.cool-app
runtime: org.kde.Platform
runtime-version: '6.7'
runtime-version: '6.9'
sdk: org.kde.Sdk
command: foo
add-extensions:
Expand Down Expand Up @@ -545,25 +576,25 @@ These are common to the Freedesktop SDK and runtime:
has two branches ``${RUNTIME_VERSION}`` and
``${RUNTIME_VERSION}-extra``, the latter containing support for
patented codecs.

``org.freedesktop.Platform.GL.Debug`` – Debug extension point for
``org.freedesktop.Platform.GL``, managed by the runtime but the user needs
to explicitly install ``org.freedesktop.Platform.GL.Debug.default//${RUNTIME_VERSION}``
and ``org.freedesktop.Platform.GL.Debug.default//${RUNTIME_VERSION}-extra``
to have the debug symbols available.

The following extensions utilise the above two extension points::

org.freedesktop.Platform.GL.default//${RUNTIME_VERSION}
org.freedesktop.Platform.GL.default//${RUNTIME_VERSION}-extra
org.freedesktop.Platform.GL.Debug.default//${RUNTIME_VERSION}
org.freedesktop.Platform.GL.Debug.default//${RUNTIME_VERSION}-extra

org.freedesktop.Platform.GL32.default//${RUNTIME_VERSION}
org.freedesktop.Platform.GL32.default//${RUNTIME_VERSION}-extra
org.freedesktop.Platform.GL32.Debug.default//${RUNTIME_VERSION}
org.freedesktop.Platform.GL32.Debug.default//${RUNTIME_VERSION}-extra

org.freedesktop.Platform.GL.nvidia-${DRIVER_VERSION}
org.freedesktop.Platform.GL32.nvidia-${DRIVER_VERSION}

Expand All @@ -583,18 +614,31 @@ These are common to the Freedesktop SDK and runtime:
provide extensions using this extension point.
- ``org.freedesktop.Platform.VAAPI.Intel`` – Extension providing Intel
VAAPI media drivers. This is automatically installed if the user
has an Intel GPU.

This has a compat i386 extension ``org.freedesktop.Platform.VAAPI.Intel.i386``.

has an Intel GPU. This has a compat i386 extension
``org.freedesktop.Platform.VAAPI.Intel.i386``.
- ``org.freedesktop.Platform.VAAPI.nvidia`` – Extension providing Nvidia
VAAPI media drivers. This is automatically installed if the user
has an Nvidia GPU. This has a compat i386 extension
``org.freedesktop.Platform.VAAPI.nvidia.i386``.
- ``org.freedesktop.Platform.openh264`` – Extension providing OpenH264,
automatically installed by the runtime.
- ``org.freedesktop.Platform.ffmpeg`` – Extension providing ffmpeg with
support for patented codecs. This needs to explicitly added to the
automatically installed by the runtime. (This is discontinued since
Freedesktop SDK 25.08)
- ``org.freedesktop.Platform.ffmpeg-full`` – Extension providing ffmpeg
with support for patented codecs. This needs to explicitly added to the
manifest using ``add-extensions`` by the developer, so that it becomes
available when the user installs it.

This has a compat i386 extension ``org.freedesktop.Platform.ffmpeg_full.i386``.
available when the user installs it.This has a compat i386 extension
``org.freedesktop.Platform.ffmpeg_full.i386``. (This is discontinued
since Freedesktop SDK 25.08)
- ``org.freedesktop.Platform.codecs-extra`` – This is the successor
to ``org.freedesktop.Platform.ffmpeg-full`` available since
Freedesktop SDK 25.08. This is a runtime extension and it will be
automatically installed by the runtime when installing an app. This
has a compat i386 extension
``org.freedesktop.Platform.codecs_extra.i386``. The branch is set to
``$freedesktop-sdk-version-extra`` i.e. ``25.08-extra, 26.08-extra``
and so on. Users and distributors who want to block or not use
patented codecs can use ``flatpak mask`` to mask this extension or
the ``-extra`` branch pattern.

These are only in Freedesktop SDK:

Expand Down
2 changes: 1 addition & 1 deletion docs/manifests.rst
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ For example, the GNOME Dictionary manifest includes:

id: org.gnome.Dictionary
runtime: org.gnome.Platform
runtime-version: '45'
runtime-version: '48'
sdk: org.gnome.Sdk
command: gnome-dictionary

Expand Down
8 changes: 4 additions & 4 deletions docs/multiarch.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ app, define an extension point for it in the app manifest:
add-extensions:
org.freedesktop.Platform.Compat.i386:
directory: lib/i386-linux-gnu
version: '23.08'
version: '24.08'

# This is not strictly required, but needed for debugging 32-bit programs
org.freedesktop.Platform.Compat.i386.Debug:
directory: lib/debug/lib/i386-linux-gnu
version: '23.08'
version: '24.08'
no-autodownload: true

For GNOME runtime, use ``org.gnome.Platform.Compat.i386`` instead.
Expand All @@ -48,11 +48,11 @@ in general, you'll also need 32-bit GL drivers. Add an extension point for it:
.. code-block:: yaml

runtime: org.freedesktop.Platform
runtime-version: &runtime-version '23.08'
runtime-version: &runtime-version '24.08'
# Synced from Freedesktop runtime
# https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/blob/ed97d222b21d0a8744779ce6e5e8af5b032bfee1/elements/flatpak-images/include/platform-vars.yml#L2
x-gl-version: &gl-version '1.4'
x-gl-versions: &gl-versions 23.08;1.4
x-gl-versions: &gl-versions 24.08;1.4
x-gl-merge-dirs: &gl-merge-dirs vulkan/icd.d;glvnd/egl_vendor.d;egl/egl_external_platform.d;OpenCL/vendors;lib/dri;lib/d3d;lib/gbm;vulkan/explicit_layer.d;vulkan/implicit_layer.d

org.freedesktop.Platform.GL32:
Expand Down
2 changes: 1 addition & 1 deletion docs/qt.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ straight-forward.

id: org.flatpak.qtdemo
runtime: org.kde.Platform
runtime-version: '5.15-22.08'
runtime-version: '5.15-24.08'
sdk: org.kde.Sdk
command: flatpak-demo
finish-args:
Expand Down
10 changes: 8 additions & 2 deletions po/de/LC_MESSAGES/conventions.po
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Flatpak\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-30 14:59+0530\n"
"POT-Creation-Date: 2025-07-21 08:07+0530\n"
"PO-Revision-Date: 2019-06-26 05:18-0400\n"
"Last-Translator: Markus Richter <[email protected]>\n"
"Language: de\n"
Expand Down Expand Up @@ -498,7 +498,7 @@ msgstr ""
#: ../../conventions.rst:368
msgid ""
"Qt: XDG base directories can be accessed with the `QStandardPaths Class "
"<https://doc.qt.io/qt-5/qstandardpaths.html>`_."
"<https://doc.qt.io/archives/qt-5.15/qstandardpaths.html>`_."
msgstr ""

#: ../../conventions.rst:371
Expand Down Expand Up @@ -1135,3 +1135,9 @@ msgstr ""
#~ " locations (see :doc:`sandbox-permissions`)."
#~ msgstr ""

#~ msgid ""
#~ "Qt: XDG base directories can be "
#~ "accessed with the `QStandardPaths Class "
#~ "<https://doc.qt.io/qt-5/qstandardpaths.html>`_."
#~ msgstr ""

Loading