'\" t
.\"     Title: flatpak build
.\"    Author: Alexander Larsson <alexl@redhat.com>
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/30/2023
.\"    Manual: flatpak build
.\"    Source: flatpak
.\"  Language: English
.\"
.TH "FLATPAK BUILD" "1" "" "flatpak" "flatpak build"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
flatpak-build \- Build in a directory
.SH "SYNOPSIS"
.HP \w'\fBflatpak\ build\fR\ 'u
\fBflatpak build\fR [OPTION...] DIRECTORY [COMMAND\ [ARG...]]
.SH "DESCRIPTION"
.PP
Runs a build command in a directory\&.
DIRECTORY
must have been initialized with
\fBflatpak build\-init\fR\&.
.PP
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\&.
.SH "OPTIONS"
.PP
The following options are understood:
.PP
\fB\-h\fR, \fB\-\-help\fR
.RS 4
Show help options and exit\&.
.RE
.PP
\fB\-v\fR, \fB\-\-verbose\fR
.RS 4
Print debug information during command processing\&.
.RE
.PP
\fB\-\-ostree\-verbose\fR
.RS 4
Print OSTree debug information during command processing\&.
.RE
.PP
\fB\-r\fR, \fB\-\-runtime\fR
.RS 4
Use the non\-devel runtime that is specified in the application metadata instead of the devel runtime\&.
.RE
.PP
\fB\-p\fR, \fB\-\-die\-with\-parent\fR
.RS 4
Kill the build process and all children when the launching process dies\&.
.RE
.PP
\fB\-\-bind\-mount=DEST=SOURCE\fR
.RS 4
Add a custom bind mount in the build namespace\&. Can be specified multiple times\&.
.RE
.PP
\fB\-\-build\-dir=PATH\fR
.RS 4
Start the build in this directory (default is in the current directory)\&.
.RE
.PP
\fB\-\-share=SUBSYSTEM\fR
.RS 4
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\&.
.RE
.PP
\fB\-\-unshare=SUBSYSTEM\fR
.RS 4
Don\*(Aqt 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\&.
.RE
.PP
\fB\-\-socket=SOCKET\fR
.RS 4
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, pcsc, cups, gpg\-agent\&. This option can be used multiple times\&.
.RE
.PP
\fB\-\-nosocket=SOCKET\fR
.RS 4
Don\*(Aqt 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, pcsc, cups, gpg\-agent\&. This option can be used multiple times\&.
.RE
.PP
\fB\-\-device=DEVICE\fR
.RS 4
Expose a device to the application\&. This overrides to the Context section from the application metadata\&.
DEVICE
must be one of: dri, kvm, shm, all\&. This option can be used multiple times\&.
.RE
.PP
\fB\-\-nodevice=DEVICE\fR
.RS 4
Don\*(Aqt expose a device to the application\&. This overrides to the Context section from the application metadata\&.
DEVICE
must be one of: dri, kvm, shm, all\&. This option can be used multiple times\&.
.RE
.PP
\fB\-\-allow=FEATURE\fR
.RS 4
Allow access to a specific feature\&. This updates the [Context] group in the metadata\&.
FEATURE
must be one of: devel, multiarch, bluetooth, canbus, per\-app\-dev\-shm\&. This option can be used multiple times\&.
.sp
See
\fBflatpak-build-finish\fR(1)
for the meaning of the various features\&.
.RE
.PP
\fB\-\-disallow=FEATURE\fR
.RS 4
Disallow access to a specific feature\&. This updates the [Context] group in the metadata\&.
FEATURE
must be one of: devel, multiarch, bluetooth, canbus, per\-app\-dev\-shm\&. This option can be used multiple times\&.
.RE
.PP
\fB\-\-filesystem=FILESYSTEM[:ro|:create]\fR
.RS 4
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, host\-os, host\-etc, 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\*(Aqt exist\&. This option can be used multiple times\&. See the "[Context] filesystems" list in
\fBflatpak-metadata\fR(5)
for details of the meanings of these filesystems\&.
.RE
.PP
\fB\-\-nofilesystem=FILESYSTEM\fR
.RS 4
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, host\-os, host\-etc, 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\&.
.RE
.PP
\fB\-\-with\-appdir\fR
.RS 4
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\&.
.RE
.PP
\fB\-\-add\-policy=SUBSYSTEM\&.KEY=VALUE\fR
.RS 4
Add generic policy option\&. For example, "\-\-add\-policy=subsystem\&.key=v1 \-\-add\-policy=subsystem\&.key=v2" would map to this metadata:
.sp
.if n \{\
.RS 4
.\}
.nf
[Policy subsystem]
key=v1;v2;
.fi
.if n \{\
.RE
.\}
.sp

This option can be used multiple times\&.
.RE
.PP
\fB\-\-remove\-policy=SUBSYSTEM\&.KEY=VALUE\fR
.RS 4
Remove generic policy option\&. This option can be used multiple times\&.
.RE
.PP
\fB\-\-env=VAR=VALUE\fR
.RS 4
Set an environment variable in the application\&. This overrides to the Context section from the application metadata\&. This option can be used multiple times\&.
.RE
.PP
\fB\-\-unset\-env=VAR\fR
.RS 4
Unset an environment variable in the application\&. This overrides the unset\-environment entry in the [Context] group of the metadata, and the [Environment] group\&. This option can be used multiple times\&.
.RE
.PP
\fB\-\-env\-fd=\fR\fB\fIFD\fR\fR
.RS 4
Read environment variables from the file descriptor
\fIFD\fR, and set them as if via
\fB\-\-env\fR\&. This can be used to avoid environment variables and their values becoming visible to other users\&.
.sp
Each environment variable is in the form
\fIVAR\fR=\fIVALUE\fR
followed by a zero byte\&. This is the same format used by
env \-0
and
/proc/*/environ\&.
.RE
.PP
\fB\-\-own\-name=NAME\fR
.RS 4
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\&.
.RE
.PP
\fB\-\-talk\-name=NAME\fR
.RS 4
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\&.
.RE
.PP
\fB\-\-system\-own\-name=NAME\fR
.RS 4
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\&.
.RE
.PP
\fB\-\-system\-talk\-name=NAME\fR
.RS 4
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\&.
.RE
.PP
\fB\-\-persist=FILENAME\fR
.RS 4
If the application doesn\*(Aqt 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\&.
.RE
.PP
\fB\-\-sdk\-dir=DIR\fR
.RS 4
Normally if there is a
usr
directory in the build dir, this is used for the runtime files (this can be created by
\fB\-\-writable\-sdk\fR
or
\fB\-\-type=runtime\fR
arguments to build\-init)\&. If you specify
\fB\-\-sdk\-dir\fR, this directory will be used instead\&. Use this if you passed
\fB\-\-sdk\-dir\fR
to build\-init\&.
.RE
.PP
\fB\-\-readonly\fR
.RS 4
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\*(Aqt affect the build results\&. For example tests\&.
.RE
.PP
\fB\-\-metadata=FILE\fR
.RS 4
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)\&.
.RE
.PP
\fB\-\-log\-session\-bus\fR
.RS 4
Log session bus traffic\&. This can be useful to see what access you need to allow in your D\-Bus policy\&.
.RE
.PP
\fB\-\-log\-system\-bus\fR
.RS 4
Log system bus traffic\&. This can be useful to see what access you need to allow in your D\-Bus policy\&.
.RE
.SH "EXAMPLES"
.PP
\fB$ flatpak build /build/my\-app rpmbuild my\-app\&.src\&.rpm\fR
.SH "SEE ALSO"
.PP
\fBflatpak\fR(1),
\fBflatpak-build-init\fR(1),
\fBflatpak-build-finish\fR(1),
\fBflatpak-build-export\fR(1)
