<?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="xdg-app-build">

    <refentryinfo>
        <title>xdg-app build</title>
        <productname>xdg-app</productname>

        <authorgroup>
            <author>
                <contrib>Developer</contrib>
                <firstname>Alexander</firstname>
                <surname>Larsson</surname>
                <email>alexl@redhat.com</email>
            </author>
        </authorgroup>
    </refentryinfo>

    <refmeta>
        <refentrytitle>xdg-app build</refentrytitle>
        <manvolnum>1</manvolnum>
    </refmeta>

    <refnamediv>
        <refname>xdg-app-build</refname>
        <refpurpose>Build in a directory</refpurpose>
    </refnamediv>

    <refsynopsisdiv>
            <cmdsynopsis>
                <command>xdg-app build</command>
                <arg choice="opt" rep="repeat">OPTION</arg>
                <arg choice="plain">DIRECTORY</arg>
                <arg choice="opt">COMMAND <arg choice="opt" rep="repeat">ARG</arg></arg>
            </cmdsynopsis>
    </refsynopsisdiv>

    <refsect1>
        <title>Description</title>

        <para>
            Runs a build command in a directory. <arg choice="plain">DIRECTORY</arg>
            must have been initialized with <command>xdg-app build-init</command>.
        </para>
        <para>
            The sdk that is specfied in the <filename>metadata</filename> file
            in the directory is mounted at <filename>/usr</filename> and the
            <filename>files</filename> and <filename>var</filename> subdirectories
            are mounted at <filename>/app</filename> and <filename>/var</filename>,
            respectively. They are writable, and their contents are preserved between
            build commands, to allow accumulating build artifacts there.
        </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>-r</option></term>
                <term><option>--runtime</option></term>

                <listitem><para>
                    Use the non-devel runtime that is specified in the application metadata instead of the devel runtime.
                </para></listitem>
            </varlistentry>

           <varlistentry>
                <term><option>--share=SUBSYSTEM</option></term>

                <listitem><para>
                    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.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--unshare=SUBSYSTEM</option></term>

                <listitem><para>
                    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.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--socket=SOCKET</option></term>

                <listitem><para>
                    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, 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 overrides to
                    the Context section from the application 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 overrides to
                    the Context section from the application metadata.
                    DEVICE must be one of: dri.
                    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 overrides to
                    the Context section from the application metadata.
                    DEVICE must be one of: dri.
                    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 overrides to the Context section from the application 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,
                    an absolute path, or a a homedir-relative path like ~/dir.
                    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 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.
                    This overrides to the Context section from the application 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.
                    This overrides to the Context section from the application 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 persistant data.
                    This overrides to the Context section from the application metadata.
                    This option can be used multiple times.
                </para></listitem>
            </varlistentry>

        </variablelist>
    </refsect1>

    <refsect1>
        <title>Examples</title>

        <para>
            <command>$ xdg-app build /build/my-app rpmbuild my-app.src.rpm</command>
        </para>

    </refsect1>

    <refsect1>
        <title>See also</title>

        <para>
            <citerefentry><refentrytitle>xdg-app</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
            <citerefentry><refentrytitle>xdg-app-build-init</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
            <citerefentry><refentrytitle>xdg-app-build-finish</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
            <citerefentry><refentrytitle>xdg-app-build-export</refentrytitle><manvolnum>1</manvolnum></citerefentry>
        </para>

    </refsect1>

</refentry>
