<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
    "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">

<refentry id="flatpak-build-init">

    <refentryinfo>
        <title>flatpak build-init</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-init</refentrytitle>
        <manvolnum>1</manvolnum>
    </refmeta>

    <refnamediv>
        <refname>flatpak-build-init</refname>
        <refpurpose>Initialize a build directory</refpurpose>
    </refnamediv>

    <refsynopsisdiv>
            <cmdsynopsis>
                <command>flatpak build-init</command>
                <arg choice="opt" rep="repeat">OPTION</arg>
                <arg choice="plain">DIRECTORY</arg>
                <arg choice="plain">APPNAME</arg>
                <arg choice="plain">SDK</arg>
                <arg choice="plain">RUNTIME</arg>
                <arg choice="opt">BRANCH</arg>
            </cmdsynopsis>
    </refsynopsisdiv>

    <refsect1>
        <title>Description</title>

        <para>
            Initializes a separate build directory.
            <arg choice="plain">DIRECTORY</arg> is the name of the directory.
            <arg choice="plain">APPNAME</arg> is the application id of the app
            that will be built.
            <arg choice="plain">SDK</arg> and <arg choice="plain">RUNTIME</arg>
            specify the sdk and runtime that the application should be built
            against and run in.
            <arg choice="plain">BRANCH</arg> specify the version of sdk and runtime
        </para>
        <para>
            Initializes a directory as build directory which can be used as 
            target directory of <command>flatpak build</command>. It
            creates a <filename>metadata</filename> inside the given directory. 
            Additionally, empty <filename>files</filename> and <filename>var</filename>
            subdirectories are created.
        </para>
        <para>
            It is an error to run build-init on a directory that has already
            been initialized as a build directory.
        </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>--arch=ARCH</option></term>

                <listitem><para>
                    The architecture to use. See <command>flatpak --supported-arches</command>
                    for architectures supported by the host.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>-v</option></term>
                <term><option>--var=RUNTIME</option></term>

                <listitem><para>
                    Initialize var from the named runtime.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>-w</option></term>
                <term><option>--writable-sdk</option></term>

                <listitem><para>
                    Initialize /usr with a copy of the sdk, which is writable during flatpak build. This can be used
                    if you need to install build tools in /usr during the build. This is stored in the
                    <filename>usr</filename> subdirectory of the app dir, but will not be part of the final
                    app.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--tag=TAG</option></term>

                <listitem><para>
                    Add a tag to the metadata file.
                    This option can be used multiple times.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--sdk-extension=EXTENSION</option></term>

                <listitem><para>
                    When using <option>--writable-sdk</option>, in addition to the sdk, also install the specified extension.
                    This option can be used multiple times.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--extension=NAME=VARIABLE[=VALUE]</option></term>

                <listitem><para>
                  Add extension point info.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--sdk-dir</option></term>

                <listitem><para>
                    Specify a custom subdirectory to use instead of <filename>usr</filename> for <option>--writable-sdk</option>.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--update</option></term>

                <listitem><para>
                    Re-initialize the sdk and var, don't fail if already initialized.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--base=APP</option></term>

                <listitem><para>
                    Initialize the application with files from another specified application.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--base-version=VERSION</option></term>

                <listitem><para>
                    Specify the version to use for <option>--base</option>. If not specified, will default to
                    "master".
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><option>--base-extension=EXTENSION</option></term>

                <listitem><para>
                    When using <option>--base</option>, also install the specified extension from the app.
                    This option can be used multiple times.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--type=TYPE</option></term>

                <listitem><para>
                    This can be used to build different types of things. The default
                    is "app" which is a regular app, but "runtime" creates a runtime
                    based on an existing runtime, and "extension" creates an extension
                    for an app or runtime.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--extension-tag=EXTENSION_TAG</option></term>

                <listitem><para>
                    If building an extension, the tag to use when searching for
                    the mount point of the extension.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <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>
        </variablelist>
    </refsect1>

    <refsect1>
        <title>Examples</title>

        <para>
            <command>$ flatpak build-init /build/my-app org.example.myapp org.gnome.Sdk org.gnome.Platform 3.36</command>
        </para>

    </refsect1>

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

        <para>
            <citerefentry><refentrytitle>flatpak</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
            <citerefentry><refentrytitle>flatpak-build</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
            <citerefentry><refentrytitle>flatpak-build-finish</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
            <citerefentry><refentrytitle>flatpak-build-export</refentrytitle><manvolnum>1</manvolnum></citerefentry>
        </para>

    </refsect1>

</refentry>
