diff options
| author | Nicolas Dechesne <nicolas.dechesne@linaro.org> | 2020-10-05 16:30:32 +0200 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-10-06 13:56:17 +0100 |
| commit | 43d07a285181e64c30d98d10ff93ef50391efe59 (patch) | |
| tree | 78918fc94d55d44d35e1e3e61c7a6fccc28bca24 /documentation/toaster-manual | |
| parent | 1fd9c4b2c0ae927df29f7a0d34c3e595bcf48e89 (diff) | |
| download | poky-43d07a285181e64c30d98d10ff93ef50391efe59.tar.gz | |
sphinx: remove DocBook files
The Yocto Project documentation was migrated to Sphinx. Let's remove
the deprecated DocBook files.
(From yocto-docs rev: 28fb0e63b2fbfd6426b00498bf2682bb53fdd862)
Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/toaster-manual')
7 files changed, 0 insertions, 3138 deletions
diff --git a/documentation/toaster-manual/toaster-manual-customization.xsl b/documentation/toaster-manual/toaster-manual-customization.xsl deleted file mode 100644 index 3a9b22eb8e..0000000000 --- a/documentation/toaster-manual/toaster-manual-customization.xsl +++ /dev/null | |||
| @@ -1,30 +0,0 @@ | |||
| 1 | <?xml version='1.0'?> | ||
| 2 | <!--SPDX-License-Identifier: CC-BY-2.0-UK--> | ||
| 3 | |||
| 4 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0"> | ||
| 5 | |||
| 6 | <xsl:import href="http://downloads.yoctoproject.org/mirror/docbook-mirror/docbook-xsl-1.76.1/xhtml/docbook.xsl" /> | ||
| 7 | |||
| 8 | <!-- | ||
| 9 | |||
| 10 | <xsl:import href="../template/1.76.1/docbook-xsl-1.76.1/xhtml/docbook.xsl" /> | ||
| 11 | |||
| 12 | <xsl:import href="http://docbook.sourceforge.net/release/xsl/1.76.1/xhtml/docbook.xsl" /> | ||
| 13 | |||
| 14 | --> | ||
| 15 | |||
| 16 | <xsl:include href="../template/permalinks.xsl"/> | ||
| 17 | <xsl:include href="../template/section.title.xsl"/> | ||
| 18 | <xsl:include href="../template/component.title.xsl"/> | ||
| 19 | <xsl:include href="../template/division.title.xsl"/> | ||
| 20 | <xsl:include href="../template/formal.object.heading.xsl"/> | ||
| 21 | <xsl:include href="../template/embedded_video.xsl"/> | ||
| 22 | |||
| 23 | <xsl:param name="html.stylesheet" select="'toaster-manual-style.css'" /> | ||
| 24 | <xsl:param name="chapter.autolabel" select="1" /> | ||
| 25 | <xsl:param name="appendix.autolabel" select="A" /> | ||
| 26 | <xsl:param name="section.autolabel" select="1" /> | ||
| 27 | <xsl:param name="section.label.includes.component.label" select="1" /> | ||
| 28 | <xsl:param name="generate.id.attributes" select="1" /> | ||
| 29 | |||
| 30 | </xsl:stylesheet> | ||
diff --git a/documentation/toaster-manual/toaster-manual-intro.xml b/documentation/toaster-manual/toaster-manual-intro.xml deleted file mode 100644 index 6ee9ec720a..0000000000 --- a/documentation/toaster-manual/toaster-manual-intro.xml +++ /dev/null | |||
| @@ -1,165 +0,0 @@ | |||
| 1 | <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | ||
| 2 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" | ||
| 3 | [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] > | ||
| 4 | <!--SPDX-License-Identifier: CC-BY-2.0-UK--> | ||
| 5 | |||
| 6 | <chapter id='toaster-manual-intro'> | ||
| 7 | <title>Introduction</title> | ||
| 8 | |||
| 9 | <para> | ||
| 10 | Toaster is a web interface to the Yocto Project's | ||
| 11 | <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>. | ||
| 12 | The interface enables you to configure and run your builds. | ||
| 13 | Information about builds is collected and stored in a database. | ||
| 14 | You can use Toaster to configure and start builds on multiple | ||
| 15 | remote build servers. | ||
| 16 | </para> | ||
| 17 | |||
| 18 | <section id='intro-features'> | ||
| 19 | <title>Toaster Features</title> | ||
| 20 | |||
| 21 | <para> | ||
| 22 | Toaster allows you to configure and run builds, and it | ||
| 23 | provides extensive information about the build process. | ||
| 24 | <itemizedlist> | ||
| 25 | <listitem><para id='toaster-build-features'> | ||
| 26 | <emphasis>Configure and Run Builds:</emphasis> | ||
| 27 | You can use the Toaster web interface to configure and | ||
| 28 | start your builds. | ||
| 29 | Builds started using the Toaster web interface are | ||
| 30 | organized into projects. | ||
| 31 | When you create a project, you are asked to select a | ||
| 32 | release, or version of the build system you want to | ||
| 33 | use for the project builds. | ||
| 34 | As shipped, Toaster supports Yocto Project releases 1.8 | ||
| 35 | and beyond. | ||
| 36 | With the Toaster web interface, you can: | ||
| 37 | <itemizedlist> | ||
| 38 | <listitem><para> | ||
| 39 | Browse layers listed in the various | ||
| 40 | <link linkend='layer-source'>layer sources</link> | ||
| 41 | that are available in your project (e.g. the | ||
| 42 | OpenEmbedded Layer Index at | ||
| 43 | <ulink url='http://layers.openembedded.org/layerindex/'></ulink>). | ||
| 44 | </para></listitem> | ||
| 45 | <listitem><para> | ||
| 46 | Browse images, recipes, and machines provided by | ||
| 47 | those layers. | ||
| 48 | </para></listitem> | ||
| 49 | <listitem><para> | ||
| 50 | Import your own layers for building. | ||
| 51 | </para></listitem> | ||
| 52 | <listitem><para> | ||
| 53 | Add and remove layers from your configuration. | ||
| 54 | </para></listitem> | ||
| 55 | <listitem><para> | ||
| 56 | Set configuration variables. | ||
| 57 | </para></listitem> | ||
| 58 | <listitem><para> | ||
| 59 | Select a target or multiple targets to build. | ||
| 60 | </para></listitem> | ||
| 61 | <listitem><para> | ||
| 62 | Start your builds. | ||
| 63 | </para></listitem> | ||
| 64 | </itemizedlist> | ||
| 65 | Toaster also allows you to configure and run your builds | ||
| 66 | from the command line, and switch between the command line and | ||
| 67 | the web interface at any time. | ||
| 68 | Builds started from the command line appear within a special | ||
| 69 | Toaster project called "Command line builds". | ||
| 70 | </para></listitem> | ||
| 71 | <listitem><para id='toaster-analysis-features'> | ||
| 72 | <emphasis>Information About the Build Process:</emphasis> | ||
| 73 | Toaster also records extensive information about your builds. | ||
| 74 | Toaster collects data for builds you start from the web | ||
| 75 | interface and from the command line as long as Toaster | ||
| 76 | is running. | ||
| 77 | <note> | ||
| 78 | You must start Toaster before the build or it will not | ||
| 79 | collect build data. | ||
| 80 | </note></para> | ||
| 81 | <para>With Toaster you can: | ||
| 82 | <itemizedlist> | ||
| 83 | <listitem><para> | ||
| 84 | See what was built (recipes and packages) and what | ||
| 85 | packages were installed into your final image. | ||
| 86 | </para></listitem> | ||
| 87 | <listitem><para> | ||
| 88 | Browse the directory structure of your image. | ||
| 89 | </para></listitem> | ||
| 90 | <listitem><para> | ||
| 91 | See the value of all variables in your build | ||
| 92 | configuration, and which files set each value. | ||
| 93 | </para></listitem> | ||
| 94 | <listitem><para> | ||
| 95 | Examine error, warning, and trace messages to aid | ||
| 96 | in debugging. | ||
| 97 | </para></listitem> | ||
| 98 | <listitem><para> | ||
| 99 | See information about the BitBake tasks executed | ||
| 100 | and reused during your build, including those that | ||
| 101 | used shared state. | ||
| 102 | </para></listitem> | ||
| 103 | <listitem><para> | ||
| 104 | See dependency relationships between recipes, | ||
| 105 | packages, and tasks. | ||
| 106 | </para></listitem> | ||
| 107 | <listitem><para> | ||
| 108 | See performance information such as build time, | ||
| 109 | task time, CPU usage, and disk I/O. | ||
| 110 | </para></listitem> | ||
| 111 | </itemizedlist> | ||
| 112 | </para></listitem> | ||
| 113 | </itemizedlist> | ||
| 114 | </para> | ||
| 115 | |||
| 116 | <para> | ||
| 117 | For an overview of Toaster shipped with the Yocto Project &DISTRO; | ||
| 118 | Release, see the | ||
| 119 | "<ulink url='https://youtu.be/BlXdOYLgPxA'>Toaster - Yocto Project 2.2</ulink>" | ||
| 120 | video. | ||
| 121 | </para> | ||
| 122 | </section> | ||
| 123 | |||
| 124 | <section id='toaster-installation-options'> | ||
| 125 | <title>Installation Options</title> | ||
| 126 | |||
| 127 | <para> | ||
| 128 | You can set Toaster up to run as a local instance or as a shared | ||
| 129 | hosted service. | ||
| 130 | </para> | ||
| 131 | |||
| 132 | <para> | ||
| 133 | When Toaster is set up as a local instance, all the components | ||
| 134 | reside on a single build host. | ||
| 135 | Fundamentally, a local instance of Toaster is suited for a single | ||
| 136 | user developing on a single build host. | ||
| 137 | </para> | ||
| 138 | |||
| 139 | <para> | ||
| 140 | <imagedata fileref="figures/simple-configuration.png" align="center" width="6in" depth="1.5in" /> | ||
| 141 | </para> | ||
| 142 | |||
| 143 | <para> | ||
| 144 | Toaster as a hosted service is suited for multiple users | ||
| 145 | developing across several build hosts. | ||
| 146 | When Toaster is set up as a hosted service, its components can | ||
| 147 | be spread across several machines: | ||
| 148 | </para> | ||
| 149 | |||
| 150 | <para> | ||
| 151 | <imagedata fileref="figures/hosted-service.png" align="center" width="6in" depth="3.5in" /> | ||
| 152 | </para> | ||
| 153 | </section> | ||
| 154 | |||
| 155 | <!--THIS EXTRA INFORMATION PROBABLY WILL GO AWAY | ||
| 156 | For additional information on installing and running Toaster, see the | ||
| 157 | "<ulink url='https://wiki.yoctoproject.org/wiki/Toaster#Installation_and_Running'>Installation and Running</ulink>" | ||
| 158 | section of the "Toaster" wiki page. | ||
| 159 | For complete information on the API and its search operation | ||
| 160 | URI, parameters, and responses, see the | ||
| 161 | <ulink url='https://wiki.yoctoproject.org/wiki/REST_API_Contracts'>REST API Contracts</ulink> | ||
| 162 | Wiki page. | ||
| 163 | </para> | ||
| 164 | --> | ||
| 165 | </chapter> | ||
diff --git a/documentation/toaster-manual/toaster-manual-reference.xml b/documentation/toaster-manual/toaster-manual-reference.xml deleted file mode 100644 index ae267f4184..0000000000 --- a/documentation/toaster-manual/toaster-manual-reference.xml +++ /dev/null | |||
| @@ -1,837 +0,0 @@ | |||
| 1 | <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | ||
| 2 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" | ||
| 3 | [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] > | ||
| 4 | <!--SPDX-License-Identifier: CC-BY-2.0-UK--> | ||
| 5 | |||
| 6 | <chapter id='toaster-manual-reference'> | ||
| 7 | |||
| 8 | <title>Concepts and Reference</title> | ||
| 9 | |||
| 10 | <para> | ||
| 11 | In order to configure and use Toaster, you should understand some | ||
| 12 | concepts and have some basic command reference material available. | ||
| 13 | This final chapter provides conceptual information on layer sources, | ||
| 14 | releases, and JSON configuration files. | ||
| 15 | Also provided is a quick look at some useful | ||
| 16 | <filename>manage.py</filename> commands that are Toaster-specific. | ||
| 17 | Information on <filename>manage.py</filename> commands does exist | ||
| 18 | across the Web and the information in this manual by no means | ||
| 19 | attempts to provide a command comprehensive reference. | ||
| 20 | </para> | ||
| 21 | |||
| 22 | <section id='layer-source'> | ||
| 23 | <title>Layer Source</title> | ||
| 24 | |||
| 25 | <para> | ||
| 26 | In general, a "layer source" is a source of information about | ||
| 27 | existing layers. | ||
| 28 | In particular, we are concerned with layers that you can use | ||
| 29 | with the Yocto Project and Toaster. | ||
| 30 | This chapter describes a particular type of layer source called | ||
| 31 | a "layer index." | ||
| 32 | </para> | ||
| 33 | |||
| 34 | <para> | ||
| 35 | A layer index is a web application that contains information | ||
| 36 | about a set of custom layers. | ||
| 37 | A good example of an existing layer index is the | ||
| 38 | OpenEmbedded Layer Index. | ||
| 39 | A public instance of this layer index exists at | ||
| 40 | <ulink url='http://layers.openembedded.org'></ulink>. | ||
| 41 | You can find the code for this layer index's web application at | ||
| 42 | <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/layerindex-web/'></ulink>. | ||
| 43 | </para> | ||
| 44 | |||
| 45 | <para> | ||
| 46 | When you tie a layer source into Toaster, it can query the layer | ||
| 47 | source through a | ||
| 48 | <ulink url='http://en.wikipedia.org/wiki/Representational_state_transfer'>REST</ulink> | ||
| 49 | API, store the information about the layers in the Toaster | ||
| 50 | database, and then show the information to users. | ||
| 51 | Users are then able to view that information and build layers | ||
| 52 | from Toaster itself without worrying about cloning or editing | ||
| 53 | the BitBake layers configuration file | ||
| 54 | <filename>bblayers.conf</filename>. | ||
| 55 | </para> | ||
| 56 | |||
| 57 | <para> | ||
| 58 | Tying a layer source into Toaster is convenient when you have | ||
| 59 | many custom layers that need to be built on a regular basis by | ||
| 60 | a community of developers. | ||
| 61 | In fact, Toaster comes pre-configured with the OpenEmbedded | ||
| 62 | Metadata Index. | ||
| 63 | <note> | ||
| 64 | You do not have to use a layer source to use Toaster. | ||
| 65 | Tying into a layer source is optional. | ||
| 66 | </note> | ||
| 67 | </para> | ||
| 68 | |||
| 69 | <section id='layer-source-using-with-toaster'> | ||
| 70 | <title>Setting Up and Using a Layer Source</title> | ||
| 71 | |||
| 72 | <para> | ||
| 73 | To use your own layer source, you need to set up the layer | ||
| 74 | source and then tie it into Toaster. | ||
| 75 | This section describes how to tie into a layer index in a manner | ||
| 76 | similar to the way Toaster ties into the OpenEmbedded Metadata | ||
| 77 | Index. | ||
| 78 | </para> | ||
| 79 | |||
| 80 | <section id='understanding-your-layers'> | ||
| 81 | <title>Understanding Your Layers</title> | ||
| 82 | |||
| 83 | <para> | ||
| 84 | The obvious first step for using a layer index is to have | ||
| 85 | several custom layers that developers build and access using | ||
| 86 | the Yocto Project on a regular basis. | ||
| 87 | This set of layers needs to exist and you need to be | ||
| 88 | familiar with where they reside. | ||
| 89 | You will need that information when you set up the | ||
| 90 | code for the web application that "hooks" into your set of | ||
| 91 | layers. | ||
| 92 | </para> | ||
| 93 | |||
| 94 | <para> | ||
| 95 | For general information on layers, see the | ||
| 96 | "<ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>" | ||
| 97 | section in the Yocto Project Overview and Concepts Manual. | ||
| 98 | For information on how to create layers, see the | ||
| 99 | "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>" | ||
| 100 | section in the Yocto Project Development Tasks Manual. | ||
| 101 | </para> | ||
| 102 | </section> | ||
| 103 | |||
| 104 | <section id='configuring-toaster-to-hook-into-your-layer-source'> | ||
| 105 | <title>Configuring Toaster to Hook Into Your Layer Index</title> | ||
| 106 | |||
| 107 | <para> | ||
| 108 | If you want Toaster to use your layer index, you must host | ||
| 109 | the web application in a server to which Toaster can | ||
| 110 | connect. | ||
| 111 | You also need to give Toaster the information about your | ||
| 112 | layer index. | ||
| 113 | In other words, you have to configure Toaster to use your | ||
| 114 | layer index. | ||
| 115 | This section describes two methods by which you can | ||
| 116 | configure and use your layer index. | ||
| 117 | </para> | ||
| 118 | |||
| 119 | <para> | ||
| 120 | In the previous section, the code for the OpenEmbedded | ||
| 121 | Metadata Index (i.e. | ||
| 122 | <ulink url='http://layers.openembedded.org'></ulink>) was | ||
| 123 | referenced. | ||
| 124 | You can use this code, which is at | ||
| 125 | <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/layerindex-web/'></ulink>, | ||
| 126 | as a base to create your own layer index. | ||
| 127 | </para> | ||
| 128 | |||
| 129 | <section id='use-the-administration-interface'> | ||
| 130 | <title>Use the Administration Interface</title> | ||
| 131 | |||
| 132 | <para> | ||
| 133 | Access the administration interface through a | ||
| 134 | browser by entering the URL of your Toaster instance and | ||
| 135 | adding "<filename>/admin</filename>" to the end of the | ||
| 136 | URL. | ||
| 137 | As an example, if you are running Toaster locally, use | ||
| 138 | the following URL: | ||
| 139 | <literallayout class='monospaced'> | ||
| 140 | http://127.0.0.1:8000/admin | ||
| 141 | </literallayout> | ||
| 142 | </para> | ||
| 143 | |||
| 144 | <para> | ||
| 145 | The administration interface has a "Layer sources" | ||
| 146 | section that includes an "Add layer source" button. | ||
| 147 | Click that button and provide the required information. | ||
| 148 | Make sure you select "layerindex" as the layer source type. | ||
| 149 | </para> | ||
| 150 | </section> | ||
| 151 | |||
| 152 | <section id='use-the-fixture-feature'> | ||
| 153 | <title>Use the Fixture Feature</title> | ||
| 154 | |||
| 155 | <para> | ||
| 156 | The Django fixture feature overrides the default layer | ||
| 157 | server when you use it to specify a custom URL. To use | ||
| 158 | the fixture feature, create (or edit) the file | ||
| 159 | <filename>bitbake/lib/toaster.orm/fixtures/custom.xml</filename>, | ||
| 160 | and then set the following Toaster setting to your | ||
| 161 | custom URL: | ||
| 162 | <literallayout class='monospaced'> | ||
| 163 | <?xml version="1.0" ?> | ||
| 164 | <django-objects version="1.0"> | ||
| 165 | <object model="orm.toastersetting" pk="100"> | ||
| 166 | <field name="name" type="CharField">CUSTOM_LAYERINDEX_SERVER</field> | ||
| 167 | <field name="value" type="CharField">https://layers.my_organization.org/layerindex/branch/master/layers/</field> | ||
| 168 | </object> | ||
| 169 | <django-objects> | ||
| 170 | </literallayout> | ||
| 171 | When you start Toaster for the first time, or if you | ||
| 172 | delete the file <filename>toaster.sqlite</filename> and restart, | ||
| 173 | the database will populate cleanly from this layer index server. | ||
| 174 | </para> | ||
| 175 | |||
| 176 | <para> | ||
| 177 | Once the information has been updated, verify the new layer | ||
| 178 | information is available by using the Toaster web interface. | ||
| 179 | To do that, visit the "All compatible layers" page inside a | ||
| 180 | Toaster project. The layers from your layer source should be | ||
| 181 | listed there. | ||
| 182 | </para> | ||
| 183 | |||
| 184 | <para> | ||
| 185 | If you change the information in your layer index server, | ||
| 186 | refresh the Toaster database by running the following command: | ||
| 187 | <literallayout class='monospaced'> | ||
| 188 | $ bitbake/lib/toaster/manage.py lsupdates | ||
| 189 | </literallayout> | ||
| 190 | If Toaster can reach the API URL, you should see a message | ||
| 191 | telling you that Toaster is updating the layer source information. | ||
| 192 | </para> | ||
| 193 | </section> | ||
| 194 | </section> | ||
| 195 | </section> | ||
| 196 | </section> | ||
| 197 | |||
| 198 | <section id='toaster-releases'> | ||
| 199 | <title>Releases</title> | ||
| 200 | |||
| 201 | <para> | ||
| 202 | When you create a Toaster project using the web interface, | ||
| 203 | you are asked to choose a "Release." | ||
| 204 | In the context of Toaster, the term "Release" refers to a set of | ||
| 205 | layers and a BitBake version the OpenEmbedded build system uses | ||
| 206 | to build something. | ||
| 207 | As shipped, Toaster is pre-configured with releases that | ||
| 208 | correspond to Yocto Project release branches. | ||
| 209 | However, you can modify, delete, and create new releases | ||
| 210 | according to your needs. | ||
| 211 | This section provides some background information on releases. | ||
| 212 | </para> | ||
| 213 | |||
| 214 | <section id='toaster-releases-supported'> | ||
| 215 | <title>Pre-Configured Releases</title> | ||
| 216 | |||
| 217 | <para> | ||
| 218 | As shipped, Toaster is configured to use a specific set of | ||
| 219 | releases. | ||
| 220 | Of course, you can always configure Toaster to use any | ||
| 221 | release. | ||
| 222 | For example, you might want your project to build against a | ||
| 223 | specific commit of any of the "out-of-the-box" releases. | ||
| 224 | Or, you might want your project to build against different | ||
| 225 | revisions of OpenEmbedded and BitBake. | ||
| 226 | </para> | ||
| 227 | |||
| 228 | <para> | ||
| 229 | As shipped, Toaster is configured to work with the following | ||
| 230 | releases: | ||
| 231 | <itemizedlist> | ||
| 232 | <listitem><para><emphasis> | ||
| 233 | Yocto Project &DISTRO; "&DISTRO_NAME;" or OpenEmbedded "&DISTRO_NAME;":</emphasis> | ||
| 234 | This release causes your Toaster projects to build | ||
| 235 | against the head of the &DISTRO_NAME_NO_CAP; branch at | ||
| 236 | <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/log/?h=rocko'></ulink> | ||
| 237 | or <ulink url='http://git.openembedded.org/openembedded-core/commit/?h=rocko'></ulink>. | ||
| 238 | </para></listitem> | ||
| 239 | <listitem><para><emphasis>Yocto Project "Master" or OpenEmbedded "Master":</emphasis> | ||
| 240 | This release causes your Toaster Projects to | ||
| 241 | build against the head of the master branch, which is | ||
| 242 | where active development takes place, at | ||
| 243 | <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/log/'></ulink> | ||
| 244 | or | ||
| 245 | <ulink url='http://git.openembedded.org/openembedded-core/log/'></ulink>. | ||
| 246 | </para></listitem> | ||
| 247 | <listitem><para><emphasis>Local Yocto Project or Local OpenEmbedded:</emphasis> | ||
| 248 | This release causes your Toaster Projects to | ||
| 249 | build against the head of the <filename>poky</filename> | ||
| 250 | or <filename>openembedded-core</filename> clone you | ||
| 251 | have local to the machine running Toaster. | ||
| 252 | </para></listitem> | ||
| 253 | </itemizedlist> | ||
| 254 | </para> | ||
| 255 | </section> | ||
| 256 | </section> | ||
| 257 | |||
| 258 | <section id='configuring-toaster'> | ||
| 259 | <title>Configuring Toaster</title> | ||
| 260 | |||
| 261 | <para> | ||
| 262 | In order to use Toaster, you must configure the database with the | ||
| 263 | default content. The following subsections describe various aspects | ||
| 264 | of Toaster configuration. | ||
| 265 | </para> | ||
| 266 | |||
| 267 | <section id='configuring-the-workflow'> | ||
| 268 | <title>Configuring the Workflow</title> | ||
| 269 | |||
| 270 | <para> | ||
| 271 | The | ||
| 272 | <filename>bldcontrol/management/commands/checksettings.py</filename> | ||
| 273 | file controls workflow configuration. | ||
| 274 | The following steps outline the process to initially populate | ||
| 275 | this database. | ||
| 276 | <orderedlist> | ||
| 277 | <listitem><para> | ||
| 278 | The default project settings are set from | ||
| 279 | <filename>orm/fixtures/settings.xml</filename>. | ||
| 280 | </para></listitem> | ||
| 281 | <listitem><para> | ||
| 282 | The default project distro and layers are added | ||
| 283 | from <filename>orm/fixtures/poky.xml</filename> if poky | ||
| 284 | is installed. | ||
| 285 | If poky is not installed, they are added | ||
| 286 | from <filename>orm/fixtures/oe-core.xml</filename>. | ||
| 287 | </para></listitem> | ||
| 288 | <listitem><para> | ||
| 289 | If the <filename>orm/fixtures/custom.xml</filename> file | ||
| 290 | exists, then its values are added. | ||
| 291 | </para></listitem> | ||
| 292 | <listitem><para> | ||
| 293 | The layer index is then scanned and added to the database. | ||
| 294 | </para></listitem> | ||
| 295 | </orderedlist> | ||
| 296 | Once these steps complete, Toaster is set up and ready to use. | ||
| 297 | </para> | ||
| 298 | </section> | ||
| 299 | |||
| 300 | <section id='customizing-pre-set-data'> | ||
| 301 | <title>Customizing Pre-Set Data</title> | ||
| 302 | |||
| 303 | <para> | ||
| 304 | The pre-set data for Toaster is easily customizable. You can | ||
| 305 | create the <filename>orm/fixtures/custom.xml</filename> file | ||
| 306 | to customize the values that go into to the database. | ||
| 307 | Customization is additive, | ||
| 308 | and can either extend or completely replace the existing values. | ||
| 309 | </para> | ||
| 310 | |||
| 311 | <para> | ||
| 312 | You use the <filename>orm/fixtures/custom.xml</filename> file | ||
| 313 | to change the default project settings for the machine, distro, | ||
| 314 | file images, and layers. | ||
| 315 | When creating a new project, you can use the file to define | ||
| 316 | the offered alternate project release selections. | ||
| 317 | For example, you can add one or more additional selections that | ||
| 318 | present custom layer sets or distros, and any other local or proprietary | ||
| 319 | content. | ||
| 320 | </para> | ||
| 321 | |||
| 322 | <para> | ||
| 323 | Additionally, you can completely disable the content from the | ||
| 324 | <filename>oe-core.xml</filename> and <filename>poky.xml</filename> | ||
| 325 | files by defining the section shown below in the | ||
| 326 | <filename>settings.xml</filename> file. | ||
| 327 | For example, this option is particularly useful if your custom | ||
| 328 | configuration defines fewer releases or layers than the default | ||
| 329 | fixture files. | ||
| 330 | </para> | ||
| 331 | |||
| 332 | <para> | ||
| 333 | The following example sets "name" to "CUSTOM_XML_ONLY" and its value | ||
| 334 | to "True". | ||
| 335 | <literallayout class='monospaced'> | ||
| 336 | <object model="orm.toastersetting" pk="99"> | ||
| 337 | <field type="CharField" name="name">CUSTOM_XML_ONLY</field> | ||
| 338 | <field type="CharField" name="value">True</field> | ||
| 339 | </object> | ||
| 340 | </literallayout> | ||
| 341 | </para> | ||
| 342 | </section> | ||
| 343 | |||
| 344 | <section id='understanding-fixture-file-format'> | ||
| 345 | <title>Understanding Fixture File Format</title> | ||
| 346 | |||
| 347 | <para> | ||
| 348 | The following is an overview of the file format used by the | ||
| 349 | <filename>oe-core.xml</filename>, <filename>poky.xml</filename>, | ||
| 350 | and <filename>custom.xml</filename> files. | ||
| 351 | </para> | ||
| 352 | |||
| 353 | <para> | ||
| 354 | The following subsections describe each of the sections in the | ||
| 355 | fixture files, and outline an example section of the XML code. | ||
| 356 | you can use to help understand this information and create a local | ||
| 357 | <filename>custom.xml</filename> file. | ||
| 358 | </para> | ||
| 359 | |||
| 360 | <section id='defining-the-default-distro-and-other-values'> | ||
| 361 | <title>Defining the Default Distro and Other Values</title> | ||
| 362 | |||
| 363 | <para> | ||
| 364 | This section defines the default distro value for new projects. | ||
| 365 | By default, it reserves the first Toaster Setting record "1". | ||
| 366 | The following demonstrates how to set the project default value | ||
| 367 | for | ||
| 368 | <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO'><filename>DISTRO</filename></ulink>: | ||
| 369 | <literallayout class='monospaced'> | ||
| 370 | <!-- Set the project default value for DISTRO --> | ||
| 371 | <object model="orm.toastersetting" pk="1"> | ||
| 372 | <field type="CharField" name="name">DEFCONF_DISTRO</field> | ||
| 373 | <field type="CharField" name="value">poky</field> | ||
| 374 | </object> | ||
| 375 | </literallayout> | ||
| 376 | You can override other default project values by adding | ||
| 377 | additional Toaster Setting sections such as any of the | ||
| 378 | settings coming from the <filename>settings.xml</filename> | ||
| 379 | file. | ||
| 380 | Also, you can add custom values that are included in the | ||
| 381 | BitBake environment. | ||
| 382 | The "pk" values must be unique. | ||
| 383 | By convention, values that set default project values have a | ||
| 384 | "DEFCONF" prefix. | ||
| 385 | </para> | ||
| 386 | </section> | ||
| 387 | |||
| 388 | <section id='defining-bitbake-version'> | ||
| 389 | <title>Defining BitBake Version</title> | ||
| 390 | |||
| 391 | <para> | ||
| 392 | The following defines which version of BitBake is used | ||
| 393 | for the following release selection: | ||
| 394 | <literallayout class='monospaced'> | ||
| 395 | <!-- Bitbake versions which correspond to the metadata release --> | ||
| 396 | <object model="orm.bitbakeversion" pk="1"> | ||
| 397 | <field type="CharField" name="name">rocko</field> | ||
| 398 | <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field> | ||
| 399 | <field type="CharField" name="branch">rocko</field> | ||
| 400 | <field type="CharField" name="dirpath">bitbake</field> | ||
| 401 | </object> | ||
| 402 | </literallayout> | ||
| 403 | </para> | ||
| 404 | </section> | ||
| 405 | |||
| 406 | <section id='defining-releases'> | ||
| 407 | <title>Defining Release</title> | ||
| 408 | |||
| 409 | <para> | ||
| 410 | The following defines the releases when you create a new | ||
| 411 | project. | ||
| 412 | <literallayout class='monospaced'> | ||
| 413 | <!-- Releases available --> | ||
| 414 | <object model="orm.release" pk="1"> | ||
| 415 | <field type="CharField" name="name">rocko</field> | ||
| 416 | <field type="CharField" name="description">Yocto Project 2.4 "Rocko"</field> | ||
| 417 | <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field> | ||
| 418 | <field type="CharField" name="branch_name">rocko</field> | ||
| 419 | <field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=rocko">Yocto Project Rocko branch</a>.</field> | ||
| 420 | </object> | ||
| 421 | </literallayout> | ||
| 422 | The "pk" value must match the above respective BitBake | ||
| 423 | version record. | ||
| 424 | </para> | ||
| 425 | </section> | ||
| 426 | |||
| 427 | <section id='defining-the-release-default-layer-names'> | ||
| 428 | <title>Defining the Release Default Layer Names</title> | ||
| 429 | |||
| 430 | <para> | ||
| 431 | The following defines the default layers for each release: | ||
| 432 | <literallayout class='monospaced'> | ||
| 433 | <!-- Default project layers for each release --> | ||
| 434 | <object model="orm.releasedefaultlayer" pk="1"> | ||
| 435 | <field rel="ManyToOneRel" to="orm.release" name="release">1</field> | ||
| 436 | <field type="CharField" name="layer_name">openembedded-core</field> | ||
| 437 | </object> | ||
| 438 | </literallayout> | ||
| 439 | The 'pk' values in the example above should start at "1" and increment | ||
| 440 | uniquely. | ||
| 441 | You can use the same layer name in multiple releases. | ||
| 442 | </para> | ||
| 443 | </section> | ||
| 444 | |||
| 445 | <section id='defining-layer-definitions'> | ||
| 446 | <title>Defining Layer Definitions</title> | ||
| 447 | |||
| 448 | <para> | ||
| 449 | Layer definitions are the most complex. | ||
| 450 | The following defines each of the layers, and then defines the exact layer | ||
| 451 | version of the layer used for each respective release. | ||
| 452 | You must have one <filename>orm.layer</filename> | ||
| 453 | entry for each layer. | ||
| 454 | Then, with each entry you need a set of | ||
| 455 | <filename>orm.layer_version</filename> entries that connects | ||
| 456 | the layer with each release that includes the layer. | ||
| 457 | In general all releases include the layer. | ||
| 458 | <literallayout class='monospaced'> | ||
| 459 | <object model="orm.layer" pk="1"> | ||
| 460 | <field type="CharField" name="name">openembedded-core</field> | ||
| 461 | <field type="CharField" name="layer_index_url"></field> | ||
| 462 | <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field> | ||
| 463 | <field type="CharField" name="vcs_web_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky</field> | ||
| 464 | <field type="CharField" name="vcs_web_tree_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field> | ||
| 465 | <field type="CharField" name="vcs_web_file_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field> | ||
| 466 | </object> | ||
| 467 | <object model="orm.layer_version" pk="1"> | ||
| 468 | <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field> | ||
| 469 | <field type="IntegerField" name="layer_source">0</field> | ||
| 470 | <field rel="ManyToOneRel" to="orm.release" name="release">1</field> | ||
| 471 | <field type="CharField" name="branch">rocko</field> | ||
| 472 | <field type="CharField" name="dirpath">meta</field> | ||
| 473 | </object> | ||
| 474 | <object model="orm.layer_version" pk="2"> | ||
| 475 | <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field> | ||
| 476 | <field type="IntegerField" name="layer_source">0</field> | ||
| 477 | <field rel="ManyToOneRel" to="orm.release" name="release">2</field> | ||
| 478 | <field type="CharField" name="branch">HEAD</field> | ||
| 479 | <field type="CharField" name="commit">HEAD</field> | ||
| 480 | <field type="CharField" name="dirpath">meta</field> | ||
| 481 | </object> | ||
| 482 | <object model="orm.layer_version" pk="3"> | ||
| 483 | <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field> | ||
| 484 | <field type="IntegerField" name="layer_source">0</field> | ||
| 485 | <field rel="ManyToOneRel" to="orm.release" name="release">3</field> | ||
| 486 | |||
| 487 | <field type="CharField" name="branch">master</field> | ||
| 488 | <field type="CharField" name="dirpath">meta</field> | ||
| 489 | </object> | ||
| 490 | </literallayout> | ||
| 491 | The layer "pk" values above must be unique, and typically start at "1". | ||
| 492 | The layer version "pk" values must also be unique across all layers, | ||
| 493 | and typically start at "1". | ||
| 494 | </para> | ||
| 495 | </section> | ||
| 496 | </section> | ||
| 497 | </section> | ||
| 498 | |||
| 499 | <section id='remote-toaster-monitoring'> | ||
| 500 | <title>Remote Toaster Monitoring</title> | ||
| 501 | |||
| 502 | <para> | ||
| 503 | Toaster has an API that allows remote management applications to | ||
| 504 | directly query the state of the Toaster server and its builds | ||
| 505 | in a machine-to-machine manner. | ||
| 506 | This API uses the | ||
| 507 | <ulink url='http://en.wikipedia.org/wiki/Representational_state_transfer'>REST</ulink> | ||
| 508 | interface and the transfer of JSON files. | ||
| 509 | For example, you might | ||
| 510 | monitor a build inside a container through well supported | ||
| 511 | known HTTP ports in order to easily access a Toaster server | ||
| 512 | inside the container. | ||
| 513 | In this example, when you use this direct JSON API, you avoid | ||
| 514 | having web page parsing against the display the user sees. | ||
| 515 | </para> | ||
| 516 | |||
| 517 | <section id='checking-health'> | ||
| 518 | <title>Checking Health</title> | ||
| 519 | |||
| 520 | <para> | ||
| 521 | Before you use remote Toaster monitoring, you should do | ||
| 522 | a health check. | ||
| 523 | To do this, ping the Toaster server using the following call | ||
| 524 | to see if it is still alive: | ||
| 525 | <literallayout class='monospaced'> | ||
| 526 | http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/health | ||
| 527 | </literallayout> | ||
| 528 | Be sure to provide values for <replaceable>host</replaceable> | ||
| 529 | and <replaceable>port</replaceable>. | ||
| 530 | If the server is alive, you will get the response HTML: | ||
| 531 | <literallayout class='monospaced'> | ||
| 532 | <!DOCTYPE html> | ||
| 533 | <html lang="en"> | ||
| 534 | <head><title>Toaster Health</title></head> | ||
| 535 | <body>Ok</body> | ||
| 536 | </html> | ||
| 537 | </literallayout> | ||
| 538 | </para> | ||
| 539 | </section> | ||
| 540 | |||
| 541 | <section id='determining-status-of-builds-in-progress'> | ||
| 542 | <title>Determining Status of Builds in Progress</title> | ||
| 543 | |||
| 544 | <para> | ||
| 545 | Sometimes it is useful to determine the status of a build | ||
| 546 | in progress. | ||
| 547 | To get the status of pending builds, use the following call: | ||
| 548 | <literallayout class='monospaced'> | ||
| 549 | http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/toastergui/api/building | ||
| 550 | </literallayout> | ||
| 551 | Be sure to provide values for <replaceable>host</replaceable> | ||
| 552 | and <replaceable>port</replaceable>. | ||
| 553 | The output is a JSON file that itemizes all builds in | ||
| 554 | progress. | ||
| 555 | This file includes the time in seconds since each | ||
| 556 | respective build started as well as the progress of the | ||
| 557 | cloning, parsing, and task execution. | ||
| 558 | The following is sample output for a build in progress: | ||
| 559 | <literallayout class='monospaced'> | ||
| 560 | {"count": 1, | ||
| 561 | "building": [ | ||
| 562 | {"machine": "beaglebone", | ||
| 563 | "seconds": "463.869", | ||
| 564 | "task": "927:2384", | ||
| 565 | "distro": "poky", | ||
| 566 | "clone": "1:1", | ||
| 567 | "id": 2, | ||
| 568 | "start": "2017-09-22T09:31:44.887Z", | ||
| 569 | "name": "20170922093200", | ||
| 570 | "parse": "818:818", | ||
| 571 | "project": "my_rocko", | ||
| 572 | "target": "core-image-minimal" | ||
| 573 | }] | ||
| 574 | } | ||
| 575 | </literallayout> | ||
| 576 | The JSON data for this query is returned in a single line. | ||
| 577 | In the previous example the line has been artificially split for readability. | ||
| 578 | </para> | ||
| 579 | </section> | ||
| 580 | |||
| 581 | <section id='checking-status-of-builds-completed'> | ||
| 582 | <title>Checking Status of Builds Completed</title> | ||
| 583 | |||
| 584 | <para> | ||
| 585 | Once a build is completed, you get the status when you use | ||
| 586 | the following call: | ||
| 587 | <literallayout class='monospaced'> | ||
| 588 | http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/toastergui/api/builds | ||
| 589 | </literallayout> | ||
| 590 | Be sure to provide values for <replaceable>host</replaceable> | ||
| 591 | and <replaceable>port</replaceable>. | ||
| 592 | The output is a JSON file that itemizes all complete builds, | ||
| 593 | and includes build summary information. | ||
| 594 | The following is sample output for a completed build: | ||
| 595 | <literallayout class='monospaced'> | ||
| 596 | {"count": 1, | ||
| 597 | "builds": [ | ||
| 598 | {"distro": "poky", | ||
| 599 | "errors": 0, | ||
| 600 | "machine": | ||
| 601 | "beaglebone", | ||
| 602 | "project": "my_rocko", | ||
| 603 | "stop": "2017-09-22T09:26:36.017Z", | ||
| 604 | "target": "quilt-native", | ||
| 605 | "seconds": "78.193", | ||
| 606 | "outcome": "Succeeded", | ||
| 607 | "id": 1, | ||
| 608 | "start": "2017-09-22T09:25:17.824Z", | ||
| 609 | "warnings": 1, | ||
| 610 | "name": "20170922092618" | ||
| 611 | }] | ||
| 612 | } | ||
| 613 | </literallayout> | ||
| 614 | The JSON data for this query is returned in a single line. | ||
| 615 | In the previous example the line has been artificially split for readability. | ||
| 616 | </para> | ||
| 617 | </section> | ||
| 618 | |||
| 619 | <section id='determining-status-of-a-specific-build'> | ||
| 620 | <title>Determining Status of a Specific Build</title> | ||
| 621 | |||
| 622 | <para> | ||
| 623 | Sometimes it is useful to determine the status of a specific | ||
| 624 | build. | ||
| 625 | To get the status of a specific build, use the following | ||
| 626 | call: | ||
| 627 | <literallayout class='monospaced'> | ||
| 628 | http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/toastergui/api/build/<replaceable>ID</replaceable> | ||
| 629 | </literallayout> | ||
| 630 | Be sure to provide values for <replaceable>host</replaceable>, | ||
| 631 | <replaceable>port</replaceable>, and <replaceable>ID</replaceable>. | ||
| 632 | You can find the value for <replaceable>ID</replaceable> from the | ||
| 633 | Builds Completed query. See the | ||
| 634 | "<link linkend='checking-status-of-builds-completed'>Checking Status of Builds Completed</link>" | ||
| 635 | section for more information. | ||
| 636 | </para> | ||
| 637 | |||
| 638 | <para> | ||
| 639 | The output is a JSON file that itemizes the specific build | ||
| 640 | and includes build summary information. | ||
| 641 | The following is sample output for a specific build: | ||
| 642 | <literallayout class='monospaced'> | ||
| 643 | {"build": | ||
| 644 | {"distro": "poky", | ||
| 645 | "errors": 0, | ||
| 646 | "machine": "beaglebone", | ||
| 647 | "project": "my_rocko", | ||
| 648 | "stop": "2017-09-22T09:26:36.017Z", | ||
| 649 | "target": "quilt-native", | ||
| 650 | "seconds": "78.193", | ||
| 651 | "outcome": "Succeeded", | ||
| 652 | "id": 1, | ||
| 653 | "start": "2017-09-22T09:25:17.824Z", | ||
| 654 | "warnings": 1, | ||
| 655 | "name": "20170922092618", | ||
| 656 | "cooker_log": "/opt/user/poky/build-toaster-2/tmp/log/cooker/beaglebone/build_20170922_022607.991.log" | ||
| 657 | } | ||
| 658 | } | ||
| 659 | </literallayout> | ||
| 660 | The JSON data for this query is returned in a single line. | ||
| 661 | In the previous example the line has been artificially split for readability. | ||
| 662 | </para> | ||
| 663 | </section> | ||
| 664 | </section> | ||
| 665 | |||
| 666 | <section id='toaster-useful-commands'> | ||
| 667 | <title>Useful Commands</title> | ||
| 668 | |||
| 669 | <para> | ||
| 670 | In addition to the web user interface and the scripts that start | ||
| 671 | and stop Toaster, command-line commands exist through the | ||
| 672 | <filename>manage.py</filename> management script. | ||
| 673 | You can find general documentation on | ||
| 674 | <filename>manage.py</filename> at the | ||
| 675 | <ulink url='https://docs.djangoproject.com/en/1.7/topics/settings/'>Django</ulink> | ||
| 676 | site. | ||
| 677 | However, several <filename>manage.py</filename> commands have been | ||
| 678 | created that are specific to Toaster and are used to control | ||
| 679 | configuration and back-end tasks. | ||
| 680 | You can locate these commands in the | ||
| 681 | <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink> | ||
| 682 | (e.g. <filename>poky</filename>) at | ||
| 683 | <filename>bitbake/lib/manage.py</filename>. | ||
| 684 | This section documents those commands. | ||
| 685 | <note><title>Notes</title> | ||
| 686 | <itemizedlist> | ||
| 687 | <listitem><para> | ||
| 688 | When using <filename>manage.py</filename> commands given | ||
| 689 | a default configuration, you must be sure that your | ||
| 690 | working directory is set to the | ||
| 691 | <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>. | ||
| 692 | Using <filename>manage.py</filename> commands from the | ||
| 693 | Build Directory allows Toaster to find the | ||
| 694 | <filename>toaster.sqlite</filename> file, which is located | ||
| 695 | in the Build Directory. | ||
| 696 | </para></listitem> | ||
| 697 | <listitem><para> | ||
| 698 | For non-default database configurations, it is possible | ||
| 699 | that you can use <filename>manage.py</filename> commands | ||
| 700 | from a directory other than the Build Directory. | ||
| 701 | To do so, the | ||
| 702 | <filename>toastermain/settings.py</filename> file must be | ||
| 703 | configured to point to the correct database backend. | ||
| 704 | </para></listitem> | ||
| 705 | </itemizedlist> | ||
| 706 | </note> | ||
| 707 | </para> | ||
| 708 | |||
| 709 | <section id='toaster-command-buildslist'> | ||
| 710 | <title><filename>buildslist</filename></title> | ||
| 711 | |||
| 712 | <para> | ||
| 713 | The <filename>buildslist</filename> command lists all builds | ||
| 714 | that Toaster has recorded. | ||
| 715 | Access the command as follows: | ||
| 716 | <literallayout class='monospaced'> | ||
| 717 | $ bitbake/lib/toaster/manage.py buildslist | ||
| 718 | </literallayout> | ||
| 719 | The command returns a list, which includes numeric | ||
| 720 | identifications, of the builds that Toaster has recorded in the | ||
| 721 | current database. | ||
| 722 | </para> | ||
| 723 | |||
| 724 | <para> | ||
| 725 | You need to run the <filename>buildslist</filename> command | ||
| 726 | first to identify existing builds in the database before | ||
| 727 | using the | ||
| 728 | <link linkend='toaster-command-builddelete'><filename>builddelete</filename></link> | ||
| 729 | command. | ||
| 730 | Here is an example that assumes default repository and build | ||
| 731 | directory names: | ||
| 732 | <literallayout class='monospaced'> | ||
| 733 | $ cd ~/poky/build | ||
| 734 | $ python ../bitbake/lib/toaster/manage.py buildslist | ||
| 735 | </literallayout> | ||
| 736 | If your Toaster database had only one build, the above | ||
| 737 | <filename>buildslist</filename> command would return something | ||
| 738 | like the following: | ||
| 739 | <literallayout class='monospaced'> | ||
| 740 | 1: qemux86 poky core-image-minimal | ||
| 741 | </literallayout> | ||
| 742 | </para> | ||
| 743 | </section> | ||
| 744 | |||
| 745 | <section id='toaster-command-builddelete'> | ||
| 746 | <title><filename>builddelete</filename></title> | ||
| 747 | |||
| 748 | <para> | ||
| 749 | The <filename>builddelete</filename> command deletes data | ||
| 750 | associated with a build. | ||
| 751 | Access the command as follows: | ||
| 752 | <literallayout class='monospaced'> | ||
| 753 | $ bitbake/lib/toaster/manage.py builddelete <replaceable>build_id</replaceable> | ||
| 754 | </literallayout> | ||
| 755 | The command deletes all the build data for the specified | ||
| 756 | <replaceable>build_id</replaceable>. | ||
| 757 | This command is useful for removing old and unused data from | ||
| 758 | the database. | ||
| 759 | </para> | ||
| 760 | |||
| 761 | <para> | ||
| 762 | Prior to running the <filename>builddelete</filename> | ||
| 763 | command, you need to get the ID associated with builds | ||
| 764 | by using the | ||
| 765 | <link linkend='toaster-command-buildslist'><filename>buildslist</filename></link> | ||
| 766 | command. | ||
| 767 | </para> | ||
| 768 | </section> | ||
| 769 | |||
| 770 | <section id='toaster-command-perf'> | ||
| 771 | <title><filename>perf</filename></title> | ||
| 772 | |||
| 773 | <para> | ||
| 774 | The <filename>perf</filename> command measures Toaster | ||
| 775 | performance. | ||
| 776 | Access the command as follows: | ||
| 777 | <literallayout class='monospaced'> | ||
| 778 | $ bitbake/lib/toaster/manage.py perf | ||
| 779 | </literallayout> | ||
| 780 | The command is a sanity check that returns page loading | ||
| 781 | times in order to identify performance problems. | ||
| 782 | </para> | ||
| 783 | </section> | ||
| 784 | |||
| 785 | <section id='toaster-command-checksettings'> | ||
| 786 | <title><filename>checksettings</filename></title> | ||
| 787 | |||
| 788 | <para> | ||
| 789 | The <filename>checksettings</filename> command verifies | ||
| 790 | existing Toaster settings. | ||
| 791 | Access the command as follows: | ||
| 792 | <literallayout class='monospaced'> | ||
| 793 | $ bitbake/lib/toaster/manage.py checksettings | ||
| 794 | </literallayout> | ||
| 795 | Toaster uses settings that are based on the | ||
| 796 | database to configure the building tasks. | ||
| 797 | The <filename>checksettings</filename> command verifies that | ||
| 798 | the database settings are valid in the sense that they have | ||
| 799 | the minimal information needed to start a build. | ||
| 800 | </para> | ||
| 801 | |||
| 802 | <para> | ||
| 803 | In order for the <filename>checksettings</filename> command | ||
| 804 | to work, the database must be correctly set up and not have | ||
| 805 | existing data. | ||
| 806 | To be sure the database is ready, you can run the following: | ||
| 807 | <literallayout class='monospaced'> | ||
| 808 | $ bitbake/lib/toaster/mana​ge.py syncdb | ||
| 809 | $ bitbake/lib/toaster/mana​ge.py migrate orm | ||
| 810 | $ bitbake/lib/toaster/mana​ge.py migrate bldcontrol | ||
| 811 | </literallayout> | ||
| 812 | After running these commands, you can run the | ||
| 813 | <filename>checksettings</filename> command. | ||
| 814 | </para> | ||
| 815 | </section> | ||
| 816 | |||
| 817 | <section id='toaster-command-runbuilds'> | ||
| 818 | <title><filename>runbuilds</filename></title> | ||
| 819 | |||
| 820 | <para> | ||
| 821 | The <filename>runbuilds</filename> command launches | ||
| 822 | scheduled builds. | ||
| 823 | Access the command as follows: | ||
| 824 | <literallayout class='monospaced'> | ||
| 825 | $ bitbake/lib/toaster/manage.py runbuilds | ||
| 826 | </literallayout> | ||
| 827 | The <filename>runbuilds</filename> command checks if | ||
| 828 | scheduled builds exist in the database and then launches them | ||
| 829 | per schedule. | ||
| 830 | The command returns after the builds start but before they | ||
| 831 | complete. | ||
| 832 | The Toaster Logging Interface records and updates the database | ||
| 833 | when the builds complete. | ||
| 834 | </para> | ||
| 835 | </section> | ||
| 836 | </section> | ||
| 837 | </chapter> | ||
diff --git a/documentation/toaster-manual/toaster-manual-setup-and-use.xml b/documentation/toaster-manual/toaster-manual-setup-and-use.xml deleted file mode 100644 index f555745923..0000000000 --- a/documentation/toaster-manual/toaster-manual-setup-and-use.xml +++ /dev/null | |||
| @@ -1,844 +0,0 @@ | |||
| 1 | <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | ||
| 2 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" | ||
| 3 | [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] > | ||
| 4 | <!--SPDX-License-Identifier: CC-BY-2.0-UK--> | ||
| 5 | |||
| 6 | <chapter id='toaster-manual-setup-and-use'> | ||
| 7 | |||
| 8 | <title>Setting Up and Using Toaster</title> | ||
| 9 | |||
| 10 | <section id='starting-toaster-for-local-development'> | ||
| 11 | <title>Starting Toaster for Local Development</title> | ||
| 12 | |||
| 13 | <para> | ||
| 14 | Once you have set up the Yocto Project and installed the | ||
| 15 | Toaster system dependencies as described in the | ||
| 16 | "<link linkend='toaster-manual-start'>Preparing to Use Toaster</link>" | ||
| 17 | chapter, you are ready to start Toaster. | ||
| 18 | </para> | ||
| 19 | |||
| 20 | <para> | ||
| 21 | Navigate to the root of your | ||
| 22 | <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink> | ||
| 23 | (e.g. <filename>poky</filename>): | ||
| 24 | <literallayout class='monospaced'> | ||
| 25 | $ cd poky | ||
| 26 | </literallayout> | ||
| 27 | Once in that directory, source the build environment script: | ||
| 28 | <literallayout class='monospaced'> | ||
| 29 | $ source oe-init-build-env | ||
| 30 | </literallayout> | ||
| 31 | Next, from the build directory (e.g. | ||
| 32 | <filename>poky/build</filename>), start Toaster using this | ||
| 33 | command: | ||
| 34 | <literallayout class='monospaced'> | ||
| 35 | $ source toaster start | ||
| 36 | </literallayout> | ||
| 37 | You can now run your builds from the command line, or with | ||
| 38 | Toaster as explained in section | ||
| 39 | "<link linkend='using-the-toaster-web-interface'>Using the Toaster Web Interface</link>". | ||
| 40 | </para> | ||
| 41 | |||
| 42 | <para> | ||
| 43 | To access the Toaster web interface, open your favorite | ||
| 44 | browser and enter the following: | ||
| 45 | <literallayout class='monospaced'> | ||
| 46 | http://127.0.0.1:8000 | ||
| 47 | </literallayout> | ||
| 48 | </para> | ||
| 49 | </section> | ||
| 50 | |||
| 51 | <section id='setting-a-different-port'> | ||
| 52 | <title>Setting a Different Port</title> | ||
| 53 | |||
| 54 | <para> | ||
| 55 | By default, Toaster starts on port 8000. | ||
| 56 | You can use the <filename>WEBPORT</filename> parameter to | ||
| 57 | set a different port. | ||
| 58 | For example, the following command sets the port to "8400": | ||
| 59 | <literallayout class='monospaced'> | ||
| 60 | $ source toaster start webport=8400 | ||
| 61 | </literallayout> | ||
| 62 | </para> | ||
| 63 | </section> | ||
| 64 | |||
| 65 | <section id='setting-up-toaster-without-a-web-server'> | ||
| 66 | <title>Setting Up Toaster Without a Web Server</title> | ||
| 67 | |||
| 68 | <para> | ||
| 69 | You can start a Toaster environment without starting its | ||
| 70 | web server. This is useful for the following: | ||
| 71 | <itemizedlist> | ||
| 72 | <listitem><para> | ||
| 73 | Capturing a command-line build's statistics into | ||
| 74 | the Toaster database for examination later. | ||
| 75 | </para></listitem> | ||
| 76 | <listitem><para> | ||
| 77 | Capturing a command-line build's statistics when | ||
| 78 | the Toaster server is already running. | ||
| 79 | </para></listitem> | ||
| 80 | <listitem><para> | ||
| 81 | Having one instance of the Toaster web server | ||
| 82 | track and capture multiple command-line builds, | ||
| 83 | where each build is started in its own "noweb" | ||
| 84 | Toaster environment. | ||
| 85 | </para></listitem> | ||
| 86 | </itemizedlist> | ||
| 87 | The following commands show how to start a Toaster environment | ||
| 88 | without starting its web server, perform BitBake operations, | ||
| 89 | and then shut down the Toaster environment. | ||
| 90 | Once the build is complete, you can close the Toaster environment. | ||
| 91 | Before closing the environment, however, you should allow a few | ||
| 92 | minutes to ensure the complete transfer of its BitBake build | ||
| 93 | statistics to the Toaster database. | ||
| 94 | If you have a separate Toaster web server instance running, you | ||
| 95 | can watch this command-line build's progress and examine the | ||
| 96 | results as soon as they are posted: | ||
| 97 | <literallayout class='monospaced'> | ||
| 98 | $ source toaster start noweb | ||
| 99 | $ bitbake <replaceable>target</replaceable> | ||
| 100 | $ source toaster stop | ||
| 101 | </literallayout> | ||
| 102 | </para> | ||
| 103 | </section> | ||
| 104 | |||
| 105 | <section id='setting-up-toaster-without-a-build-server'> | ||
| 106 | <title>Setting Up Toaster Without a Build Server</title> | ||
| 107 | |||
| 108 | <para> | ||
| 109 | You can start a Toaster environment with the | ||
| 110 | "New Projects" feature disabled. | ||
| 111 | Doing so is useful for the following: | ||
| 112 | <itemizedlist> | ||
| 113 | <listitem><para> | ||
| 114 | Sharing your build results over the web server while | ||
| 115 | blocking others from starting builds on your host. | ||
| 116 | </para></listitem> | ||
| 117 | <listitem><para> | ||
| 118 | Allowing only local command-line builds to be captured | ||
| 119 | into the Toaster database. | ||
| 120 | </para></listitem> | ||
| 121 | </itemizedlist> | ||
| 122 | Use the following command to set up Toaster without a | ||
| 123 | build server: | ||
| 124 | <literallayout class='monospaced'> | ||
| 125 | $ source toaster start nobuild webport=<replaceable>port</replaceable> | ||
| 126 | </literallayout> | ||
| 127 | </para> | ||
| 128 | </section> | ||
| 129 | |||
| 130 | <section id='setting-up-external-access'> | ||
| 131 | <title>Setting up External Access</title> | ||
| 132 | |||
| 133 | <para> | ||
| 134 | By default, Toaster binds to the loop back address | ||
| 135 | (i.e. localhost), which does not allow access from | ||
| 136 | external hosts. To allow external access, use the | ||
| 137 | <filename>WEBPORT</filename> parameter to open an | ||
| 138 | address that connects to the network, specifically the | ||
| 139 | IP address that your NIC uses to connect to the network. | ||
| 140 | You can also bind to all IP addresses the computer | ||
| 141 | supports by using the shortcut | ||
| 142 | "0.0.0.0:<replaceable>port</replaceable>". | ||
| 143 | </para> | ||
| 144 | |||
| 145 | <para> | ||
| 146 | The following example binds to all IP addresses on the | ||
| 147 | host: | ||
| 148 | <literallayout class='monospaced'> | ||
| 149 | $ source toaster start webport=0.0.0.0:8400 | ||
| 150 | </literallayout> | ||
| 151 | This example binds to a specific IP address on the host's | ||
| 152 | NIC: | ||
| 153 | <literallayout class='monospaced'> | ||
| 154 | $ source toaster start webport=192.168.1.1:8400 | ||
| 155 | </literallayout> | ||
| 156 | </para> | ||
| 157 | </section> | ||
| 158 | |||
| 159 | <section id='the-directory-for-cloning-layers'> | ||
| 160 | <title>The Directory for Cloning Layers</title> | ||
| 161 | |||
| 162 | <para> | ||
| 163 | Toaster creates a <filename>_toaster_clones</filename> | ||
| 164 | directory inside your Source Directory | ||
| 165 | (i.e. <filename>poky</filename>) to clone any layers | ||
| 166 | needed for your builds. | ||
| 167 | </para> | ||
| 168 | |||
| 169 | <para> | ||
| 170 | Alternatively, if you would like all of your Toaster related | ||
| 171 | files and directories to be in a particular location other than | ||
| 172 | the default, you can set the <filename>TOASTER_DIR</filename> | ||
| 173 | environment variable, which takes precedence over your current | ||
| 174 | working directory. | ||
| 175 | Setting this environment variable causes Toaster to create and use | ||
| 176 | <filename>$TOASTER_DIR./_toaster_clones</filename>. | ||
| 177 | </para> | ||
| 178 | </section> | ||
| 179 | |||
| 180 | <section id='toaster-the-build-directory'> | ||
| 181 | <title>The Build Directory</title> | ||
| 182 | |||
| 183 | <para> | ||
| 184 | Toaster creates a build directory within your Source | ||
| 185 | Directory (e.g. <filename>poky</filename>) to execute | ||
| 186 | the builds. | ||
| 187 | </para> | ||
| 188 | |||
| 189 | <para> | ||
| 190 | Alternatively, if you would like all of your Toaster related files | ||
| 191 | and directories to be in a particular location, you can set | ||
| 192 | the <filename>TOASTER_DIR</filename> environment variable, | ||
| 193 | which takes precedence over your current working directory. | ||
| 194 | Setting this environment variable causes Toaster to use | ||
| 195 | <filename>$TOASTER_DIR/build</filename> as the build directory. | ||
| 196 | </para> | ||
| 197 | </section> | ||
| 198 | |||
| 199 | <section id='toaster-creating-a-django-super-user'> | ||
| 200 | <title>Creating a Django Superuser</title> | ||
| 201 | |||
| 202 | <para> | ||
| 203 | Toaster is built on the | ||
| 204 | <ulink url='https://www.djangoproject.com/'>Django framework</ulink>. | ||
| 205 | Django provides an administration interface you can use | ||
| 206 | to edit Toaster configuration parameters. | ||
| 207 | </para> | ||
| 208 | |||
| 209 | <para> | ||
| 210 | To access the Django administration interface, you must | ||
| 211 | create a superuser by following these steps: | ||
| 212 | <orderedlist> | ||
| 213 | <listitem><para> | ||
| 214 | If you used <filename>pip3</filename>, which is | ||
| 215 | recommended, to set up the Toaster system dependencies, | ||
| 216 | you need be sure the local user path is in your | ||
| 217 | <filename>PATH</filename> list. | ||
| 218 | To append the pip3 local user path, use the following | ||
| 219 | command: | ||
| 220 | <literallayout class='monospaced'> | ||
| 221 | $ export PATH=$PATH:$HOME/.local/bin | ||
| 222 | </literallayout> | ||
| 223 | </para></listitem> | ||
| 224 | <listitem><para> | ||
| 225 | From the directory containing the Toaster database, | ||
| 226 | which by default is the | ||
| 227 | <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>, | ||
| 228 | invoke the <filename>createsuperuser</filename> command | ||
| 229 | from <filename>manage.py</filename>: | ||
| 230 | <literallayout class='monospaced'> | ||
| 231 | $ cd ~/poky/build | ||
| 232 | $ ../bitbake/lib/toaster/manage.py createsuperuser | ||
| 233 | </literallayout> | ||
| 234 | </para></listitem> | ||
| 235 | <listitem><para> | ||
| 236 | Django prompts you for the username, which you need to | ||
| 237 | provide. | ||
| 238 | </para></listitem> | ||
| 239 | <listitem><para> | ||
| 240 | Django prompts you for an email address, which is | ||
| 241 | optional. | ||
| 242 | </para></listitem> | ||
| 243 | <listitem><para> | ||
| 244 | Django prompts you for a password, which you must provide. | ||
| 245 | </para></listitem> | ||
| 246 | <listitem><para> | ||
| 247 | Django prompts you to re-enter your password for verification. | ||
| 248 | </para></listitem> | ||
| 249 | </orderedlist> | ||
| 250 | After completing these steps, the following confirmation message | ||
| 251 | appears: | ||
| 252 | <literallayout class='monospaced'> | ||
| 253 | Superuser created successfully. | ||
| 254 | </literallayout> | ||
| 255 | </para> | ||
| 256 | |||
| 257 | <para> | ||
| 258 | Creating a superuser allows you to access the Django administration | ||
| 259 | interface through a browser. | ||
| 260 | The URL for this interface is the same as the URL used for the | ||
| 261 | Toaster instance with "/admin" on the end. | ||
| 262 | For example, if you are running Toaster locally, use the | ||
| 263 | following URL: | ||
| 264 | <literallayout class='monospaced'> | ||
| 265 | http://127.0.0.1:8000/admin | ||
| 266 | </literallayout> | ||
| 267 | You can use the Django administration interface to set Toaster | ||
| 268 | configuration parameters such as the build directory, layer sources, | ||
| 269 | default variable values, and BitBake versions. | ||
| 270 | </para> | ||
| 271 | </section> | ||
| 272 | |||
| 273 | <section id='toaster-setting-up-a-production-instance-of-toaster'> | ||
| 274 | <title>Setting Up a Production Instance of Toaster</title> | ||
| 275 | |||
| 276 | <para> | ||
| 277 | You can use a production instance of Toaster to share the | ||
| 278 | Toaster instance with remote users, multiple users, or both. | ||
| 279 | The production instance is also the setup that can handle | ||
| 280 | heavier loads on the web service. | ||
| 281 | Use the instructions in the following sections to set up | ||
| 282 | Toaster to run builds through the Toaster web interface. | ||
| 283 | </para> | ||
| 284 | |||
| 285 | <section id='toaster-production-instance-requirements'> | ||
| 286 | <title>Requirements</title> | ||
| 287 | |||
| 288 | <para> | ||
| 289 | Be sure you meet the following requirements: | ||
| 290 | <note> | ||
| 291 | You must comply with all Apache, | ||
| 292 | <filename>mod-wsgi</filename>, and Mysql requirements. | ||
| 293 | </note> | ||
| 294 | <itemizedlist> | ||
| 295 | <listitem><para> | ||
| 296 | Have all the build requirements as described in the | ||
| 297 | "<link linkend='toaster-manual-start'>Preparing to Use Toaster</link>" | ||
| 298 | chapter. | ||
| 299 | </para></listitem> | ||
| 300 | <listitem><para> | ||
| 301 | Have an Apache webserver. | ||
| 302 | </para></listitem> | ||
| 303 | <listitem><para> | ||
| 304 | Have <filename>mod-wsgi</filename> for the Apache | ||
| 305 | webserver. | ||
| 306 | </para></listitem> | ||
| 307 | <listitem><para> | ||
| 308 | Use the Mysql database server. | ||
| 309 | </para></listitem> | ||
| 310 | <listitem><para> | ||
| 311 | If you are using Ubuntu 16.04, run the following: | ||
| 312 | <literallayout class='monospaced'> | ||
| 313 | $ sudo apt-get install apache2 libapache2-mod-wsgi-py3 mysql-server python3-pip libmysqlclient-dev | ||
| 314 | </literallayout> | ||
| 315 | </para></listitem> | ||
| 316 | <listitem><para> | ||
| 317 | If you are using Fedora 24 or a RedHat distribution, run | ||
| 318 | the following: | ||
| 319 | <literallayout class='monospaced'> | ||
| 320 | $ sudo dnf install httpd python3-mod_wsgi python3-pip mariadb-server mariadb-devel python3-devel | ||
| 321 | </literallayout> | ||
| 322 | </para></listitem> | ||
| 323 | <listitem><para> | ||
| 324 | If you are using openSUSE Leap 42.1, run | ||
| 325 | the following: | ||
| 326 | <literallayout class='monospaced'> | ||
| 327 | $ sudo zypper install apache2 apache2-mod_wsgi-python3 python3-pip mariadb mariadb-client python3-devel | ||
| 328 | </literallayout> | ||
| 329 | </para></listitem> | ||
| 330 | </itemizedlist> | ||
| 331 | </para> | ||
| 332 | </section> | ||
| 333 | |||
| 334 | <section id='toaster-installation-steps'> | ||
| 335 | <title>Installation</title> | ||
| 336 | |||
| 337 | <para> | ||
| 338 | Perform the following steps to install Toaster: | ||
| 339 | <orderedlist> | ||
| 340 | <listitem><para> | ||
| 341 | Create toaster user and set its home directory to | ||
| 342 | <filename>/var/www/toaster</filename>: | ||
| 343 | <literallayout class='monospaced'> | ||
| 344 | $ sudo /usr/sbin/useradd toaster -md /var/www/toaster -s /bin/false | ||
| 345 | $ sudo su - toaster -s /bin/bash | ||
| 346 | </literallayout> | ||
| 347 | </para></listitem> | ||
| 348 | <listitem><para> | ||
| 349 | Checkout a copy of <filename>poky</filename> | ||
| 350 | into the web server directory. | ||
| 351 | You will be using <filename>/var/www/toaster</filename>: | ||
| 352 | <literallayout class='monospaced'> | ||
| 353 | $ git clone git://git.yoctoproject.org/poky | ||
| 354 | $ git checkout &DISTRO_NAME_NO_CAP; | ||
| 355 | </literallayout> | ||
| 356 | </para></listitem> | ||
| 357 | <listitem><para> | ||
| 358 | Install Toaster | ||
| 359 | dependencies using the --user flag which | ||
| 360 | keeps the Python packages | ||
| 361 | isolated from your system-provided packages: | ||
| 362 | <literallayout class='monospaced'> | ||
| 363 | $ cd /var/www/toaster/ | ||
| 364 | $ pip3 install --user -r ./poky/bitbake/toaster-requirements.txt | ||
| 365 | $ pip3 install --user mysqlclient | ||
| 366 | </literallayout> | ||
| 367 | <note> | ||
| 368 | Isolating these packages is not required but is | ||
| 369 | recommended. | ||
| 370 | Alternatively, you can use your operating system's | ||
| 371 | package manager to install the packages. | ||
| 372 | </note> | ||
| 373 | </para></listitem> | ||
| 374 | <listitem><para> | ||
| 375 | Configure Toaster by editing | ||
| 376 | <filename>/var/www/toaster/poky/bitbake/lib/toaster/toastermain/settings.py</filename> | ||
| 377 | as follows: | ||
| 378 | <itemizedlist> | ||
| 379 | <listitem><para> | ||
| 380 | Edit the | ||
| 381 | <ulink url='https://docs.djangoproject.com/en/1.11/ref/settings/#databases'>DATABASES</ulink> | ||
| 382 | settings: | ||
| 383 | <literallayout class='monospaced'> | ||
| 384 | DATABASES = { | ||
| 385 | 'default': { | ||
| 386 | 'ENGINE': 'django.db.backends.mysql', | ||
| 387 | 'NAME': 'toaster_data', | ||
| 388 | 'USER': 'toaster', | ||
| 389 | 'PASSWORD': 'yourpasswordhere', | ||
| 390 | 'HOST': 'localhost', | ||
| 391 | 'PORT': '3306', | ||
| 392 | } | ||
| 393 | } | ||
| 394 | </literallayout> | ||
| 395 | </para></listitem> | ||
| 396 | <listitem><para> | ||
| 397 | Edit the | ||
| 398 | <ulink url='https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-SECRET_KEY'>SECRET_KEY</ulink>: | ||
| 399 | <literallayout class='monospaced'> | ||
| 400 | SECRET_KEY = '<replaceable>your_secret_key</replaceable>' | ||
| 401 | </literallayout> | ||
| 402 | </para></listitem> | ||
| 403 | <listitem><para> | ||
| 404 | Edit the | ||
| 405 | <ulink url='https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-STATIC_ROOT'>STATIC_ROOT</ulink>: | ||
| 406 | <literallayout class='monospaced'> | ||
| 407 | STATIC_ROOT = '/var/www/toaster/static_files/' | ||
| 408 | </literallayout> | ||
| 409 | </para></listitem> | ||
| 410 | </itemizedlist> | ||
| 411 | </para></listitem> | ||
| 412 | <listitem><para> | ||
| 413 | Add the database and user to the <filename>mysql</filename> | ||
| 414 | server defined earlier: | ||
| 415 | <literallayout class='monospaced'> | ||
| 416 | $ mysql -u root -p | ||
| 417 | mysql> CREATE DATABASE toaster_data; | ||
| 418 | mysql> CREATE USER 'toaster'@'localhost' identified by 'yourpasswordhere'; | ||
| 419 | mysql> GRANT all on toaster_data.* to 'toaster'@'localhost'; | ||
| 420 | mysql> quit | ||
| 421 | </literallayout> | ||
| 422 | </para></listitem> | ||
| 423 | <listitem><para> | ||
| 424 | Get Toaster to create the database schema, | ||
| 425 | default data, and gather the statically-served files: | ||
| 426 | <literallayout class='monospaced'> | ||
| 427 | $ cd /var/www/toaster/poky/ | ||
| 428 | $ ./bitbake/lib/toaster/manage.py migrate | ||
| 429 | $ TOASTER_DIR=`pwd` TEMPLATECONF='poky' \ | ||
| 430 | ./bitbake/lib/toaster/manage.py checksettings | ||
| 431 | $ ./bitbake/lib/toaster/manage.py collectstatic | ||
| 432 | </literallayout> | ||
| 433 | In the previous example, from the <filename>poky</filename> | ||
| 434 | directory, the <filename>migrate</filename> command | ||
| 435 | ensures the database schema changes have propagated | ||
| 436 | correctly (i.e. migrations). | ||
| 437 | The next line sets the Toaster root directory | ||
| 438 | <filename>TOASTER_DIR</filename> and the location | ||
| 439 | of the Toaster configuration file | ||
| 440 | <filename>TOASTER_CONF</filename>, which is relative to | ||
| 441 | <filename>TOASTER_DIR</filename>. | ||
| 442 | The <filename>TEMPLATECONF</filename> value reflects the | ||
| 443 | contents of <filename>poky/.templateconf</filename>, and | ||
| 444 | by default, should include the string "poky". | ||
| 445 | For more information on the Toaster configuration | ||
| 446 | file, see the | ||
| 447 | "<link linkend='configuring-toaster'>Configuring Toaster</link>" | ||
| 448 | section.</para> | ||
| 449 | |||
| 450 | <para>This line also runs the <filename>checksettings</filename> | ||
| 451 | command, which configures the location of the Toaster | ||
| 452 | <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>. | ||
| 453 | The Toaster root directory <filename>TOASTER_DIR</filename> | ||
| 454 | determines where the Toaster build directory | ||
| 455 | is created on the file system. | ||
| 456 | In the example above, | ||
| 457 | <filename>TOASTER_DIR</filename> is set as follows: | ||
| 458 | <literallayout class="monospaced"> | ||
| 459 | /var/www/toaster/poky | ||
| 460 | </literallayout> | ||
| 461 | This setting causes the Toaster build directory to be: | ||
| 462 | <literallayout class="monospaced"> | ||
| 463 | /var/www/toaster/poky/build | ||
| 464 | </literallayout></para> | ||
| 465 | |||
| 466 | <para>Finally, the <filename>collectstatic</filename> command | ||
| 467 | is a Django framework command that collects all the | ||
| 468 | statically served files into a designated directory to | ||
| 469 | be served up by the Apache web server as defined by | ||
| 470 | <filename>STATIC_ROOT</filename>. | ||
| 471 | </para></listitem> | ||
| 472 | <listitem><para> | ||
| 473 | Test and/or use the Mysql integration with Toaster's | ||
| 474 | Django web server. | ||
| 475 | At this point, you can start up the normal Toaster | ||
| 476 | Django web server with the Toaster database in Mysql. | ||
| 477 | You can use this web server to confirm that the database | ||
| 478 | migration and data population from the Layer Index is | ||
| 479 | complete.</para> | ||
| 480 | |||
| 481 | <para>To start the default Toaster Django web server with | ||
| 482 | the Toaster database now in Mysql, use the standard | ||
| 483 | start commands: | ||
| 484 | <literallayout class='monospaced'> | ||
| 485 | $ source oe-init-build-env | ||
| 486 | $ source toaster start | ||
| 487 | </literallayout> | ||
| 488 | Additionally, if Django is sufficient for your requirements, | ||
| 489 | you can use it for your release system and migrate later | ||
| 490 | to Apache as your requirements change. | ||
| 491 | </para></listitem> | ||
| 492 | <listitem><para> | ||
| 493 | Add an Apache configuration file for Toaster to your Apache web | ||
| 494 | server's configuration directory. | ||
| 495 | If you are using Ubuntu or Debian, put the file here: | ||
| 496 | <literallayout class='monospaced'> | ||
| 497 | /etc/apache2/conf-available/toaster.conf | ||
| 498 | </literallayout> | ||
| 499 | If you are using Fedora or RedHat, put it here: | ||
| 500 | <literallayout class='monospaced'> | ||
| 501 | /etc/httpd/conf.d/toaster.conf | ||
| 502 | </literallayout> | ||
| 503 | If you are using OpenSUSE, put it here: | ||
| 504 | <literallayout class='monospaced'> | ||
| 505 | /etc/apache2/conf.d/toaster.conf | ||
| 506 | </literallayout> | ||
| 507 | Following is a sample Apache configuration for Toaster | ||
| 508 | you can follow: | ||
| 509 | <literallayout class='monospaced'> | ||
| 510 | Alias /static /var/www/toaster/static_files | ||
| 511 | <Directory /var/www/toaster/static_files> | ||
| 512 | <IfModule mod_access_compat.c> | ||
| 513 | Order allow,deny | ||
| 514 | Allow from all | ||
| 515 | </IfModule> | ||
| 516 | <IfModule !mod_access_compat.c> | ||
| 517 | Require all granted | ||
| 518 | </IfModule> | ||
| 519 | </Directory> | ||
| 520 | |||
| 521 | <Directory /var/www/toaster/poky/bitbake/lib/toaster/toastermain> | ||
| 522 | <Files "wsgi.py"> | ||
| 523 | Require all granted | ||
| 524 | </Files> | ||
| 525 | </Directory> | ||
| 526 | |||
| 527 | WSGIDaemonProcess toaster_wsgi python-path=/var/www/toaster/poky/bitbake/lib/toaster:/var/www/toaster/.local/lib/python3.4/site-packages | ||
| 528 | |||
| 529 | WSGIScriptAlias / "/var/www/toaster/poky/bitbake/lib/toaster/toastermain/wsgi.py" | ||
| 530 | <Location /> | ||
| 531 | WSGIProcessGroup toaster_wsgi | ||
| 532 | </Location> | ||
| 533 | </literallayout> | ||
| 534 | If you are using Ubuntu or Debian, | ||
| 535 | you will need to enable the config and module for Apache: | ||
| 536 | <literallayout class='monospaced'> | ||
| 537 | $ sudo a2enmod wsgi | ||
| 538 | $ sudo a2enconf toaster | ||
| 539 | $ chmod +x bitbake/lib/toaster/toastermain/wsgi.py | ||
| 540 | </literallayout> | ||
| 541 | Finally, restart Apache to make sure all new configuration | ||
| 542 | is loaded. | ||
| 543 | For Ubuntu, Debian, and OpenSUSE use: | ||
| 544 | <literallayout class='monospaced'> | ||
| 545 | $ sudo service apache2 restart | ||
| 546 | </literallayout> | ||
| 547 | For Fedora and RedHat use: | ||
| 548 | <literallayout class='monospaced'> | ||
| 549 | $ sudo service httpd restart | ||
| 550 | </literallayout> | ||
| 551 | </para></listitem> | ||
| 552 | <listitem><para> | ||
| 553 | Prepare the systemd service to run Toaster builds. | ||
| 554 | Here is a sample configuration file for the service: | ||
| 555 | <literallayout class='monospaced'> | ||
| 556 | [Unit] | ||
| 557 | Description=Toaster runbuilds | ||
| 558 | |||
| 559 | [Service] | ||
| 560 | Type=forking | ||
| 561 | User=toaster | ||
| 562 | ExecStart=/usr/bin/screen -d -m -S runbuilds /var/www/toaster/poky/bitbake/lib/toaster/runbuilds-service.sh start | ||
| 563 | ExecStop=/usr/bin/screen -S runbuilds -X quit | ||
| 564 | WorkingDirectory=/var/www/toaster/poky | ||
| 565 | |||
| 566 | [Install] | ||
| 567 | WantedBy=multi-user.target | ||
| 568 | </literallayout> | ||
| 569 | Prepare the <filename>runbuilds-service.sh</filename> | ||
| 570 | script that you need to place in the | ||
| 571 | <filename>/var/www/toaster/poky/bitbake/lib/toaster/</filename> | ||
| 572 | directory by setting up executable permissions: | ||
| 573 | <literallayout class='monospaced'> | ||
| 574 | #!/bin/bash | ||
| 575 | |||
| 576 | #export http_proxy=http://proxy.host.com:8080 | ||
| 577 | #export https_proxy=http://proxy.host.com:8080 | ||
| 578 | #export GIT_PROXY_COMMAND=$HOME/bin/gitproxy | ||
| 579 | |||
| 580 | cd ~/poky/ | ||
| 581 | source ./oe-init-build-env build | ||
| 582 | source ../bitbake/bin/toaster $1 noweb | ||
| 583 | [ "$1" == 'start' ] && /bin/bash | ||
| 584 | </literallayout> | ||
| 585 | </para></listitem> | ||
| 586 | <listitem><para> | ||
| 587 | Run the service: | ||
| 588 | <literallayout class='monospaced'> | ||
| 589 | # service runbuilds start | ||
| 590 | </literallayout> | ||
| 591 | Since the service is running in a detached screen | ||
| 592 | session, you can attach to it using this command: | ||
| 593 | <literallayout class='monospaced'> | ||
| 594 | $ sudo su - toaster | ||
| 595 | $ screen -rS runbuilds | ||
| 596 | </literallayout> | ||
| 597 | You can detach from the service again using "Ctrl-a" | ||
| 598 | followed by "d" key combination. | ||
| 599 | </para></listitem> | ||
| 600 | </orderedlist> | ||
| 601 | You can now open up a browser and start using Toaster. | ||
| 602 | </para> | ||
| 603 | </section> | ||
| 604 | </section> | ||
| 605 | |||
| 606 | <section id='using-the-toaster-web-interface'> | ||
| 607 | <title>Using the Toaster Web Interface</title> | ||
| 608 | |||
| 609 | <para> | ||
| 610 | The Toaster web interface allows you to do the following: | ||
| 611 | <itemizedlist> | ||
| 612 | <listitem><para> | ||
| 613 | Browse published layers in the | ||
| 614 | <ulink url='http://layers.openembedded.org'>OpenEmbedded Layer Index</ulink> | ||
| 615 | that are available for your selected version of the build | ||
| 616 | system. | ||
| 617 | </para></listitem> | ||
| 618 | <listitem><para> | ||
| 619 | Import your own layers for building. | ||
| 620 | </para></listitem> | ||
| 621 | <listitem><para> | ||
| 622 | Add and remove layers from your configuration. | ||
| 623 | </para></listitem> | ||
| 624 | <listitem><para> | ||
| 625 | Set configuration variables. | ||
| 626 | </para></listitem> | ||
| 627 | <listitem><para> | ||
| 628 | Select a target or multiple targets to build. | ||
| 629 | </para></listitem> | ||
| 630 | <listitem><para> | ||
| 631 | Start your builds. | ||
| 632 | </para></listitem> | ||
| 633 | <listitem><para> | ||
| 634 | See what was built (recipes and packages) and what | ||
| 635 | packages were installed into your final image. | ||
| 636 | </para></listitem> | ||
| 637 | <listitem><para> | ||
| 638 | Browse the directory structure of your image. | ||
| 639 | </para></listitem> | ||
| 640 | <listitem><para> | ||
| 641 | See the value of all variables in your build configuration, | ||
| 642 | and which files set each value. | ||
| 643 | </para></listitem> | ||
| 644 | <listitem><para> | ||
| 645 | Examine error, warning and trace messages to aid in | ||
| 646 | debugging. | ||
| 647 | </para></listitem> | ||
| 648 | <listitem><para> | ||
| 649 | See information about the BitBake tasks executed and | ||
| 650 | reused during your build, including those that used | ||
| 651 | shared state. | ||
| 652 | </para></listitem> | ||
| 653 | <listitem><para> | ||
| 654 | See dependency relationships between recipes, packages | ||
| 655 | and tasks. | ||
| 656 | </para></listitem> | ||
| 657 | <listitem><para> | ||
| 658 | See performance information such as build time, task time, | ||
| 659 | CPU usage, and disk I/O. | ||
| 660 | </para></listitem> | ||
| 661 | </itemizedlist> | ||
| 662 | </para> | ||
| 663 | |||
| 664 | <section id='web-interface-videos'> | ||
| 665 | <title>Toaster Web Interface Videos</title> | ||
| 666 | |||
| 667 | <para> | ||
| 668 | Following are several videos that show how to use the Toaster GUI: | ||
| 669 | <itemizedlist> | ||
| 670 | <listitem><para><emphasis>Build Configuration:</emphasis> | ||
| 671 | This | ||
| 672 | <ulink url='https://www.youtube.com/watch?v=qYgDZ8YzV6w'>video</ulink> | ||
| 673 | overviews and demonstrates build configuration for Toaster. | ||
| 674 | </para></listitem> | ||
| 675 | <listitem><para><emphasis>Build Custom Layers:</emphasis> | ||
| 676 | This | ||
| 677 | <ulink url='https://www.youtube.com/watch?v=QJzaE_XjX5c'>video</ulink> | ||
| 678 | shows you how to build custom layers that are used with | ||
| 679 | Toaster. | ||
| 680 | </para></listitem> | ||
| 681 | <listitem><para><emphasis>Toaster Homepage and Table Controls:</emphasis> | ||
| 682 | This | ||
| 683 | <ulink url='https://www.youtube.com/watch?v=QEARDnrR1Xw'>video</ulink> | ||
| 684 | goes over the Toaster entry page, and provides | ||
| 685 | an overview of the data manipulation capabilities of | ||
| 686 | Toaster, which include search, sorting and filtering by | ||
| 687 | different criteria. | ||
| 688 | </para></listitem> | ||
| 689 | <listitem><para><emphasis>Build Dashboard:</emphasis> | ||
| 690 | This | ||
| 691 | <ulink url='https://www.youtube.com/watch?v=KKqHYcnp2gE'>video</ulink> | ||
| 692 | shows you the build dashboard, a page providing an | ||
| 693 | overview of the information available for a selected build. | ||
| 694 | </para></listitem> | ||
| 695 | <listitem><para><emphasis>Image Information:</emphasis> | ||
| 696 | This | ||
| 697 | <ulink url='https://www.youtube.com/watch?v=XqYGFsmA0Rw'>video</ulink> | ||
| 698 | walks through the information Toaster provides | ||
| 699 | about images: packages installed and root file system. | ||
| 700 | </para></listitem> | ||
| 701 | <listitem><para><emphasis>Configuration:</emphasis> | ||
| 702 | This | ||
| 703 | <ulink url='https://www.youtube.com/watch?v=UW-j-T2TzIg'>video</ulink> | ||
| 704 | provides Toaster build configuration information. | ||
| 705 | </para></listitem> | ||
| 706 | <listitem><para><emphasis>Tasks:</emphasis> | ||
| 707 | This | ||
| 708 | <ulink url='https://www.youtube.com/watch?v=D4-9vGSxQtw'>video</ulink> | ||
| 709 | shows the information Toaster provides about the | ||
| 710 | tasks run by the build system. | ||
| 711 | </para></listitem> | ||
| 712 | <listitem><para><emphasis>Recipes and Packages Built:</emphasis> | ||
| 713 | This | ||
| 714 | <ulink url='https://www.youtube.com/watch?v=x-6dx4huNnw'>video</ulink> | ||
| 715 | shows the information Toaster provides about recipes | ||
| 716 | and packages built. | ||
| 717 | </para></listitem> | ||
| 718 | <listitem><para><emphasis>Performance Data:</emphasis> | ||
| 719 | This | ||
| 720 | <ulink url='https://www.youtube.com/watch?v=qWGMrJoqusQ'>video</ulink> | ||
| 721 | shows the build performance data provided by | ||
| 722 | Toaster. | ||
| 723 | </para></listitem> | ||
| 724 | </itemizedlist> | ||
| 725 | </para> | ||
| 726 | </section> | ||
| 727 | |||
| 728 | <section id='a-note-on-the-local-yocto-project-release'> | ||
| 729 | <title>Additional Information About the Local Yocto Project Release</title> | ||
| 730 | |||
| 731 | <para> | ||
| 732 | This section only applies if you have set up Toaster | ||
| 733 | for local development, as explained in the | ||
| 734 | "<link linkend='starting-toaster-for-local-development'>Starting Toaster for Local Development</link>" | ||
| 735 | section. | ||
| 736 | </para> | ||
| 737 | |||
| 738 | <para> | ||
| 739 | When you create a project in Toaster, you will be asked to | ||
| 740 | provide a name and to select a Yocto Project release. | ||
| 741 | One of the release options you will find is called | ||
| 742 | "Local Yocto Project". | ||
| 743 | <imagedata fileref="figures/new-project.png" align="center" width="9in" /> | ||
| 744 | </para> | ||
| 745 | |||
| 746 | <para> | ||
| 747 | When you select the "Local Yocto Project" release, Toaster | ||
| 748 | will run your builds using the local Yocto | ||
| 749 | Project clone you have in your computer: the same clone | ||
| 750 | you are using to run Toaster. | ||
| 751 | Unless you manually update | ||
| 752 | this clone, your builds will always use the same Git revision. | ||
| 753 | </para> | ||
| 754 | |||
| 755 | <para> | ||
| 756 | If you select any of the other release options, Toaster | ||
| 757 | will fetch the tip of your selected release from the upstream | ||
| 758 | <ulink url='https://git.yoctoproject.org'>Yocto Project repository</ulink> | ||
| 759 | every time you run a build. | ||
| 760 | Fetching this tip effectively | ||
| 761 | means that if your selected release is updated upstream, the | ||
| 762 | Git revision you are using for your builds will change. | ||
| 763 | If you are doing development locally, you might not want this | ||
| 764 | change to happen. | ||
| 765 | In that case, the "Local Yocto Project" | ||
| 766 | release might be the right choice. | ||
| 767 | </para> | ||
| 768 | |||
| 769 | <para> | ||
| 770 | However, the "Local Yocto Project" release | ||
| 771 | will not provide you with any compatible layers, other than the | ||
| 772 | three core layers that come with the Yocto Project: | ||
| 773 | <itemizedlist> | ||
| 774 | <listitem><para> | ||
| 775 | <ulink url='http://layers.openembedded.org/layerindex/branch/master/layer/openembedded-core/'>openembedded-core</ulink> | ||
| 776 | </para></listitem> | ||
| 777 | <listitem><para> | ||
| 778 | <ulink url='http://layers.openembedded.org/layerindex/branch/master/layer/meta-poky/'>meta-poky</ulink> | ||
| 779 | </para></listitem> | ||
| 780 | <listitem><para> | ||
| 781 | <ulink url='http://layers.openembedded.org/layerindex/branch/master/layer/meta-yocto-bsp/'>meta-yocto-bsp</ulink> | ||
| 782 | </para></listitem> | ||
| 783 | </itemizedlist> | ||
| 784 | <imagedata fileref="figures/compatible-layers.png" align="center" width="9in" /> | ||
| 785 | </para> | ||
| 786 | |||
| 787 | <para> | ||
| 788 | If you want to build any other layers, you will need to | ||
| 789 | manually import them into your Toaster project, using the | ||
| 790 | "Import layer" page. | ||
| 791 | <imagedata fileref="figures/import-layer.png" align="center" width="9in" /> | ||
| 792 | </para> | ||
| 793 | |||
| 794 | </section> | ||
| 795 | |||
| 796 | <section id='toaster-web-interface-preferred-version'> | ||
| 797 | <title>Building a Specific Recipe Given Multiple Versions</title> | ||
| 798 | |||
| 799 | <para> | ||
| 800 | Occasionally, a layer might provide more than one version of | ||
| 801 | the same recipe. | ||
| 802 | For example, the <filename>openembedded-core</filename> layer | ||
| 803 | provides two versions of the <filename>bash</filename> recipe | ||
| 804 | (i.e. 3.2.48 and 4.3.30-r0) and two versions of the | ||
| 805 | <filename>which</filename> recipe (i.e. 2.21 and 2.18). | ||
| 806 | The following figure shows this exact scenario: | ||
| 807 | <imagedata fileref="figures/bash-oecore.png" align="center" width="9in" depth="6in" /> | ||
| 808 | </para> | ||
| 809 | |||
| 810 | <para> | ||
| 811 | By default, the OpenEmbedded build system builds one of the | ||
| 812 | two recipes. | ||
| 813 | For the <filename>bash</filename> case, version 4.3.30-r0 is | ||
| 814 | built by default. | ||
| 815 | Unfortunately, Toaster as it exists, is not able to override | ||
| 816 | the default recipe version. | ||
| 817 | If you would like to build bash 3.2.48, you need to set the | ||
| 818 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_VERSION'><filename>PREFERRED_VERSION</filename></ulink> | ||
| 819 | variable. | ||
| 820 | You can do so from Toaster, using the "Add variable" form, | ||
| 821 | which is available in the "BitBake variables" page of the | ||
| 822 | project configuration section as shown in the following screen: | ||
| 823 | <imagedata fileref="figures/add-variable.png" align="center" width="9in" depth="6in" /> | ||
| 824 | </para> | ||
| 825 | |||
| 826 | <para> | ||
| 827 | To specify <filename>bash</filename> 3.2.48 as the version to build, | ||
| 828 | enter "PREFERRED_VERSION_bash" in the "Variable" field, and "3.2.48" | ||
| 829 | in the "Value" field. | ||
| 830 | Next, click the "Add variable" button: | ||
| 831 | <imagedata fileref="figures/set-variable.png" align="center" width="9in" depth="6in" /> | ||
| 832 | </para> | ||
| 833 | |||
| 834 | <para> | ||
| 835 | After clicking the "Add variable" button, the settings for | ||
| 836 | <filename>PREFERRED_VERSION</filename> are added to the bottom | ||
| 837 | of the BitBake variables list. | ||
| 838 | With these settings, the OpenEmbedded build system builds the | ||
| 839 | desired version of the recipe rather than the default version: | ||
| 840 | <imagedata fileref="figures/variable-added.png" align="center" width="9in" depth="6in" /> | ||
| 841 | </para> | ||
| 842 | </section> | ||
| 843 | </section> | ||
| 844 | </chapter> | ||
diff --git a/documentation/toaster-manual/toaster-manual-start.xml b/documentation/toaster-manual/toaster-manual-start.xml deleted file mode 100644 index 8a857006e5..0000000000 --- a/documentation/toaster-manual/toaster-manual-start.xml +++ /dev/null | |||
| @@ -1,116 +0,0 @@ | |||
| 1 | <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | ||
| 2 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" | ||
| 3 | [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] > | ||
| 4 | <!--SPDX-License-Identifier: CC-BY-2.0-UK--> | ||
| 5 | |||
| 6 | <chapter id='toaster-manual-start'> | ||
| 7 | |||
| 8 | <title>Preparing to Use Toaster</title> | ||
| 9 | |||
| 10 | <para> | ||
| 11 | This chapter describes how you need to prepare your system in order to | ||
| 12 | use Toaster. | ||
| 13 | </para> | ||
| 14 | |||
| 15 | <section id='toaster-setting-up-the-basic-system-requirements'> | ||
| 16 | <title>Setting Up the Basic System Requirements</title> | ||
| 17 | |||
| 18 | <para> | ||
| 19 | Before you can use Toaster, you need to first set up your | ||
| 20 | build system to run the Yocto Project. | ||
| 21 | To do this, follow the instructions in the | ||
| 22 | "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-preparing-the-build-host'>Preparing the Build Host</ulink>" | ||
| 23 | section of the Yocto Project Development Tasks | ||
| 24 | Manual. | ||
| 25 | For Ubuntu/Debian, you might also need to do an additional install | ||
| 26 | of pip3. | ||
| 27 | <literallayout class='monospaced'> | ||
| 28 | $ sudo apt-get install python3-pip | ||
| 29 | </literallayout> | ||
| 30 | </para> | ||
| 31 | </section> | ||
| 32 | |||
| 33 | <section id='toaster-establishing-toaster-system-dependencies'> | ||
| 34 | <title>Establishing Toaster System Dependencies</title> | ||
| 35 | |||
| 36 | <para> | ||
| 37 | Toaster requires extra Python dependencies in order to run. | ||
| 38 | A Toaster requirements file named | ||
| 39 | <filename>toaster-requirements.txt</filename> defines the | ||
| 40 | Python dependencies. | ||
| 41 | The requirements file is located in the | ||
| 42 | <filename>bitbake</filename> directory, which is located in the | ||
| 43 | root directory of the | ||
| 44 | <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink> | ||
| 45 | (e.g. <filename>poky/bitbake/toaster-requirements.txt</filename>). | ||
| 46 | The dependencies appear in a <filename>pip</filename>, | ||
| 47 | install-compatible format. | ||
| 48 | </para> | ||
| 49 | |||
| 50 | <section id='toaster-load-packages'> | ||
| 51 | <title>Install Toaster Packages</title> | ||
| 52 | |||
| 53 | <para> | ||
| 54 | You need to install the packages that Toaster requires. | ||
| 55 | Use this command: | ||
| 56 | <literallayout class='monospaced'> | ||
| 57 | $ pip3 install --user -r bitbake/toaster-requirements.txt | ||
| 58 | </literallayout> | ||
| 59 | The previous command installs the necessary Toaster modules | ||
| 60 | into a local python 3 cache in your | ||
| 61 | <filename>$HOME</filename> directory. | ||
| 62 | The caches is actually located in | ||
| 63 | <filename>$HOME/.local</filename>. | ||
| 64 | To see what packages have been installed into your | ||
| 65 | <filename>$HOME</filename> directory, do the following: | ||
| 66 | <literallayout class='monospaced'> | ||
| 67 | $ pip3 list installed --local | ||
| 68 | </literallayout> | ||
| 69 | If you need to remove something, the following works: | ||
| 70 | <literallayout class='monospaced'> | ||
| 71 | $ pip3 uninstall PackageNameToUninstall | ||
| 72 | </literallayout> | ||
| 73 | </para> | ||
| 74 | </section> | ||
| 75 | |||
| 76 | <!-- Commenting this section out for now in case it needs to be used again. | ||
| 77 | |||
| 78 | <section id='toaster-install-daemon'> | ||
| 79 | <title>Install <filename>daemon</filename></title> | ||
| 80 | |||
| 81 | <para> | ||
| 82 | Toaster depends on | ||
| 83 | <ulink url='http://www.libslack.org/daemon/'><filename>daemon</filename></ulink>. | ||
| 84 | Depending on your distribution, how you install | ||
| 85 | <filename>daemon</filename> differs: | ||
| 86 | <itemizedlist> | ||
| 87 | <listitem><para><emphasis>Debian-Based Systems:</emphasis> | ||
| 88 | If you are running a Debian-based distribution, | ||
| 89 | install <filename>daemon</filename> using the | ||
| 90 | following command: | ||
| 91 | <literallayout class='monospaced'> | ||
| 92 | $ sudo apt-get install daemon​ | ||
| 93 | </literallayout> | ||
| 94 | </para></listitem> | ||
| 95 | <listitem><para><emphasis>Non-Debian-Based Systems:</emphasis> | ||
| 96 | If you are not running a Debian-based distribution | ||
| 97 | (Redhat-based distribution such as Fedora), | ||
| 98 | you need to download ​the file relevant to the | ||
| 99 | architecture and then install | ||
| 100 | <filename>daemon</filename> manually. | ||
| 101 | Following are the commands for 64-bit distributions: | ||
| 102 | <literallayout class='monospaced'> | ||
| 103 | $ wget http://libslack.org/daemon/download/daemon-0.6.4-1.x86_64.rpm | ||
| 104 | $ sudo rpm -i daemon-0.6.4-1.x86_64.rpm | ||
| 105 | </literallayout> | ||
| 106 | Here are the commands for a 32-bit distribution: | ||
| 107 | <literallayout class='monospaced'> | ||
| 108 | $ wget http://libslack.org/daemon/download/daemon-0.6.4-1.i686.rpm | ||
| 109 | $ sudo rpm -i ​daemon-0.6.4-1.i686.rpm​ | ||
| 110 | </literallayout> | ||
| 111 | </para></listitem> | ||
| 112 | </itemizedlist> | ||
| 113 | </para> | ||
| 114 | </section> --> | ||
| 115 | </section> | ||
| 116 | </chapter> | ||
diff --git a/documentation/toaster-manual/toaster-manual-style.css b/documentation/toaster-manual/toaster-manual-style.css deleted file mode 100644 index a7f430df05..0000000000 --- a/documentation/toaster-manual/toaster-manual-style.css +++ /dev/null | |||
| @@ -1,987 +0,0 @@ | |||
| 1 | /* | ||
| 2 | |||
| 3 | SPDX-License-Identifier: CC-BY-2.0-UK | ||
| 4 | |||
| 5 | Generic XHTML / DocBook XHTML CSS Stylesheet. | ||
| 6 | |||
| 7 | Browser wrangling and typographic design by | ||
| 8 | Oyvind Kolas / pippin@gimp.org | ||
| 9 | |||
| 10 | Customised for Poky by | ||
| 11 | Matthew Allum / mallum@o-hand.com | ||
| 12 | |||
| 13 | Thanks to: | ||
| 14 | Liam R. E. Quin | ||
| 15 | William Skaggs | ||
| 16 | Jakub Steiner | ||
| 17 | |||
| 18 | Structure | ||
| 19 | --------- | ||
| 20 | |||
| 21 | The stylesheet is divided into the following sections: | ||
| 22 | |||
| 23 | Positioning | ||
| 24 | Margins, paddings, width, font-size, clearing. | ||
| 25 | Decorations | ||
| 26 | Borders, style | ||
| 27 | Colors | ||
| 28 | Colors | ||
| 29 | Graphics | ||
| 30 | Graphical backgrounds | ||
| 31 | Nasty IE tweaks | ||
| 32 | Workarounds needed to make it work in internet explorer, | ||
| 33 | currently makes the stylesheet non validating, but up until | ||
| 34 | this point it is validating. | ||
| 35 | Mozilla extensions | ||
| 36 | Transparency for footer | ||
| 37 | Rounded corners on boxes | ||
| 38 | |||
| 39 | */ | ||
| 40 | |||
| 41 | |||
| 42 | /*************** / | ||
| 43 | / Positioning / | ||
| 44 | / ***************/ | ||
| 45 | |||
| 46 | body { | ||
| 47 | font-family: Verdana, Sans, sans-serif; | ||
| 48 | |||
| 49 | min-width: 640px; | ||
| 50 | width: 80%; | ||
| 51 | margin: 0em auto; | ||
| 52 | padding: 2em 5em 5em 5em; | ||
| 53 | color: #333; | ||
| 54 | } | ||
| 55 | |||
| 56 | h1,h2,h3,h4,h5,h6,h7 { | ||
| 57 | font-family: Arial, Sans; | ||
| 58 | color: #00557D; | ||
| 59 | clear: both; | ||
| 60 | } | ||
| 61 | |||
| 62 | h1 { | ||
| 63 | font-size: 2em; | ||
| 64 | text-align: left; | ||
| 65 | padding: 0em 0em 0em 0em; | ||
| 66 | margin: 2em 0em 0em 0em; | ||
| 67 | } | ||
| 68 | |||
| 69 | h2.subtitle { | ||
| 70 | margin: 0.10em 0em 3.0em 0em; | ||
| 71 | padding: 0em 0em 0em 0em; | ||
| 72 | font-size: 1.8em; | ||
| 73 | padding-left: 20%; | ||
| 74 | font-weight: normal; | ||
| 75 | font-style: italic; | ||
| 76 | } | ||
| 77 | |||
| 78 | h2 { | ||
| 79 | margin: 2em 0em 0.66em 0em; | ||
| 80 | padding: 0.5em 0em 0em 0em; | ||
| 81 | font-size: 1.5em; | ||
| 82 | font-weight: bold; | ||
| 83 | } | ||
| 84 | |||
| 85 | h3.subtitle { | ||
| 86 | margin: 0em 0em 1em 0em; | ||
| 87 | padding: 0em 0em 0em 0em; | ||
| 88 | font-size: 142.14%; | ||
| 89 | text-align: right; | ||
| 90 | } | ||
| 91 | |||
| 92 | h3 { | ||
| 93 | margin: 1em 0em 0.5em 0em; | ||
| 94 | padding: 1em 0em 0em 0em; | ||
| 95 | font-size: 140%; | ||
| 96 | font-weight: bold; | ||
| 97 | } | ||
| 98 | |||
| 99 | h4 { | ||
| 100 | margin: 1em 0em 0.5em 0em; | ||
| 101 | padding: 1em 0em 0em 0em; | ||
| 102 | font-size: 120%; | ||
| 103 | font-weight: bold; | ||
| 104 | } | ||
| 105 | |||
| 106 | h5 { | ||
| 107 | margin: 1em 0em 0.5em 0em; | ||
| 108 | padding: 1em 0em 0em 0em; | ||
| 109 | font-size: 110%; | ||
| 110 | font-weight: bold; | ||
| 111 | } | ||
| 112 | |||
| 113 | h6 { | ||
| 114 | margin: 1em 0em 0em 0em; | ||
| 115 | padding: 1em 0em 0em 0em; | ||
| 116 | font-size: 110%; | ||
| 117 | font-weight: bold; | ||
| 118 | } | ||
| 119 | |||
| 120 | .authorgroup { | ||
| 121 | background-color: transparent; | ||
| 122 | background-repeat: no-repeat; | ||
| 123 | padding-top: 256px; | ||
| 124 | background-image: url("figures/toaster-title.png"); | ||
| 125 | background-position: left top; | ||
| 126 | margin-top: -256px; | ||
| 127 | padding-right: 50px; | ||
| 128 | margin-left: 0px; | ||
| 129 | text-align: right; | ||
| 130 | width: 740px; | ||
| 131 | } | ||
| 132 | |||
| 133 | h3.author { | ||
| 134 | margin: 0em 0me 0em 0em; | ||
| 135 | padding: 0em 0em 0em 0em; | ||
| 136 | font-weight: normal; | ||
| 137 | font-size: 100%; | ||
| 138 | color: #333; | ||
| 139 | clear: both; | ||
| 140 | } | ||
| 141 | |||
| 142 | .author tt.email { | ||
| 143 | font-size: 66%; | ||
| 144 | } | ||
| 145 | |||
| 146 | .titlepage hr { | ||
| 147 | width: 0em; | ||
| 148 | clear: both; | ||
| 149 | } | ||
| 150 | |||
| 151 | .revhistory { | ||
| 152 | padding-top: 2em; | ||
| 153 | clear: both; | ||
| 154 | } | ||
| 155 | |||
| 156 | .toc, | ||
| 157 | .list-of-tables, | ||
| 158 | .list-of-examples, | ||
| 159 | .list-of-figures { | ||
| 160 | padding: 1.33em 0em 2.5em 0em; | ||
| 161 | color: #00557D; | ||
| 162 | } | ||
| 163 | |||
| 164 | .toc p, | ||
| 165 | .list-of-tables p, | ||
| 166 | .list-of-figures p, | ||
| 167 | .list-of-examples p { | ||
| 168 | padding: 0em 0em 0em 0em; | ||
| 169 | padding: 0em 0em 0.3em; | ||
| 170 | margin: 1.5em 0em 0em 0em; | ||
| 171 | } | ||
| 172 | |||
| 173 | .toc p b, | ||
| 174 | .list-of-tables p b, | ||
| 175 | .list-of-figures p b, | ||
| 176 | .list-of-examples p b{ | ||
| 177 | font-size: 100.0%; | ||
| 178 | font-weight: bold; | ||
| 179 | } | ||
| 180 | |||
| 181 | .toc dl, | ||
| 182 | .list-of-tables dl, | ||
| 183 | .list-of-figures dl, | ||
| 184 | .list-of-examples dl { | ||
| 185 | margin: 0em 0em 0.5em 0em; | ||
| 186 | padding: 0em 0em 0em 0em; | ||
| 187 | } | ||
| 188 | |||
| 189 | .toc dt { | ||
| 190 | margin: 0em 0em 0em 0em; | ||
| 191 | padding: 0em 0em 0em 0em; | ||
| 192 | } | ||
| 193 | |||
| 194 | .toc dd { | ||
| 195 | margin: 0em 0em 0em 2.6em; | ||
| 196 | padding: 0em 0em 0em 0em; | ||
| 197 | } | ||
| 198 | |||
| 199 | div.glossary dl, | ||
| 200 | div.variablelist dl { | ||
| 201 | } | ||
| 202 | |||
| 203 | .glossary dl dt, | ||
| 204 | .variablelist dl dt, | ||
| 205 | .variablelist dl dt span.term { | ||
| 206 | font-weight: normal; | ||
| 207 | width: 20em; | ||
| 208 | text-align: right; | ||
| 209 | } | ||
| 210 | |||
| 211 | .variablelist dl dt { | ||
| 212 | margin-top: 0.5em; | ||
| 213 | } | ||
| 214 | |||
| 215 | .glossary dl dd, | ||
| 216 | .variablelist dl dd { | ||
| 217 | margin-top: -1em; | ||
| 218 | margin-left: 25.5em; | ||
| 219 | } | ||
| 220 | |||
| 221 | .glossary dd p, | ||
| 222 | .variablelist dd p { | ||
| 223 | margin-top: 0em; | ||
| 224 | margin-bottom: 1em; | ||
| 225 | } | ||
| 226 | |||
| 227 | |||
| 228 | div.calloutlist table td { | ||
| 229 | padding: 0em 0em 0em 0em; | ||
| 230 | margin: 0em 0em 0em 0em; | ||
| 231 | } | ||
| 232 | |||
| 233 | div.calloutlist table td p { | ||
| 234 | margin-top: 0em; | ||
| 235 | margin-bottom: 1em; | ||
| 236 | } | ||
| 237 | |||
| 238 | div p.copyright { | ||
| 239 | text-align: left; | ||
| 240 | } | ||
| 241 | |||
| 242 | div.legalnotice p.legalnotice-title { | ||
| 243 | margin-bottom: 0em; | ||
| 244 | } | ||
| 245 | |||
| 246 | p { | ||
| 247 | line-height: 1.5em; | ||
| 248 | margin-top: 0em; | ||
| 249 | |||
| 250 | } | ||
| 251 | |||
| 252 | dl { | ||
| 253 | padding-top: 0em; | ||
| 254 | } | ||
| 255 | |||
| 256 | hr { | ||
| 257 | border: solid 1px; | ||
| 258 | } | ||
| 259 | |||
| 260 | |||
| 261 | .mediaobject, | ||
| 262 | .mediaobjectco { | ||
| 263 | text-align: center; | ||
| 264 | } | ||
| 265 | |||
| 266 | img { | ||
| 267 | border: none; | ||
| 268 | } | ||
| 269 | |||
| 270 | ul { | ||
| 271 | padding: 0em 0em 0em 1.5em; | ||
| 272 | } | ||
| 273 | |||
| 274 | ul li { | ||
| 275 | padding: 0em 0em 0em 0em; | ||
| 276 | } | ||
| 277 | |||
| 278 | ul li p { | ||
| 279 | text-align: left; | ||
| 280 | } | ||
| 281 | |||
| 282 | table { | ||
| 283 | width :100%; | ||
| 284 | } | ||
| 285 | |||
| 286 | th { | ||
| 287 | padding: 0.25em; | ||
| 288 | text-align: left; | ||
| 289 | font-weight: normal; | ||
| 290 | vertical-align: top; | ||
| 291 | } | ||
| 292 | |||
| 293 | td { | ||
| 294 | padding: 0.25em; | ||
| 295 | vertical-align: top; | ||
| 296 | } | ||
| 297 | |||
| 298 | p a[id] { | ||
| 299 | margin: 0px; | ||
| 300 | padding: 0px; | ||
| 301 | display: inline; | ||
| 302 | background-image: none; | ||
| 303 | } | ||
| 304 | |||
| 305 | a { | ||
| 306 | text-decoration: underline; | ||
| 307 | color: #444; | ||
| 308 | } | ||
| 309 | |||
| 310 | pre { | ||
| 311 | overflow: auto; | ||
| 312 | } | ||
| 313 | |||
| 314 | a:hover { | ||
| 315 | text-decoration: underline; | ||
| 316 | /*font-weight: bold;*/ | ||
| 317 | } | ||
| 318 | |||
| 319 | /* This style defines how the permalink character | ||
| 320 | appears by itself and when hovered over with | ||
| 321 | the mouse. */ | ||
| 322 | |||
| 323 | [alt='Permalink'] { color: #eee; } | ||
| 324 | [alt='Permalink']:hover { color: black; } | ||
| 325 | |||
| 326 | |||
| 327 | div.informalfigure, | ||
| 328 | div.informalexample, | ||
| 329 | div.informaltable, | ||
| 330 | div.figure, | ||
| 331 | div.table, | ||
| 332 | div.example { | ||
| 333 | margin: 1em 0em; | ||
| 334 | padding: 1em; | ||
| 335 | page-break-inside: avoid; | ||
| 336 | } | ||
| 337 | |||
| 338 | |||
| 339 | div.informalfigure p.title b, | ||
| 340 | div.informalexample p.title b, | ||
| 341 | div.informaltable p.title b, | ||
| 342 | div.figure p.title b, | ||
| 343 | div.example p.title b, | ||
| 344 | div.table p.title b{ | ||
| 345 | padding-top: 0em; | ||
| 346 | margin-top: 0em; | ||
| 347 | font-size: 100%; | ||
| 348 | font-weight: normal; | ||
| 349 | } | ||
| 350 | |||
| 351 | .mediaobject .caption, | ||
| 352 | .mediaobject .caption p { | ||
| 353 | text-align: center; | ||
| 354 | font-size: 80%; | ||
| 355 | padding-top: 0.5em; | ||
| 356 | padding-bottom: 0.5em; | ||
| 357 | } | ||
| 358 | |||
| 359 | .epigraph { | ||
| 360 | padding-left: 55%; | ||
| 361 | margin-bottom: 1em; | ||
| 362 | } | ||
| 363 | |||
| 364 | .epigraph p { | ||
| 365 | text-align: left; | ||
| 366 | } | ||
| 367 | |||
| 368 | .epigraph .quote { | ||
| 369 | font-style: italic; | ||
| 370 | } | ||
| 371 | .epigraph .attribution { | ||
| 372 | font-style: normal; | ||
| 373 | text-align: right; | ||
| 374 | } | ||
| 375 | |||
| 376 | span.application { | ||
| 377 | font-style: italic; | ||
| 378 | } | ||
| 379 | |||
| 380 | .programlisting { | ||
| 381 | font-family: monospace; | ||
| 382 | font-size: 80%; | ||
| 383 | white-space: pre; | ||
| 384 | margin: 1.33em 0em; | ||
| 385 | padding: 1.33em; | ||
| 386 | } | ||
| 387 | |||
| 388 | .tip, | ||
| 389 | .warning, | ||
| 390 | .caution, | ||
| 391 | .note { | ||
| 392 | margin-top: 1em; | ||
| 393 | margin-bottom: 1em; | ||
| 394 | |||
| 395 | } | ||
| 396 | |||
| 397 | /* force full width of table within div */ | ||
| 398 | .tip table, | ||
| 399 | .warning table, | ||
| 400 | .caution table, | ||
| 401 | .note table { | ||
| 402 | border: none; | ||
| 403 | width: 100%; | ||
| 404 | } | ||
| 405 | |||
| 406 | |||
| 407 | .tip table th, | ||
| 408 | .warning table th, | ||
| 409 | .caution table th, | ||
| 410 | .note table th { | ||
| 411 | padding: 0.8em 0.0em 0.0em 0.0em; | ||
| 412 | margin : 0em 0em 0em 0em; | ||
| 413 | } | ||
| 414 | |||
| 415 | .tip p, | ||
| 416 | .warning p, | ||
| 417 | .caution p, | ||
| 418 | .note p { | ||
| 419 | margin-top: 0.5em; | ||
| 420 | margin-bottom: 0.5em; | ||
| 421 | padding-right: 1em; | ||
| 422 | text-align: left; | ||
| 423 | } | ||
| 424 | |||
| 425 | .acronym { | ||
| 426 | text-transform: uppercase; | ||
| 427 | } | ||
| 428 | |||
| 429 | b.keycap, | ||
| 430 | .keycap { | ||
| 431 | padding: 0.09em 0.3em; | ||
| 432 | margin: 0em; | ||
| 433 | } | ||
| 434 | |||
| 435 | .itemizedlist li { | ||
| 436 | clear: none; | ||
| 437 | } | ||
| 438 | |||
| 439 | .filename { | ||
| 440 | font-size: medium; | ||
| 441 | font-family: Courier, monospace; | ||
| 442 | } | ||
| 443 | |||
| 444 | |||
| 445 | div.navheader, div.heading{ | ||
| 446 | position: absolute; | ||
| 447 | left: 0em; | ||
| 448 | top: 0em; | ||
| 449 | width: 100%; | ||
| 450 | background-color: #cdf; | ||
| 451 | width: 100%; | ||
| 452 | } | ||
| 453 | |||
| 454 | div.navfooter, div.footing{ | ||
| 455 | position: fixed; | ||
| 456 | left: 0em; | ||
| 457 | bottom: 0em; | ||
| 458 | background-color: #eee; | ||
| 459 | width: 100%; | ||
| 460 | } | ||
| 461 | |||
| 462 | |||
| 463 | div.navheader td, | ||
| 464 | div.navfooter td { | ||
| 465 | font-size: 66%; | ||
| 466 | } | ||
| 467 | |||
| 468 | div.navheader table th { | ||
| 469 | /*font-family: Georgia, Times, serif;*/ | ||
| 470 | /*font-size: x-large;*/ | ||
| 471 | font-size: 80%; | ||
| 472 | } | ||
| 473 | |||
| 474 | div.navheader table { | ||
| 475 | border-left: 0em; | ||
| 476 | border-right: 0em; | ||
| 477 | border-top: 0em; | ||
| 478 | width: 100%; | ||
| 479 | } | ||
| 480 | |||
| 481 | div.navfooter table { | ||
| 482 | border-left: 0em; | ||
| 483 | border-right: 0em; | ||
| 484 | border-bottom: 0em; | ||
| 485 | width: 100%; | ||
| 486 | } | ||
| 487 | |||
| 488 | div.navheader table td a, | ||
| 489 | div.navfooter table td a { | ||
| 490 | color: #777; | ||
| 491 | text-decoration: none; | ||
| 492 | } | ||
| 493 | |||
| 494 | /* normal text in the footer */ | ||
| 495 | div.navfooter table td { | ||
| 496 | color: black; | ||
| 497 | } | ||
| 498 | |||
| 499 | div.navheader table td a:visited, | ||
| 500 | div.navfooter table td a:visited { | ||
| 501 | color: #444; | ||
| 502 | } | ||
| 503 | |||
| 504 | |||
| 505 | /* links in header and footer */ | ||
| 506 | div.navheader table td a:hover, | ||
| 507 | div.navfooter table td a:hover { | ||
| 508 | text-decoration: underline; | ||
| 509 | background-color: transparent; | ||
| 510 | color: #33a; | ||
| 511 | } | ||
| 512 | |||
| 513 | div.navheader hr, | ||
| 514 | div.navfooter hr { | ||
| 515 | display: none; | ||
| 516 | } | ||
| 517 | |||
| 518 | |||
| 519 | .qandaset tr.question td p { | ||
| 520 | margin: 0em 0em 1em 0em; | ||
| 521 | padding: 0em 0em 0em 0em; | ||
| 522 | } | ||
| 523 | |||
| 524 | .qandaset tr.answer td p { | ||
| 525 | margin: 0em 0em 1em 0em; | ||
| 526 | padding: 0em 0em 0em 0em; | ||
| 527 | } | ||
| 528 | .answer td { | ||
| 529 | padding-bottom: 1.5em; | ||
| 530 | } | ||
| 531 | |||
| 532 | .emphasis { | ||
| 533 | font-weight: bold; | ||
| 534 | } | ||
| 535 | |||
| 536 | |||
| 537 | /************* / | ||
| 538 | / decorations / | ||
| 539 | / *************/ | ||
| 540 | |||
| 541 | .titlepage { | ||
| 542 | } | ||
| 543 | |||
| 544 | .part .title { | ||
| 545 | } | ||
| 546 | |||
| 547 | .subtitle { | ||
| 548 | border: none; | ||
| 549 | } | ||
| 550 | |||
| 551 | /* | ||
| 552 | h1 { | ||
| 553 | border: none; | ||
| 554 | } | ||
| 555 | |||
| 556 | h2 { | ||
| 557 | border-top: solid 0.2em; | ||
| 558 | border-bottom: solid 0.06em; | ||
| 559 | } | ||
| 560 | |||
| 561 | h3 { | ||
| 562 | border-top: 0em; | ||
| 563 | border-bottom: solid 0.06em; | ||
| 564 | } | ||
| 565 | |||
| 566 | h4 { | ||
| 567 | border: 0em; | ||
| 568 | border-bottom: solid 0.06em; | ||
| 569 | } | ||
| 570 | |||
| 571 | h5 { | ||
| 572 | border: 0em; | ||
| 573 | } | ||
| 574 | */ | ||
| 575 | |||
| 576 | .programlisting { | ||
| 577 | border: solid 1px; | ||
| 578 | } | ||
| 579 | |||
| 580 | div.figure, | ||
| 581 | div.table, | ||
| 582 | div.informalfigure, | ||
| 583 | div.informaltable, | ||
| 584 | div.informalexample, | ||
| 585 | div.example { | ||
| 586 | border: 1px solid; | ||
| 587 | } | ||
| 588 | |||
| 589 | |||
| 590 | |||
| 591 | .tip, | ||
| 592 | .warning, | ||
| 593 | .caution, | ||
| 594 | .note { | ||
| 595 | border: 1px solid; | ||
| 596 | } | ||
| 597 | |||
| 598 | .tip table th, | ||
| 599 | .warning table th, | ||
| 600 | .caution table th, | ||
| 601 | .note table th { | ||
| 602 | border-bottom: 1px solid; | ||
| 603 | } | ||
| 604 | |||
| 605 | .question td { | ||
| 606 | border-top: 1px solid black; | ||
| 607 | } | ||
| 608 | |||
| 609 | .answer { | ||
| 610 | } | ||
| 611 | |||
| 612 | |||
| 613 | b.keycap, | ||
| 614 | .keycap { | ||
| 615 | border: 1px solid; | ||
| 616 | } | ||
| 617 | |||
| 618 | |||
| 619 | div.navheader, div.heading{ | ||
| 620 | border-bottom: 1px solid; | ||
| 621 | } | ||
| 622 | |||
| 623 | |||
| 624 | div.navfooter, div.footing{ | ||
| 625 | border-top: 1px solid; | ||
| 626 | } | ||
| 627 | |||
| 628 | /********* / | ||
| 629 | / colors / | ||
| 630 | / *********/ | ||
| 631 | |||
| 632 | body { | ||
| 633 | color: #333; | ||
| 634 | background: white; | ||
| 635 | } | ||
| 636 | |||
| 637 | a { | ||
| 638 | background: transparent; | ||
| 639 | } | ||
| 640 | |||
| 641 | a:hover { | ||
| 642 | background-color: #dedede; | ||
| 643 | } | ||
| 644 | |||
| 645 | |||
| 646 | h1, | ||
| 647 | h2, | ||
| 648 | h3, | ||
| 649 | h4, | ||
| 650 | h5, | ||
| 651 | h6, | ||
| 652 | h7, | ||
| 653 | h8 { | ||
| 654 | background-color: transparent; | ||
| 655 | } | ||
| 656 | |||
| 657 | hr { | ||
| 658 | border-color: #aaa; | ||
| 659 | } | ||
| 660 | |||
| 661 | |||
| 662 | .tip, .warning, .caution, .note { | ||
| 663 | border-color: #fff; | ||
| 664 | } | ||
| 665 | |||
| 666 | |||
| 667 | .tip table th, | ||
| 668 | .warning table th, | ||
| 669 | .caution table th, | ||
| 670 | .note table th { | ||
| 671 | border-bottom-color: #fff; | ||
| 672 | } | ||
| 673 | |||
| 674 | |||
| 675 | .warning { | ||
| 676 | background-color: #f0f0f2; | ||
| 677 | } | ||
| 678 | |||
| 679 | .caution { | ||
| 680 | background-color: #f0f0f2; | ||
| 681 | } | ||
| 682 | |||
| 683 | .tip { | ||
| 684 | background-color: #f0f0f2; | ||
| 685 | } | ||
| 686 | |||
| 687 | .note { | ||
| 688 | background-color: #f0f0f2; | ||
| 689 | } | ||
| 690 | |||
| 691 | .glossary dl dt, | ||
| 692 | .variablelist dl dt, | ||
| 693 | .variablelist dl dt span.term { | ||
| 694 | color: #044; | ||
| 695 | } | ||
| 696 | |||
| 697 | div.figure, | ||
| 698 | div.table, | ||
| 699 | div.example, | ||
| 700 | div.informalfigure, | ||
| 701 | div.informaltable, | ||
| 702 | div.informalexample { | ||
| 703 | border-color: #aaa; | ||
| 704 | } | ||
| 705 | |||
| 706 | pre.programlisting { | ||
| 707 | color: black; | ||
| 708 | background-color: #fff; | ||
| 709 | border-color: #aaa; | ||
| 710 | border-width: 2px; | ||
| 711 | } | ||
| 712 | |||
| 713 | .guimenu, | ||
| 714 | .guilabel, | ||
| 715 | .guimenuitem { | ||
| 716 | background-color: #eee; | ||
| 717 | } | ||
| 718 | |||
| 719 | |||
| 720 | b.keycap, | ||
| 721 | .keycap { | ||
| 722 | background-color: #eee; | ||
| 723 | border-color: #999; | ||
| 724 | } | ||
| 725 | |||
| 726 | |||
| 727 | div.navheader { | ||
| 728 | border-color: black; | ||
| 729 | } | ||
| 730 | |||
| 731 | |||
| 732 | div.navfooter { | ||
| 733 | border-color: black; | ||
| 734 | } | ||
| 735 | |||
| 736 | |||
| 737 | /*********** / | ||
| 738 | / graphics / | ||
| 739 | / ***********/ | ||
| 740 | |||
| 741 | /* | ||
| 742 | body { | ||
| 743 | background-image: url("images/body_bg.jpg"); | ||
| 744 | background-attachment: fixed; | ||
| 745 | } | ||
| 746 | |||
| 747 | .navheader, | ||
| 748 | .note, | ||
| 749 | .tip { | ||
| 750 | background-image: url("images/note_bg.jpg"); | ||
| 751 | background-attachment: fixed; | ||
| 752 | } | ||
| 753 | |||
| 754 | .warning, | ||
| 755 | .caution { | ||
| 756 | background-image: url("images/warning_bg.jpg"); | ||
| 757 | background-attachment: fixed; | ||
| 758 | } | ||
| 759 | |||
| 760 | .figure, | ||
| 761 | .informalfigure, | ||
| 762 | .example, | ||
| 763 | .informalexample, | ||
| 764 | .table, | ||
| 765 | .informaltable { | ||
| 766 | background-image: url("images/figure_bg.jpg"); | ||
| 767 | background-attachment: fixed; | ||
| 768 | } | ||
| 769 | |||
| 770 | */ | ||
| 771 | h1, | ||
| 772 | h2, | ||
| 773 | h3, | ||
| 774 | h4, | ||
| 775 | h5, | ||
| 776 | h6, | ||
| 777 | h7{ | ||
| 778 | } | ||
| 779 | |||
| 780 | /* | ||
| 781 | Example of how to stick an image as part of the title. | ||
| 782 | |||
| 783 | div.article .titlepage .title | ||
| 784 | { | ||
| 785 | background-image: url("figures/white-on-black.png"); | ||
| 786 | background-position: center; | ||
| 787 | background-repeat: repeat-x; | ||
| 788 | } | ||
| 789 | */ | ||
| 790 | |||
| 791 | div.preface .titlepage .title, | ||
| 792 | div.colophon .title, | ||
| 793 | div.chapter .titlepage .title, | ||
| 794 | div.article .titlepage .title | ||
| 795 | { | ||
| 796 | } | ||
| 797 | |||
| 798 | div.section div.section .titlepage .title, | ||
| 799 | div.sect2 .titlepage .title { | ||
| 800 | background: none; | ||
| 801 | } | ||
| 802 | |||
| 803 | |||
| 804 | h1.title { | ||
| 805 | background-color: transparent; | ||
| 806 | background-repeat: no-repeat; | ||
| 807 | height: 256px; | ||
| 808 | text-indent: -9000px; | ||
| 809 | overflow:hidden; | ||
| 810 | } | ||
| 811 | |||
| 812 | h2.subtitle { | ||
| 813 | background-color: transparent; | ||
| 814 | text-indent: -9000px; | ||
| 815 | overflow:hidden; | ||
| 816 | width: 0px; | ||
| 817 | display: none; | ||
| 818 | } | ||
| 819 | |||
| 820 | /*************************************** / | ||
| 821 | / pippin.gimp.org specific alterations / | ||
| 822 | / ***************************************/ | ||
| 823 | |||
| 824 | /* | ||
| 825 | div.heading, div.navheader { | ||
| 826 | color: #777; | ||
| 827 | font-size: 80%; | ||
| 828 | padding: 0; | ||
| 829 | margin: 0; | ||
| 830 | text-align: left; | ||
| 831 | position: absolute; | ||
| 832 | top: 0px; | ||
| 833 | left: 0px; | ||
| 834 | width: 100%; | ||
| 835 | height: 50px; | ||
| 836 | background: url('/gfx/heading_bg.png') transparent; | ||
| 837 | background-repeat: repeat-x; | ||
| 838 | background-attachment: fixed; | ||
| 839 | border: none; | ||
| 840 | } | ||
| 841 | |||
| 842 | div.heading a { | ||
| 843 | color: #444; | ||
| 844 | } | ||
| 845 | |||
| 846 | div.footing, div.navfooter { | ||
| 847 | border: none; | ||
| 848 | color: #ddd; | ||
| 849 | font-size: 80%; | ||
| 850 | text-align:right; | ||
| 851 | |||
| 852 | width: 100%; | ||
| 853 | padding-top: 10px; | ||
| 854 | position: absolute; | ||
| 855 | bottom: 0px; | ||
| 856 | left: 0px; | ||
| 857 | |||
| 858 | background: url('/gfx/footing_bg.png') transparent; | ||
| 859 | } | ||
| 860 | */ | ||
| 861 | |||
| 862 | |||
| 863 | |||
| 864 | /****************** / | ||
| 865 | / nasty ie tweaks / | ||
| 866 | / ******************/ | ||
| 867 | |||
| 868 | /* | ||
| 869 | div.heading, div.navheader { | ||
| 870 | width:expression(document.body.clientWidth + "px"); | ||
| 871 | } | ||
| 872 | |||
| 873 | div.footing, div.navfooter { | ||
| 874 | width:expression(document.body.clientWidth + "px"); | ||
| 875 | margin-left:expression("-5em"); | ||
| 876 | } | ||
| 877 | body { | ||
| 878 | padding:expression("4em 5em 0em 5em"); | ||
| 879 | } | ||
| 880 | */ | ||
| 881 | |||
| 882 | /**************************************** / | ||
| 883 | / mozilla vendor specific css extensions / | ||
| 884 | / ****************************************/ | ||
| 885 | /* | ||
| 886 | div.navfooter, div.footing{ | ||
| 887 | -moz-opacity: 0.8em; | ||
| 888 | } | ||
| 889 | |||
| 890 | div.figure, | ||
| 891 | div.table, | ||
| 892 | div.informalfigure, | ||
| 893 | div.informaltable, | ||
| 894 | div.informalexample, | ||
| 895 | div.example, | ||
| 896 | .tip, | ||
| 897 | .warning, | ||
| 898 | .caution, | ||
| 899 | .note { | ||
| 900 | -moz-border-radius: 0.5em; | ||
| 901 | } | ||
| 902 | |||
| 903 | b.keycap, | ||
| 904 | .keycap { | ||
| 905 | -moz-border-radius: 0.3em; | ||
| 906 | } | ||
| 907 | */ | ||
| 908 | |||
| 909 | table tr td table tr td { | ||
| 910 | display: none; | ||
| 911 | } | ||
| 912 | |||
| 913 | |||
| 914 | hr { | ||
| 915 | display: none; | ||
| 916 | } | ||
| 917 | |||
| 918 | table { | ||
| 919 | border: 0em; | ||
| 920 | } | ||
| 921 | |||
| 922 | .photo { | ||
| 923 | float: right; | ||
| 924 | margin-left: 1.5em; | ||
| 925 | margin-bottom: 1.5em; | ||
| 926 | margin-top: 0em; | ||
| 927 | max-width: 17em; | ||
| 928 | border: 1px solid gray; | ||
| 929 | padding: 3px; | ||
| 930 | background: white; | ||
| 931 | } | ||
| 932 | .seperator { | ||
| 933 | padding-top: 2em; | ||
| 934 | clear: both; | ||
| 935 | } | ||
| 936 | |||
| 937 | #validators { | ||
| 938 | margin-top: 5em; | ||
| 939 | text-align: right; | ||
| 940 | color: #777; | ||
| 941 | } | ||
| 942 | @media print { | ||
| 943 | body { | ||
| 944 | font-size: 8pt; | ||
| 945 | } | ||
| 946 | .noprint { | ||
| 947 | display: none; | ||
| 948 | } | ||
| 949 | } | ||
| 950 | |||
| 951 | |||
| 952 | .tip, | ||
| 953 | .note { | ||
| 954 | background: #f0f0f2; | ||
| 955 | color: #333; | ||
| 956 | padding: 20px; | ||
| 957 | margin: 20px; | ||
| 958 | } | ||
| 959 | |||
| 960 | .tip h3, | ||
| 961 | .note h3 { | ||
| 962 | padding: 0em; | ||
| 963 | margin: 0em; | ||
| 964 | font-size: 2em; | ||
| 965 | font-weight: bold; | ||
| 966 | color: #333; | ||
| 967 | } | ||
| 968 | |||
| 969 | .tip a, | ||
| 970 | .note a { | ||
| 971 | color: #333; | ||
| 972 | text-decoration: underline; | ||
| 973 | } | ||
| 974 | |||
| 975 | .footnote { | ||
| 976 | font-size: small; | ||
| 977 | color: #333; | ||
| 978 | } | ||
| 979 | |||
| 980 | /* Changes the announcement text */ | ||
| 981 | .tip h3, | ||
| 982 | .warning h3, | ||
| 983 | .caution h3, | ||
| 984 | .note h3 { | ||
| 985 | font-size:large; | ||
| 986 | color: #00557D; | ||
| 987 | } | ||
diff --git a/documentation/toaster-manual/toaster-manual.xml b/documentation/toaster-manual/toaster-manual.xml deleted file mode 100755 index 136b4df964..0000000000 --- a/documentation/toaster-manual/toaster-manual.xml +++ /dev/null | |||
| @@ -1,159 +0,0 @@ | |||
| 1 | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | ||
| 2 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" | ||
| 3 | [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] > | ||
| 4 | <!--SPDX-License-Identifier: CC-BY-2.0-UK--> | ||
| 5 | |||
| 6 | <book id='toaster-manual' lang='en' | ||
| 7 | xmlns:xi="http://www.w3.org/2003/XInclude" | ||
| 8 | xmlns="http://docbook.org/ns/docbook" | ||
| 9 | > | ||
| 10 | <bookinfo> | ||
| 11 | |||
| 12 | <mediaobject> | ||
| 13 | <imageobject> | ||
| 14 | <imagedata fileref='figures/toaster-title.png' | ||
| 15 | format='SVG' | ||
| 16 | align='left' scalefit='1' width='100%'/> | ||
| 17 | </imageobject> | ||
| 18 | </mediaobject> | ||
| 19 | |||
| 20 | <title> | ||
| 21 | Toaster User Manual | ||
| 22 | </title> | ||
| 23 | |||
| 24 | <authorgroup> | ||
| 25 | <author> | ||
| 26 | <affiliation> | ||
| 27 | <orgname>&ORGNAME;</orgname> | ||
| 28 | </affiliation> | ||
| 29 | <email>&ORGEMAIL;</email> | ||
| 30 | </author> | ||
| 31 | </authorgroup> | ||
| 32 | |||
| 33 | <revhistory> | ||
| 34 | <revision> | ||
| 35 | <revnumber>1.8</revnumber> | ||
| 36 | <date>April 2015</date> | ||
| 37 | <revremark>The initial document released with the Yocto Project 1.8 Release.</revremark> | ||
| 38 | </revision> | ||
| 39 | <revision> | ||
| 40 | <revnumber>2.0</revnumber> | ||
| 41 | <date>October 2015</date> | ||
| 42 | <revremark>Released with the Yocto Project 2.0 Release.</revremark> | ||
| 43 | </revision> | ||
| 44 | <revision> | ||
| 45 | <revnumber>2.1</revnumber> | ||
| 46 | <date>April 2016</date> | ||
| 47 | <revremark>Released with the Yocto Project 2.1 Release.</revremark> | ||
| 48 | </revision> | ||
| 49 | <revision> | ||
| 50 | <revnumber>2.2</revnumber> | ||
| 51 | <date>October 2016</date> | ||
| 52 | <revremark>Released with the Yocto Project 2.2 Release.</revremark> | ||
| 53 | </revision> | ||
| 54 | <revision> | ||
| 55 | <revnumber>2.3</revnumber> | ||
| 56 | <date>May 2017</date> | ||
| 57 | <revremark>Released with the Yocto Project 2.3 Release.</revremark> | ||
| 58 | </revision> | ||
| 59 | <revision> | ||
| 60 | <revnumber>2.4</revnumber> | ||
| 61 | <date>October 2017</date> | ||
| 62 | <revremark>Released with the Yocto Project 2.4 Release.</revremark> | ||
| 63 | </revision> | ||
| 64 | <revision> | ||
| 65 | <revnumber>2.5</revnumber> | ||
| 66 | <date>May 2018</date> | ||
| 67 | <revremark>Released with the Yocto Project 2.5 Release.</revremark> | ||
| 68 | </revision> | ||
| 69 | <revision> | ||
| 70 | <revnumber>2.6</revnumber> | ||
| 71 | <date>November 2018</date> | ||
| 72 | <revremark>Released with the Yocto Project 2.6 Release.</revremark> | ||
| 73 | </revision> | ||
| 74 | <revision> | ||
| 75 | <revnumber>2.7</revnumber> | ||
| 76 | <date>May 2019</date> | ||
| 77 | <revremark>Released with the Yocto Project 2.7 Release.</revremark> | ||
| 78 | </revision> | ||
| 79 | <revision> | ||
| 80 | <revnumber>3.0</revnumber> | ||
| 81 | <date>October 2019</date> | ||
| 82 | <revremark>Released with the Yocto Project 3.0 Release.</revremark> | ||
| 83 | </revision> | ||
| 84 | <revision> | ||
| 85 | <revnumber>3.1</revnumber> | ||
| 86 | <date>&REL_MONTH_YEAR;</date> | ||
| 87 | <revremark>Released with the Yocto Project 3.1 Release.</revremark> | ||
| 88 | </revision> | ||
| 89 | </revhistory> | ||
| 90 | |||
| 91 | <copyright> | ||
| 92 | <year>©RIGHT_YEAR;</year> | ||
| 93 | <holder>Linux Foundation</holder> | ||
| 94 | </copyright> | ||
| 95 | |||
| 96 | <legalnotice> | ||
| 97 | <para> | ||
| 98 | Permission is granted to copy, distribute and/or modify this document under | ||
| 99 | the terms of the <ulink type="http" url="http://creativecommons.org/licenses/by-sa/2.0/uk/">Creative Commons Attribution-Share Alike 2.0 UK: England & Wales</ulink> as published by Creative Commons. | ||
| 100 | </para> | ||
| 101 | <note><title>Manual Notes</title> | ||
| 102 | <itemizedlist> | ||
| 103 | <listitem><para> | ||
| 104 | This version of the | ||
| 105 | <emphasis>Toaster User Manual</emphasis> | ||
| 106 | is for the &YOCTO_DOC_VERSION; release of the | ||
| 107 | Yocto Project. | ||
| 108 | To be sure you have the latest version of the manual | ||
| 109 | for this release, go to the | ||
| 110 | <ulink url='&YOCTO_DOCS_URL;'>Yocto Project documentation page</ulink> | ||
| 111 | and select the manual from that site. | ||
| 112 | Manuals from the site are more up-to-date than manuals | ||
| 113 | derived from the Yocto Project released TAR files. | ||
| 114 | </para></listitem> | ||
| 115 | <listitem><para> | ||
| 116 | If you located this manual through a web search, the | ||
| 117 | version of the manual might not be the one you want | ||
| 118 | (e.g. the search might have returned a manual much | ||
| 119 | older than the Yocto Project version with which you | ||
| 120 | are working). | ||
| 121 | You can see all Yocto Project major releases by | ||
| 122 | visiting the | ||
| 123 | <ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Releases</ulink> | ||
| 124 | page. | ||
| 125 | If you need a version of this manual for a different | ||
| 126 | Yocto Project release, visit the | ||
| 127 | <ulink url='&YOCTO_DOCS_URL;'>Yocto Project documentation page</ulink> | ||
| 128 | and select the manual set by using the | ||
| 129 | "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE" | ||
| 130 | pull-down menus. | ||
| 131 | </para></listitem> | ||
| 132 | <listitem> | ||
| 133 | <para> | ||
| 134 | To report any inaccuracies or problems with this | ||
| 135 | (or any other Yocto Project) manual, send an email to | ||
| 136 | the Yocto Project documentation mailing list at | ||
| 137 | <filename>docs@lists.yoctoproject.org</filename> or | ||
| 138 | log into the freenode <filename>#yocto</filename> channel. | ||
| 139 | </para> | ||
| 140 | </listitem> | ||
| 141 | </itemizedlist> | ||
| 142 | </note> | ||
| 143 | |||
| 144 | </legalnotice> | ||
| 145 | |||
| 146 | </bookinfo> | ||
| 147 | |||
| 148 | <xi:include href="toaster-manual-intro.xml"/> | ||
| 149 | |||
| 150 | <xi:include href="toaster-manual-start.xml"/> | ||
| 151 | |||
| 152 | <xi:include href="toaster-manual-setup-and-use.xml"/> | ||
| 153 | |||
| 154 | <xi:include href="toaster-manual-reference.xml"/> | ||
| 155 | |||
| 156 | </book> | ||
| 157 | <!-- | ||
| 158 | vim: expandtab tw=80 ts=4 | ||
| 159 | --> | ||
