flatpak-builder/doc/flatpak-build-finish.xml

418 lines
17 KiB
XML

<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<refentry id="flatpak-build-finish">
<refentryinfo>
<title>flatpak build-finish</title>
<productname>flatpak</productname>
<authorgroup>
<author>
<contrib>Developer</contrib>
<firstname>Alexander</firstname>
<surname>Larsson</surname>
<email>alexl@redhat.com</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta>
<refentrytitle>flatpak build-finish</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv>
<refname>flatpak-build-finish</refname>
<refpurpose>Finalize a build directory</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>flatpak build-finish</command>
<arg choice="opt" rep="repeat">OPTION</arg>
<arg choice="plain">DIRECTORY</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
Finalizes a build directory, to prepare it for exporting.
<arg choice="plain">DIRECTORY</arg> is the name of the directory.
</para>
<para>
The result of this command is that desktop files, icons and
D-Bus service files from the <filename>files</filename> subdirectory
are copied to a new <filename>export</filename> subdirectory. In the
<filename>metadata</filename> file, the command key is set in the
[Application] group, and the supported keys in the [Environment]
group are set according to the options.
</para>
<para>
You should review the exported files and the application metadata
before creating and distributing an application bundle.
</para>
<para>
It is an error to run build-finish on a directory that has not
been initialized as a build directory, or has already been finalized.
</para>
</refsect1>
<refsect1>
<title>Options</title>
<para>The following options are understood:</para>
<variablelist>
<varlistentry>
<term><option>-h</option></term>
<term><option>--help</option></term>
<listitem><para>
Show help options and exit.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--command=COMMAND</option></term>
<listitem><para>
The command to use. If this option is not specified,
the first executable found in <filename>files/bin</filename>
is used.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--require-version=MAJOR.MINOR.MICRO</option></term>
<listitem><para>
Require this version of later of flatpak to install/update to this build.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--share=SUBSYSTEM</option></term>
<listitem><para>
Share a subsystem with the host session. This updates
the [Context] group in the metadata.
SUBSYSTEM must be one of: network, ipc.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--unshare=SUBSYSTEM</option></term>
<listitem><para>
Don't share a subsystem with the host session. This updates
the [Context] group in the metadata.
SUBSYSTEM must be one of: network, ipc.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--socket=SOCKET</option></term>
<listitem><para>
Expose a well known socket to the application. This updates
the [Context] group in the metadata.
SOCKET must be one of: x11, wayland, pulseaudio, system-bus, session-bus.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--nosocket=SOCKET</option></term>
<listitem><para>
Don't expose a well known socket to the application. This updates
the [Context] group in the metadata.
SOCKET must be one of: x11, wayland, pulseaudio, system-bus, session-bus.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--device=DEVICE</option></term>
<listitem><para>
Expose a device to the application. This updates
the [Context] group in the metadata.
DEVICE must be one of: dri, kvm, all.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--nodevice=DEVICE</option></term>
<listitem><para>
Don't expose a device to the application. This updates
the [Context] group in the metadata.
DEVICE must be one of: dri, kvm, all.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--allow=FEATURE</option></term>
<listitem><para>
Allow access to a specific feature. This updates
the [Context] group in the metadata.
FEATURE must be one of: devel, multiarch.
This option can be used multiple times.
</para><para>
The <code>devel</code> feature allows the application to
access certain syscalls such as <code>ptrace()</code>, and
<code>perf_event_open()</code>.
</para><para>
The <code>multiarch</code> feature allows the application to
execute programs compiled for an ABI other than the one supported
natively by the system. For example, for the <code>x86_64</code>
architecture, 32-bit <code>x86</code> binaries will be allowed as
well.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--disallow=FEATURE</option></term>
<listitem><para>
Disallow access to a specific feature. This updates
the [Context] group in the metadata.
FEATURE must be one of: devel, multiarch.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--filesystem=FS</option></term>
<listitem><para>
Allow the application access to a subset of the filesystem.
This updates the [Context] group in the metadata.
FS can be one of: home, host, xdg-desktop, xdg-documents, xdg-download
xdg-music, xdg-pictures, xdg-public-share, xdg-templates, xdg-videos, xdg-run,
xdg-config, xdg-cache, xdg-data, an absolute path, or a homedir-relative
path like ~/dir or paths relative to the xdg dirs, like xdg-download/subdir.
The optional :ro suffix indicates that the location will be read-only.
The optional :create suffix indicates that the location will be read-write and created if it doesn't exist.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--nofilesystem=FILESYSTEM</option></term>
<listitem><para>
Remove access to the specified subset of the filesystem from
the application. This overrides to the Context section from the
application metadata.
FILESYSTEM can be one of: home, host, xdg-desktop, xdg-documents, xdg-download
xdg-music, xdg-pictures, xdg-public-share, xdg-templates, xdg-videos,
an absolute path, or a homedir-relative path like ~/dir.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--add-policy=SUBSYSTEM.KEY=VALUE</option></term>
<listitem><para>
Add generic policy option. For example, "--add-policy=subsystem.key=v1 --add-policy=subsystem.key=v2" would map to this metadata:
<programlisting>
[Policy subsystem]
key=v1;v2;
</programlisting>
</para></listitem>
<listitem><para>
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--remove-policy=SUBSYSTEM.KEY=VALUE</option></term>
<listitem><para>
Remove generic policy option. This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--env=VAR=VALUE</option></term>
<listitem><para>
Set an environment variable in the application.
This updates the [Environment] group in the metadata.
This overrides to the Context section from the application metadata.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--own-name=NAME</option></term>
<listitem><para>
Allow the application to own the well known name NAME on the session bus.
If NAME ends with .*, it allows the application to own all matching names.
This updates the [Session Bus Policy] group in the metadata.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--talk-name=NAME</option></term>
<listitem><para>
Allow the application to talk to the well known name NAME on the session bus.
If NAME ends with .*, it allows the application to talk to all matching names.
This updates the [Session Bus Policy] group in the metadata.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--system-own-name=NAME</option></term>
<listitem><para>
Allow the application to own the well known name NAME on the system bus.
If NAME ends with .*, it allows the application to own all matching names.
This updates the [System Bus Policy] group in the metadata.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--system-talk-name=NAME</option></term>
<listitem><para>
Allow the application to talk to the well known name NAME on the system bus.
If NAME ends with .*, it allows the application to talk to all matching names.
This updates the [System Bus Policy] group in the metadata.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--persist=FILENAME</option></term>
<listitem><para>
If the application doesn't have access to the real homedir, make the (homedir-relative) path
FILENAME a bind mount to the corresponding path in the per-application directory,
allowing that location to be used for persistent data.
This updates the [Context] group in the metadata.
This option can be used multiple times.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--runtime=RUNTIME</option></term>
<term><option>--sdk=SDK</option></term>
<listitem><para>
Change the runtime or sdk used by the app to the specified partial ref. Unspecified parts
of the ref are taken from the old values or defaults.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--metadata=GROUP=KEY[=VALUE]</option></term>
<listitem><para>
Set a generic key in the metadata file. If value is left out it will
be set to "true".
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--extension=NAME=VARIABLE[=VALUE]</option></term>
<listitem><para>
Add extension point info.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--extra-data=NAME:SHA256:DOWNLOAD-SIZE:INSTALL-SIZE:URL</option></term>
<listitem><para>
Adds information about extra data uris to the app. These will be downloaded
and verified by the client when the app is installed and placed in the
/app/extra directory. You can also supply an /app/bin/apply_extra script
that will be run after the files are downloaded.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--no-exports</option></term>
<listitem><para>
Don't look for exports in the build.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-v</option></term>
<term><option>--verbose</option></term>
<listitem><para>
Print debug information during command processing.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--ostree-verbose</option></term>
<listitem><para>
Print OSTree debug information during command processing.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--version</option></term>
<listitem><para>
Print version information and exit.
</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Examples</title>
<para>
<command>$ flatpak build-finish /build/my-app --socket=x11 --share=ipc</command>
</para>
<programlisting>
Exporting share/applications/gnome-calculator.desktop
Exporting share/dbus-1/services/org.gnome.Calculator.SearchProvider.service
More than one executable
Using gcalccmd as command
Please review the exported files and the metadata
</programlisting>
</refsect1>
<refsect1>
<title>See also</title>
<para>
<citerefentry><refentrytitle>flatpak</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>flatpak-build-init</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>flatpak-build</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>flatpak-build-export</refentrytitle><manvolnum>1</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>