NAME
flatpak-build - Build in a directory SYNOPSIS flatpak build [OPTION...] DIRECTORY [COMMAND [ARG...]] DESCRIPTION Runs a build command in a directory. DIRECTORY must have been
initialized with flatpak build-init. The sdk that is specified in the metadata file in the directory is mounted at /usr and the files and var subdirectories are mounted at /app and /var, respectively. They are writable, and their contents are preserved between build commands, to allow accumulating build artifacts there. OPTIONS The following options are understood:
-h, help Show help options and exit.
-v, verbose Print debug information during command processing.
ostree-verbose Print OSTree debug information during command processing.
-r, runtime
Use the non-devel runtime that is specified in the application metadata instead of the devel runtime.
-p, die-with-parent Kill the build process and all children when the launching process dies.
bind-mount=DEST=SOURCE Add a custom bind mount in the build namespace. Can be specified multiple times.
build-dir=PATH Start the build in this directory (default is in the current directory). share=SUBSYSTEM Share a subsystem with the host session. This overrides the Context section from the application metadata. SUBSYSTEM must be one of: network, ipc. This option can be used multiple times. unshare=SUBSYSTEM Don't share a subsystem with the host session. This overrides the Context section from the application metadata. SUBSYSTEM must be one of: network, ipc. This option can be used multiple times. socket=SOCKET
Expose a well-known socket to the application. This overrides to the Context section from the application metadata. SOCKET must be
one of: x11, wayland, fallback-x11, pulseaudio, system-bus,
session-bus, ssh-auth. This option can be used multiple times. nosocket=SOCKET
Don't expose a well-known socket to the application. This overrides to the Context section from the application metadata. SOCKET must
be one of: x11, wayland, fallback-x11, pulseaudio, system-bus,
session-bus, ssh-auth. This option can be used multiple times. device=DEVICE Expose a device to the application. This overrides to the Context section from the application metadata. DEVICE must be one of: dri, kvm, all. This option can be used multiple times. nodevice=DEVICE Don't expose a device to the application. This overrides to the Context section from the application metadata. DEVICE must be one of: dri, kvm, all. This option can be used multiple times. allow=FEATURE Allow access to a specific feature. This updates the [Context] group in the metadata. FEATURE must be one of: devel, multiarch, bluetooth. This option can be used multiple times.
See flatpak-build-finish(1) for the meaning of the various features. disallow=FEATURE Disallow access to a specific feature. This updates the [Context] group in the metadata. FEATURE must be one of: devel, multiarch, bluetooth. This option can be used multiple times. filesystem=FILESYSTEM[:ro|:create] Allow the application access to a subset of the filesystem. 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, 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. nofilesystem=FILESYSTEM 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.
with-appdir
Expose and configure access to the per-app storage directory in
$HOME/.var/app. This is not normally useful when building, but helps when testing built apps.
add-policy=SUBSYSTEM.KEY=VALUE Add generic policy option. For example,
"add-policy=subsystem.key=v1 add-policy=subsystem.key=v2" would map to this metadata: [Policy subsystem] key=v1;v2; This option can be used multiple times.
remove-policy=SUBSYSTEM.KEY=VALUE Remove generic policy option. This option can be used multiple times. env=VAR=VALUE Set an environment variable in the application. This overrides to the Context section from the application metadata. This option can be used multiple times.
own-name=NAME
Allow the application to own the well-known name NAME on the session bus. This overrides to the Context section from the application metadata. This option can be used multiple times.
talk-name=NAME
Allow the application to talk to the well-known name NAME on the session bus. This overrides to the Context section from the application metadata. This option can be used multiple times.
system-own-name=NAME
Allow the application to own the well-known name NAME on the system bus. This overrides to the Context section from the application metadata. This option can be used multiple times.
system-talk-name=NAME
Allow the application to talk to the well-known name NAME on the system bus. This overrides to the Context section from the application metadata. This option can be used multiple times. persist=FILENAME 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 overrides to the Context section from the application metadata. This option can be used multiple times.
sdk-dir=DIR Normally if there is a usr directory in the build dir, this is used
for the runtime files (this can be created by writable-sdk or
type=runtime arguments to build-init). If you specify sdk-dir this directoryname will be used instead. Use this if you passed
sdk-dir to build-init. readonly
Mount the normally writable destination directories read-only. This can be useful if you want to run something in the sandbox but guarantee that it doesn't affect the build results. For example tests. metadata=FILE Use the specified filename as metadata in the exported app instead of the default file (called metadata). This is useful if you build multiple things from a single build tree (such as both a platform and a sdk).
log-session-bus Log session bus traffic. This can be useful to see what access you
need to allow in your D-Bus policy.
log-system-bus Log system bus traffic. This can be useful to see what access you
need to allow in your D-Bus policy. EXAMPLES
$ flatpak build /build/my-app rpmbuild my-app.src.rpm SEE ALSO
flatpak(1), flatpak-build-init(1), flatpak-build-finish(1), flatpak-
build-export(1) flatpak FLATPAK BUILD(1)