<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >

<chapter id='toaster-manual-start'>

<title>Preparing to Use Toaster</title>

    <para>
        This chapter describes how you need to prepare your system in order to
        use Toaster.
    </para>

    <section id='toaster-setting-up-the-basic-system-requirements'>
        <title>Setting Up the Basic System Requirements</title>

        <para>
            Before you can use Toaster, you need to first set up your
            build system to run the Yocto Project.
            To do this, follow the instructions in the
            "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Build Host Packages</ulink>"
            and
            "<ulink url='&YOCTO_DOCS_QS_URL;#releases'>Yocto Project Release</ulink>"
            sections in the Yocto Project Quick Start.
 	    For Ubuntu/Debian, you might also need to do an additional install
            of pip3.
                <literallayout class='monospaced'>
     $ sudo apt-get install python3-pip
                </literallayout>
        </para>
    </section>

    <section id='toaster-establishing-toaster-system-dependencies'>
        <title>Establishing Toaster System Dependencies</title>

        <para>
            Toaster requires extra Python dependencies in order to run.
            A Toaster requirements file named
            <filename>toaster-requirements.txt</filename> defines the
            Python dependencies.
            The requirements file is located in the
            <filename>bitbake</filename> directory, which is located in the
            root directory of the
            <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
            (e.g. <filename>poky/bitbake/toaster-requirements.txt</filename>).
            The dependencies appear in a <filename>pip</filename>,
            install-compatible format.
        </para>

        <section id='toaster-load-packages'>
            <title>Install Toaster Packages</title>

            <para>
                You need to install the packages that Toaster requires.
                Use this command:
                <literallayout class='monospaced'>
     $ pip3 install --user -r bitbake/toaster-requirements.txt
                </literallayout>
                The previous command installs the necessary Toaster modules
                into a local python 3 cache in your
                <filename>$HOME</filename> directory.
                The caches is actually located in
                <filename>$HOME/.local</filename>.
                To see what packages have been installed into your
                <filename>$HOME</filename> directory, do the following:
                <literallayout class='monospaced'>
     $ pip3 list installed --local
                </literallayout>
                If you need to remove something, the following works:
                <literallayout class='monospaced'>
     $ pip3 uninstall PackageNameToUninstall
                </literallayout>
            </para>
        </section>

<!-- Commenting this section out for now in case it needs to be used again.

        <section id='toaster-install-daemon'>
            <title>Install <filename>daemon</filename></title>

            <para>
                Toaster depends on
                <ulink url='http://www.libslack.org/daemon/'><filename>daemon</filename></ulink>.
                Depending on your distribution, how you install
                <filename>daemon</filename> differs:
                <itemizedlist>
                    <listitem><para><emphasis>Debian-Based Systems:</emphasis>
                        If you are running a Debian-based distribution,
                        install <filename>daemon</filename> using the
                        following command:
                        <literallayout class='monospaced'>
     $ sudo apt-get install daemon​
                        </literallayout>
                        </para></listitem>
                    <listitem><para><emphasis>Non-Debian-Based Systems:</emphasis>
                        If you are not running a Debian-based distribution
                        (Redhat-based distribution such as Fedora),
                        you need to download ​the file relevant to the
                        architecture and then install
                        <filename>daemon</filename> manually.
                        Following are the commands for 64-bit distributions:
                        <literallayout class='monospaced'>
     $ wget http://libslack.org/daemon/download/daemon-0.6.4-1.x86_64.rpm
     $ sudo rpm -i daemon-0.6.4-1.x86_64.rpm
                        </literallayout>
                        Here are the commands for a 32-bit distribution:
                        <literallayout class='monospaced'>
     $ wget http://libslack.org/daemon/download/daemon-0.6.4-1.i686.rpm
     $ sudo rpm -i ​daemon-0.6.4-1.i686.rpm​
                        </literallayout>
                        </para></listitem>
                </itemizedlist>
            </para>
        </section> -->
    </section>
</chapter>
