blob: 26935699052e80edeb2d0dbe93165cefa9fa2ed7 [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001<!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
5<chapter id='toaster-manual-setup-and-use'>
6
7<title>Setting Up and Using Toaster</title>
8
Patrick Williamsf1e5d692016-03-30 15:21:19 -05009 <section id='starting-toaster-for-local-development'>
10 <title>Starting Toaster for Local Development</title>
11
12 <para>
13 Once you have set up the Yocto Project and installed the
14 Toaster system dependencies as described in
15 "<link linkend='toaster-manual-start'>Preparing to Use Toaster</link>",
16 you are ready to start Toaster.
17 </para>
18
19 <para>
20 If you want to configure and start your builds using the
21 Toaster web interface
22 (i.e. "<link linkend='toaster-build-mode'>Build Mode</link>"),
23 navigate to the root of your
24 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
25 (e.g. <filename>poky</filename>):
26 <literallayout class='monospaced'>
27 $ cd poky
28 </literallayout>
29 Next, start Toaster:
30 <literallayout class='monospaced'>
31 $ bitbake/bin/toaster
32 </literallayout>
33 Open your favourite browser and enter the following:
34 <literallayout class='monospaced'>
35 http://127.0.0.1:8000
36 </literallayout>
37 If you would rather configure and start your builds
38 using the command line
39 (i.e. <link linkend='toaster-analysis-mode'>Analysis Mode</link>),
40 you can get Toaster to "listen"
41 to your builds and collect information about them.
42 To do that, navigate to the root of your Source Directory:
43 <literallayout class='monospaced'>
44 $ cd poky
45 </literallayout>
46 Once in that directory, source the build environment script:
47 <literallayout class='monospaced'>
48 $ source oe-init-build-env
49 </literallayout>
50 Next, from the build directory (e.g.
51 <filename>poky/build</filename>), start Toaster using this
52 command:
53 <literallayout class='monospaced'>
54 $ source ../bitbake/bin/toaster
55 </literallayout>
56 You can now run builds normally.
57 </para>
58
59 <para>
60 To see the build information provided by Toaster, open your
61 favorite browser and enter the following:
62 <literallayout class='monospaced'>
63 http://127.0.0.1:8000
64 </literallayout>
65 </para>
66 </section>
67
68 <section id='setting-a-different-port'>
69 <title>Setting a Different Port</title>
70
71 <para>
72 By default, Toaster starts on port 8000.
73 You can use the <filename>WEBPORT</filename> parameter to
74 set a different port.
75 For example, either of the following commands sets the
76 port to "8400":
77 <literallayout class='monospaced'>
78 $ bitbake/bin/toaster webport=8400
79 </literallayout>
80 or
81 <literallayout class='monospaced'>
82 $ source ../bitbake/bin/toaster webport=8400
83 </literallayout>
84 </para>
85 </section>
86
87 <section id='the-directory-for-cloning-layers'>
88 <title>The Directory for Cloning Layers</title>
89
90 <para>
91 If you are running Toaster in
92 <link linkend='toaster-build-mode'>Build Mode</link>,
93 Toaster creates a <filename>_toaster_clones</filename>
94 directory inside your Source Directory
95 (i.e. <filename>poky</filename>).
96 For example, suppose you use this command to start Toaster:
97 <literallayout class='monospaced'>
98 poky/bitbake/bin/toaster
99 </literallayout>
100 In this example, Toaster creates and uses the
101 <filename>poky/_toaster_clones</filename>
102 directory to clone any layers needed for your builds.
103 </para>
104
105 <para>
106 Alternatively, if you would like all of your Toaster related
107 files and directories to be in a particular location other than
108 the default, you can set the <filename>TOASTER_DIR</filename>
109 environment variable, which takes precedence over your current
110 working directory.
111 Setting this environment variable causes Toaster to create and use
112 <filename>$TOASTER_DIR./_toaster_clones</filename>.
113 </para>
114 </section>
115
116 <section id='toaster-the-build-directory'>
117 <title>The Build Directory</title>
118
119 <para>
120 If you are running Toaster in
121 <link linkend='toaster-build-mode'>Build Mode</link>,
122 Toaster creates a build directory within your Source
123 Directory (e.g. <filename>poky</filename>).
124 For example, suppose you use this command to start Toaster:
125 <literallayout class='monospaced'>
126 poky/bitbake/bin/toaster
127 </literallayout>
128 In this example, Toaster creates and uses the
129 <filename>poky/build</filename>
130 directory to execute the builds.
131 </para>
132
133 <para>
134 Alternatively, if you would like all of your Toaster related files
135 and directories to be in a particular location, you can set
136 the <filename>TOASTER_DIR</filename> environment variable,
137 which takes precedence over your current working directory.
138 Setting this environment variable causes Toaster to use
139 <filename>$TOASTER_DIR./build</filename> as the build directory.
140 </para>
141 </section>
142
143 <section id='toaster-creating-a-django-super-user'>
144 <title>Creating a Django Superuser</title>
145
146 <para>
147 Toaster is built on the
148 <ulink url='https://www.djangoproject.com/'>Django framework</ulink>.
149 Django provides an administration interface you can use
150 to edit Toaster configuration parameters.
151 </para>
152
153 <para>
154 To access the Django administration interface, you must
155 create a superuser by following these steps:
156 <orderedlist>
157 <listitem><para>
158 If you used <filename>virtualenv</filename>, which is
159 recommended, to set up the Toaster system dependencies,
160 you need be sure the virtual environment is activated.
161 To activate this environment, use the following:
162 <literallayout class='monospaced'>
163 $ source venv/bin/activate
164 </literallayout>
165 </para></listitem>
166 <listitem><para>
167 From the root of your checkout directory, invoke the
168 following command from <filename>manage.py</filename>:
169 <literallayout class='monospaced'>
170 $ ./bitbake/lib/toaster/manage.py createsuperuser
171 </literallayout>
172 </para></listitem>
173 <listitem><para>
174 Django prompts you for the username, which you need to
175 provide.
176 </para></listitem>
177 <listitem><para>
178 Django prompts you for an email address, which is
179 optional.
180 </para></listitem>
181 <listitem><para>
182 Django prompts you for a password, which you must provide.
183 </para></listitem>
184 <listitem><para>
185 Django prompts you to re-enter your password for verification.
186 </para></listitem>
187 </orderedlist>
188 After completing these steps, the following confirmation message
189 appears:
190 <literallayout class='monospaced'>
191 Superuser created successfully.
192 </literallayout>
193 </para>
194
195 <para>
196 Creating a superuser allows you to access the Django administration
197 interface through a browser.
198 The URL for this interface is the same as the URL used for the
199 Toaster instance with "/admin" on the end.
200 For example, if you are running Toaster locally, use the
201 following URL:
202 <literallayout class='monospaced'>
203 http://127.0.0.1:8000/admin
204 </literallayout>
205 You can use the Django administration interface to set Toaster
206 configuration parameters such as the build directory, layer sources,
207 default variable values, and BitBake versions.
208 </para>
209 </section>
210
211 <section id='toaster-setting-up-a-production-instance-of-toaster'>
212 <title>Setting Up a Production Instance of Toaster</title>
213
214 <para>
215 You can use a production instance of Toaster to share the
216 Toaster instance with remote users, multiple users, or both.
217 The production instance is also the setup that can cope with
218 heavier loads on the web service.
219 Use the instructions in the following sections to set up
220 Toaster in
221 <link linkend='toaster-build-mode'>Build Mode</link>
222 where builds and projects are run,
223 viewed, and defined through the Toaster web interface.
224 </para>
225
226 <section id='toaster-production-instance-requirements'>
227 <title>Requirements</title>
228
229 <para>
230 Be sure you meet the following requirements:
231 <note>
232 You must comply with all Apache,
233 <filename>mod-wsgi</filename>, and Mysql requirements.
234 </note>
235 <itemizedlist>
236 <listitem><para>
237 Have all the build requirements as described in
238 "<link linkend='toaster-setting-up-the-basic-system-requirements'>Setting Up the Basic System Requirements</link>"
239 chapter.
240 </para></listitem>
241 <listitem><para>
242 Have an Apache webserver.
243 </para></listitem>
244 <listitem><para>
245 Have <filename>mod-wsgi</filename> for the Apache
246 webserver.
247 </para></listitem>
248 <listitem><para>
249 Use the Mysql database server.
250 </para></listitem>
251 <listitem><para>
252 If you are using Ubuntu 14.04.3, run the following:
253 <literallayout class='monospaced'>
254 $ sudo apt-get install apache2 libapache2-mod-wsgi mysql-server virtualenv libmysqlclient-dev
255 </literallayout>
256 </para></listitem>
257 <listitem><para>
258 If you are using Fedora 22 or a RedHat distribution, run
259 the following:
260 <literallayout class='monospaced'>
261 $ sudo dnf install httpd mod_wsgi python-virtualenv gcc mysql-devel
262 </literallayout>
263 </para></listitem>
264 </itemizedlist>
265 </para>
266 </section>
267
268 <section id='toaster-installation-steps'>
269 <title>Installation</title>
270
271 <para>
272 Perform the following steps to install Toaster:
273 <orderedlist>
274 <listitem><para>
275 Checkout a copy of <filename>poky</filename>
276 into the web server directory.
277 You will be using <filename>/var/www/toaster</filename>:
278 <literallayout class='monospaced'>
279 $ mkdir -p /var/www/toaster
280 $ cd /var/www/toaster/
281 $ git clone git://git.yoctoproject.org/poky
282 $ git checkout &DISTRO_NAME;
283 </literallayout>
284 </para></listitem>
285 <listitem><para>
286 Initialize a virtual environment and install Toaster
287 dependencies.
288 Using a virtual environment keeps the Python packages
289 isolated from your system-provided packages:
290 <literallayout class='monospaced'>
291 $ cd /var/www/toaster/
292 $ virtualenv venv
293 $ source ./venv/bin/activate
294 $ pip install -r ./poky/bitbake/toaster-requirements.txt
295 $ pip install mysql
296 $ pip install MySQL-python
297 </literallayout>
298 <note>
299 Isolating these packages is not required but is
300 recommended.
301 Alternatively, you can use your operating system's
302 package manager to install the packages.
303 </note>
304 </para></listitem>
305 <listitem><para>
306 Configure Toaster by editing
307 <filename>/var/www/toaster/poky/bitbake/lib/toaster/toastermain/settings.py</filename>
308 as follows:
309 <itemizedlist>
310 <listitem><para>
311 Edit the <filename>DATABASE</filename> settings:
312 <literallayout class='monospaced'>
313 DATABASES = {
314 'default': {
315 'ENGINE': 'django.db.backends.mysql',
316 'NAME': 'toaster_data',
317 'USER': 'toaster',
318 'PASSWORD': 'yourpasswordhere',
319 'HOST': 'localhost',
320 'PORT': '3306',
321 }
322 }
323 </literallayout>
324 </para></listitem>
325 <listitem><para>
326 Edit the <filename>SECRET_KEY</filename>:
327 <literallayout class='monospaced'>
328 SECRET_KEY = '<replaceable>your_secret_key</replaceable>'
329 </literallayout>
330 </para></listitem>
331 <listitem><para>
332 Edit the <filename>STATIC_ROOT</filename>:
333 <literallayout class='monospaced'>
334 STATIC_ROOT = '/var/www/toaster/static_files/'
335 </literallayout>
336 </para></listitem>
337 <listitem><para>
338 Enable Build Mode by adding the following
339 line to <filename>settings.py</filename>:
340 <literallayout class='monospaced'>
341 BUILD_MODE=True
342 </literallayout>
343 </para></listitem>
344 </itemizedlist>
345 </para></listitem>
346 <listitem><para>
347 Add the database and user to the <filename>mysql</filename>
348 server defined earlier:
349 <literallayout class='monospaced'>
350 $ mysql -u root -p
351 mysql> CREATE DATABASE toaster_data;
352 mysql> CREATE USER 'toaster'@'localhost' identified by 'yourpasswordhere';
353 mysql> GRANT all on toaster_data.* to 'toaster'@'localhost';
354 mysql> quit
355 </literallayout>
356 </para></listitem>
357 <listitem><para>
358 Get Toaster to create the database schema,
359 default data, and gather the statically-served files:
360 <literallayout class='monospaced'>
361 $ cd /var/www/toaster/poky/
362 $ ./bitbake/lib/toaster/manage.py syncdb
363 $ ./bitbake/lib/toaster/manage.py migrate
364 $ TOASTER_DIR=`pwd` TOASTER_CONF=./meta-yocto/conf/toasterconf.json ./bitbake/lib/toaster/manage.py checksettings
365 $ ./bitbake/lib/toaster/manage.py collectstatic
366 </literallayout>
367 </para>
368
369 <para>
370 For the above set of commands, after moving to the
371 <filename>poky</filename> directory,
372 the <filename>syncdb</filename> and <filename>migrate</filename>
373 commands ensure the database
374 schema has had changes propagated correctly (i.e.
375 migrations).
376 </para>
377
378 <para>
379 The next line sets the Toaster root directory
380 <filename>TOASTER_DIR</filename> and the location of
381 the Toaster configuration file
382 <filename>TOASTER_CONF</filename>, which is
383 relative to the Toaster root directory
384 <filename>TOASTER_DIR</filename>.
385 For more information on the Toaster configuration file
386 <filename>TOASTER_CONF</filename>, see the
387 <link linkend='toaster-json-files'>JSON Files</link>
388 section of this manual.
389 </para>
390
391 <para>
392 This line also runs the <filename>checksettings</filename>
393 command, which configures the location of the Toaster
394 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build directory</ulink>.
395 The Toaster root directory <filename>TOASTER_DIR</filename>
396 determines where the Toaster build directory
397 is created on the file system.
398 In the example above,
399 <filename>TOASTER_DIR</filename> is set as follows:
400 <literallayout class="monospaced">
401 /var/www/toaster/poky
402 </literallayout>
403 This setting causes the Toaster build directory to be:
404 <literallayout class="monospaced">
405 /var/www/toaster/poky/build
406 </literallayout>
407 </para>
408
409 <para>
410 Finally, the <filename>collectstatic</filename> command
411 is a Django framework command that collects all the
412 statically served files into a designated directory to
413 be served up by the Apache web server.
414 </para></listitem>
415 <listitem><para>
416 Add an Apache configuration file for Toaster to your Apache web
417 server's configuration directory.
418 If you are using Ubuntu or Debian, put the file here:
419 <literallayout class='monospaced'>
420 /etc/apache2/conf-available/toaster.conf
421 </literallayout>
422 If you are using Fedora or RedHat, put it here:
423 <literallayout class='monospaced'>
424 /etc/httpd/conf.d/toaster.conf
425 </literallayout>
426 Following is a sample Apache configuration for Toaster
427 you can follow:
428 <literallayout class='monospaced'>
429 Alias /static /var/www/toaster/static_files
430 &lt;Directory /var/www/toaster/static_files&gt;
431 Order allow,deny
432 Allow from all
433 Require all granted
434 &lt;/Directory&gt;
435
436 WSGIDaemonProcess toaster_wsgi python-path=/var/www/toaster/poky/bitbake/lib/toaster:/var/www/toaster/venv/lib/python2.7/site-packages
437
438 WSGIScriptAlias / "/var/www/toaster/poky/bitbake/lib/toaster/toastermain/wsgi.py"
439 &lt;Location /&gt;
440 WSGIProcessGroup toastern_wsgi
441 &lt;/Location&gt;
442 </literallayout>
443 If you are using Ubuntu or Debian,
444 you will need to enable the config and module for Apache:
445 <literallayout class='monospaced'>
446 $ sudo a2enmod wsgi
447 $ sudo a2enconf toaster
448 $ chmod +x bitbake/lib/toaster/toastermain/wsgi.py
449 </literallayout>
450 Finally, restart Apache to make sure all new configuration
451 is loaded.
452 For Ubuntu and Debian use:
453 <literallayout class='monospaced'>
454 $ sudo service apache2 restart
455 </literallayout>
456 For Fedora and RedHat use:
457 <literallayout class='monospaced'>
458 $ sudo service httpd restart
459 </literallayout>
460 </para></listitem>
461 <listitem><para>
462 Install the build runner service.
463 This service needs to be running in order to dispatch
464 builds.
465 Use this command:
466 <literallayout class='monospaced'>
467 /var/www/toaster/poky/bitbake/lib/toaster/manage.py runbuilds
468 </literallayout>
469 Here is an example:
470 <literallayout class='monospaced'>
471 #!/bin/sh
472 # toaster run builds dispatcher
473 cd /var/www/toaster/
474 source ./venv/bin/activate
475 ./bitbake/lib/toaster/manage.py runbuilds
476 </literallayout>
477 </para></listitem>
478 </orderedlist>
479 You can now open up a browser and start using Toaster.
480 </para>
481 </section>
482 </section>
483
484
485
486
487<!-- <section id='using-toaster-in-analysis-mode'>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500488 <title>Using Toaster in Analysis Mode</title>
489
Patrick Williamsf1e5d692016-03-30 15:21:19 -0500490
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500491 <para>
492 This section describes how to use Toaster in Analysis Mode
493 after setting Toaster up as a local instance or as a hosted
494 service.
495 </para>
496
497 <section id='setting-up-locally-and-running-in-analysis-mode'>
498 <title>Setting Up Locally and Running in Analysis Mode</title>
499
500 <para>
501 Follow these steps to set up a local instance of Toaster and
502 then run in Analysis Mode:
503 <orderedlist>
504 <listitem><para><emphasis>Prepare your Build System:</emphasis>
505 Be sure your system has the Toaster requirements
506 by following the steps in the
507 "<link linkend='toaster-establishing-toaster-system-dependencies'>Establishing Toaster System Dependencies</link>"
508 section.
509 </para></listitem>
510 <listitem><para><emphasis>Get Set Up to Use the Yocto Project:</emphasis>
511 Get the requirements set up so that you can use the
512 Yocto Project to build images.
513 See the
514 "<ulink url='&YOCTO_DOCS_QS_URL;#yp-resources'>Setting Up to Use the Yocto Project</ulink>"
515 section in the Yocto Project Quick Start for information.
516 </para></listitem>
517 <listitem><para><emphasis>Source your Build Environment Setup Script:</emphasis>
518 From your
519 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
520 (e.g. <filename>poky/build</filename>), source the build
521 environment setup script
522 <ulink url="&YOCTO_DOCS_REF_URL;#structure-core-script"><filename>&OE_INIT_FILE;</filename></ulink>
523 or
524 <ulink url="&YOCTO_DOCS_REF_URL;#structure-memres-core-script"><filename>oe-init-build-env-memres</filename></ulink>.
525 </para></listitem>
526 <listitem><para><emphasis>Start Toaster:</emphasis>
527 From the
528 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
529 start Toaster:
530 <literallayout class='monospaced'>
531 $ source toaster start
532 </literallayout>
533 </para></listitem>
534 <listitem><para><emphasis>Start Your Build Using BitBake:</emphasis>
535 Use the <filename>bitbake</filename> command to start your
536 build.
537 Here is an example that builds the
538 <filename>core-image-minimal</filename> image:
539 <literallayout class='monospaced'>
540 $ bitbake core-image-minimal
541 </literallayout>
542 </para></listitem>
543 <listitem><para><emphasis>Open Your Browser:</emphasis>
544 Open your browser and visit
545 <filename>http://host:port/toastergui</filename>.
546 For host and port values, see the output of the
547 <filename>source toaster start</filename> command.
548 For information on how to use Toaster, see the
549 "<link linkend='using-the-toaster-web-interface'>Using the Toaster Web Interface</link>"
550 section.
551 </para></listitem>
552 </orderedlist>
553 </para>
554
555 <para>
556
557 </para>
558 </section>
559
560 <section id='setting-up-a-hosted-service-and-running-in-analysis-mode'>
561 <title>Setting Up a Hosted Service and Running in Analysis Mode</title>
562
563 <para>
564 A hosted service resides on a shared server and allows
565 multiple users to take advantage of Toaster.
566 </para>
567
568 <para>
569 In a production environment, you might want to have multiple
570 local instances of the Toaster Logging Interface running on
571 various remote build machines, and have those local instances
572 access and use a single web server.
573 To do this, you need to do the following:
574 <itemizedlist>
575 <listitem><para>
576 Maintain a common SQL database.
577 </para></listitem>
578 <listitem><para>
579 Set up separate instances of BitBake servers
580 and Toaster Logging Interfaces for each of those
581 separate BitBake servers.
582 </para></listitem>
583 </itemizedlist>
584 </para>
585
586 <para>
587 The common SQL database allows the Web server to show data from
588 all the various BitBake builds.
589 Setting the SQL database outside of any
590 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
591 maintains a separation between the various builds.
592 The BitBake servers, the SQL server, and the Web server or
593 servers can be run on separate machines.
594 </para>
595
596 <para>
597 Follow these steps to set up and run a hosted service and run
598 Toaster in Analysis Mode:
599 <note>
600 The steps assume a Toaster installation path of
601 <filename>/opt/bitbake/</filename>.
602 </note>
603 <orderedlist>
604 <listitem><para><emphasis>Prepare your Build System:</emphasis>
605 Be sure your system has the Toaster requirements
606 by following the steps in the
607 "<link linkend='toaster-establishing-toaster-system-dependencies'>Establishing Toaster System Dependencies</link>"
608 section.
609 </para></listitem>
610 <listitem><para><emphasis>Get Set Up to Use the Yocto Project:</emphasis>
611 Get the requirements set up so that you can use the
612 Yocto Project to build images.
613 See the
614 "<ulink url='&YOCTO_DOCS_QS_URL;#yp-resources'>Setting Up to Use the Yocto Project</ulink>"
615 section in the Yocto Project Quick Start for information.
616 </para></listitem>
617 <listitem><para><emphasis>Install and Set up the Database Server:</emphasis>
618 You can use any SQL server out of the box.
619 It is recommended that you use
620 <filename>mysql-server</filename> because it has
621 the advantages of advanced SQL features along with a
622 fast and reliable database.
623 However, setting up <filename>mysql-server</filename>
624 is more complex and might require a Database
625 Administrator to tune it.</para>
626 <para>Another supported database backend is
627 <filename>sqlite3</filename>.
628 With <filename>sqlite3</filename>, you have the
629 advantage of no configuration and an easy installation.
630 However, Toaster still requires direct access to the
631 backend.
632 The <filename>sqlite</filename> backend is also slower
633 as compared to <filename>mysql-server</filename>, and
634 has no transactional support.</para>
635 <para>You should set up proper username and password
636 access on the shared database for everyone that will
637 be using Toaster.
638 You need administrator rights for the root account,
639 which is not the same thing as root access on the
640 machine.
641 Here is an example that installs
642 <filename>mysql-server</filename> and sets up
643 some user accounts and the database.
644 <literallayout class='monospaced'>
645 $ apt-get install mysql-server
646 $ mysql -u root
647 mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
648 mysql> GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
649 mysql> GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
650 mysql> CREATE DATABASE 'toaster';
651 </literallayout>
652 You need a separate clone of the
653 <ulink url='&YOCTO_DOCS_DEV_URL;#source-repositories'>Source Repositories</ulink>
654 for the Database Server.
655 This clone is only used for getting the latest Toaster
656 files.
657 You can set this up using the following Git command.
658 Be sure to set up the directory outside of any
659 Build Directories.
660 <literallayout class='monospaced'>
661 $ git clone git://git.yoctoproject.org/poky
662 </literallayout>
663 In the separately cloned tree for the Database Server,
664 edit the
665 <filename>bitbake/lib/toaster/toastermain/settings.py</filename>
666 file so that the <filename>DATABASES</filename> value
667 points to the previously created database server.
668 Use the username and password established
669 earlier.
670 Here is an example:
671 <literallayout class='monospaced'>
672 $ cat /opt/bitbake/lib/toaster/toastermain/settings.py
673 ...
674 DATABASES = {
675 'default': {
676 'ENGINE': 'django.db.backends.mysql',
677 'NAME': 'toaster',
678 'USER': 'newuser',
679 'PASSWORD': 'password',
680 'HOST': '192.168.0.25',
681 'PORT': '3306',
682 }
683 ...
684 </literallayout>
685 </para></listitem>
686 <listitem><para><emphasis>Install and Set Up the Web Server:</emphasis>
687 For a production environment, it is recommended that
688 you install and set up a front-end web server.
689 This server allows for load balancing and
690 multi-threading over Toaster and
691 <ulink url='https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/'><filename>django</filename> WSGI</ulink>.
692 Here is an example that uses Apache web server.
693 <literallayout class='monospaced'>
694 $ apt-get install apache2 libapache2-mod-wsgi
695 $ a2enmod wsgi
696 $ cat /etc/apache2/sites-available/000-default.conf
697
698 ...
699
700 # the WSGIPythonPath is global
701 WSGIPythonPath /opt/bitbake/lib/toaster/
702
703 ...
704
705 #snip - in VirtualHost
706 WSGIScriptAlias / /opt/bitbake/lib/toaster/toastermain/wsgi.py
707
708 &lt;Directory //opt/bitbake/lib/toaster/toastermain/&gt;
709 &lt;Files wsgi.py&gt;
710 Require all granted
711 &lt;/Files&gt;
712 &lt;/Directory&gt;
713
714 ...
715 </literallayout>
716 You need to collect static media from Toaster and
717 continue configuring Apache to serve that static
718 media:
719 <literallayout class='monospaced'>
720 $ mkdir /var/www.html/static &amp;&amp; cd /var/www.html/static
721 $ /opt/bitbake/lib/toaster/manage.py collectstatic
722 $ cat /etc/apache2/sites-available/000-default.conf
723
724 ...
725
726 # in VirtualHost, AHEAD of the WSGIScriptAlias definition
727 Alias /static/ /var/www.html/static/
728
729 &lt;Directory /var/www.html/static/&gt;
730 Require all granted
731 &lt;/Directory&gt;
732
733 ...
734
735 WSGIScript Alias / /opt/bitbake/lib/toaster/toastermain/wsgi.py
736
737 ...
738 </literallayout>
739 </para></listitem>
740 <listitem><para><emphasis>Start Toaster:</emphasis>
741 Synchronize the databases for toaster, and then start
742 up the web server.
743 Here is an example that continues with the assumed
744 components from the previous steps:
745 <literallayout class='monospaced'>
746 $ /opt/bitbake/lib/toaster/manage.py syncdb
747 $ /opt/bitbake/lib/toaster/manage.py migrate orm
748 $ /opt/bitbake/lib/toaster/manage.py migrate bldcontrol
749
750 $ service apache2 restart
751 </literallayout>
752 You can find general documentation on
753 <filename>manage.py</filename> at the
754 <ulink url='https://docs.djangoproject.com/en/1.7/ref/django-admin/'>Django</ulink>
755 site.
756 For reference information on Toaster-specific
757 <filename>manage.py</filename> commands,
758 see the
759 "<link linkend='toaster-useful-commands'>Useful Commands</link>"
760 section.
761 </para></listitem>
762 <listitem><para><emphasis>Enable Build Logging to the Common SQL Server for Each Build Directory you are Using:</emphasis>
763 You need to make sure that the
764 <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-toaster'><filename>toaster</filename></ulink>
765 class and build history are enabled.
766 This is done in a
767 <filename>toaster.conf</filename> file that is
768 created automatically by the toaster
769 <filename>start</filename> command,
770 and that lives inside the
771 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
772 in <filename>/conf/toaster.conf</filename>.</para>
773 <para>That file should include the following line:
774 <literallayout class='monospaced'>
775 INHERIT += "toaster buildhistory"
776 </literallayout>
777 For information on build history, see the
778 "<ulink url='&YOCTO_DOCS_REF_URL;#maintaining-build-output-quality'>Maintaining Build Output Quality</ulink>"
779 section in the Yocto Project Development
780 Manual.</para>
781 <para>You also need to point to the database that you set
782 up in step 3.
783 You can do this by exporting the <filename>DATABASE_URL</filename>
784 variable as follows:
785 <literallayout class='monospaced'>
786 export DATABASE_URL=mysql://newuser:password@192.168.0.25:3306/toaster
787 </literallayout>
788 This example assumes that you are using
789 <filename>mysql-server</filename>.
790 The IP address should be the IP address of your
791 database server.
792 </para></listitem>
793 <listitem><para><emphasis>Source your Build Environment Setup Script:</emphasis>
794 From your
795 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
796 on each of the build systems,
797 (e.g. <filename>poky/build</filename>), source the
798 build environment setup script (i.e.
799 <ulink url="&YOCTO_DOCS_REF_URL;#structure-core-script"><filename>&OE_INIT_FILE;</filename></ulink>
800 or
801 <ulink url="&YOCTO_DOCS_REF_URL;#structure-memres-core-script"><filename>oe-init-build-env-memres</filename></ulink>).
802 </para></listitem>
803 <listitem><para><emphasis>Start the BitBake Server:</emphasis>
804 Start the BitBake server using the following command:
805 <literallayout class='monospaced'>
Patrick Williamsf1e5d692016-03-30 15:21:19 -0500806 $ bitbake &dash;&dash;postread conf/toaster.conf &dash;&dash;server-only -t xmlrpc -B localhost:0 &amp;&amp; export BBSERVER=localhost:-1
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500807 </literallayout>
808 </para></listitem>
809 <listitem><para><emphasis>Start the Logging Server:</emphasis>
810 Start the Toaster Logging Interface using the following
811 command:
812 <literallayout class='monospaced'>
Patrick Williamsf1e5d692016-03-30 15:21:19 -0500813 $ nohup bitbake &dash;&dash;observe-only -u toasterui >toaster_ui.log &amp;
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500814 </literallayout>
815 <note>
816 No hard-coded ports are used in the BitBake options
817 as there is enough code to run
818 <filename>autodiscovery</filename> for BitBake
819 ports.
820 Doing so prevents collisions.
821 </note>
822 </para></listitem>
823 <listitem><para><emphasis>Start Builds Using BitBake:</emphasis>
824 Use the <filename>bitbake</filename> command to start a
825 build on a build system.
826 Here is an example that builds the
827 <filename>core-image-minimal</filename> image:
828 <literallayout class='monospaced'>
829 $ bitbake core-image-minimal
830 </literallayout>
831 When you are finished with a build in a given
832 Build Directory, be sure to <filename>kill</filename>
833 the BitBake server for that build area:
834 <literallayout class='monospaced'>
835 $ bitbake -m
836 </literallayout>
837 </para></listitem>
838 </orderedlist>
839 </para>
840
841 <para>
842 For information on how to use the Toaster web interface,
843 see the
844 "<link linkend='using-the-toaster-web-interface'>Using the Toaster Web Interface</link>"
845 section.
846 </para>
847 </section>
848 </section>
849
850 <section id='using-toaster-in-build-mode'>
851 <title>Using Toaster in Build Mode</title>
852
853 <para>
854 This section describes how to use Toaster in Build Mode
855 after setting Toaster up as a local instance or as a hosted
856 service.
857 </para>
858
859 <section id='setting-up-locally-and-running-in-build-mode'>
860 <title>Setting Up Locally and Running in Build Mode</title>
861
862 <para>
863 Follow these steps to set up a local instance of Toaster and
864 then run in Build Mode:
865 <orderedlist>
866 <listitem><para><emphasis>Prepare your Build System:</emphasis>
867 Be sure your system has the Toaster requirements
868 by following the steps in the
869 "<link linkend='toaster-establishing-toaster-system-dependencies'>Establishing Toaster System Dependencies</link>"
870 section.
871 </para></listitem>
872 <listitem><para><emphasis>Get Set Up to Use the Yocto Project:</emphasis>
873 Get the requirements set up so that you can use the
874 Yocto Project to build images.
875 See the
876 "<ulink url='&YOCTO_DOCS_QS_URL;#yp-resources'>Setting Up to Use the Yocto Project</ulink>"
877 section in the Yocto Project Quick Start for information.
878 </para></listitem>
879 <listitem><para><emphasis>Start Toaster:</emphasis>
880 From the root of the source directory (e.g
881 <filename>poky/</filename>), run the following command:
882 <literallayout class='monospaced'>
883 $ bitbake/bin/toaster
884 </literallayout>
885 </para></listitem>
886 <listitem><para><emphasis>Create a Superuser:</emphasis>
887 Django will ask you if you want to create a superuser.
888 You can skip this step, but it is recommended that you
889 create a superuser.
890 You can use the superuser to access the Django
891 administration interface and make changes to the
892 Toaster configuration.
893 </para></listitem>
894 <listitem><para><emphasis>Select the Build Log Directory:</emphasis>
895 Toaster asks you to specify the directory where you
896 want to store the build log files.
897 Choosing a directory for these files makes sure they
898 are always available to you.
899 If you do not choose a directory, the logs can
900 disappear (e.g. deleting the Build Directory).</para>
901 <para>When Toaster prompts you for the Build Log
902 directory, you can select the suggested default
903 or provide a path to a different directory.
904 </para></listitem>
905 <listitem><para><emphasis>Specify the Layer Checkout Directory:</emphasis>
906 Toaster asks you to specify the directory into which
907 layers are checked out.
908 Toaster clones any layers needed for your builds
909 inside this directory.</para>
910 <para>When Toaster prompts you for the Layer
911 checkout directory, you can select the suggested
912 default or provide a path to a different directory.
913 </para></listitem>
914 <listitem><para><emphasis>Specify the Build Directory Path:</emphasis>
915 Toaster asks you to specify the path to the
916 Build Directory.
917 You can select the suggested default or provide a
918 path to a different directory.
919 </para></listitem>
920 <listitem><para><emphasis>Choose Whether or not to Import a Default Toaster Configuration File:</emphasis>
921 Toaster asks you if you want to import a default
922 Toaster configuration file.
923 Toaster configurations are stored in
924 JSON files called
925 <filename>toasterconf.json</filename>.
926 For information on JSON files, see the
927 "<link linkend='toaster-json-files'>JSON Files</link>"
928 section.</para>
929 <para>You can skip importing a configuration file
930 by entering "0" at the prompt.
931 However, it is recommended that you import one of the
932 configuration files listed during this step.
933 You can always amend the imported configuration during
934 a later stage through the Django administration
935 interface.</para>
936 <para>For general information on Django, see the
937 available
938 <ulink url='https://docs.djangoproject.com/en/1.7/'>documentation</ulink>.
939 You can also find information on Toaster-specific
940 <filename>manage.py</filename> commands in the
941 "<link linkend='toaster-useful-commands'>Useful Commands</link>"
942 section.
943 </para></listitem>
944 <listitem><para><emphasis>Open the Browser:</emphasis>
945 If no browser window appears, open your favorite
946 browser and enter the following:
947 <literallayout class='monospaced'>
948 http://localhost:8000/toastergui
949 </literallayout>
950 You can now use the Toaster web interface.
951 </para></listitem>
952 </orderedlist>
953 </para>
954 </section>
955
956 <section id='setting-up-a-hosted-service-and-running-in-build-mode'>
957 <title>Setting Up a Hosted Service and Running in Build Mode</title>
958
959 <para>
960 Follow these steps to set up a hosted service and run Toaster
961 in Build Mode:
962 <orderedlist>
963 <listitem><para><emphasis>Prepare your Build System:</emphasis>
964 Be sure your system has the Toaster requirements
965 by following the steps in the
966 "<link linkend='toaster-establishing-toaster-system-dependencies'>Establishing Toaster System Dependencies</link>"
967 section.
968 </para></listitem>
969 <listitem><para><emphasis>Get Set Up to Use the Yocto Project:</emphasis>
970 Get the requirements set up so that you can use the
971 Yocto Project to build images.
972 See the
973 "<ulink url='&YOCTO_DOCS_QS_URL;#yp-resources'>Setting Up to Use the Yocto Project</ulink>"
974 section in the Yocto Project Quick Start for information.
975 </para></listitem>
976 <listitem><para><emphasis>Be Sure Management is Enabled:</emphasis>
977 If you are running Toaster under Apache, you need to
978 be sure management is enabled.
979 To enable management, set
980 <filename>MANAGED</filename> to "True" by adding
981 the following to the
982 <filename>bitbake/lib/toaster/settings.py</filename>
983 file:
984 <literallayout class='monospaced'>
985 MANAGED="True"
986 </literallayout>
987 </para></listitem>
988 <listitem><para><emphasis>Set Up Toaster for Normal Usage:</emphasis>
989 You need to configure each build environment, layer
990 sources, and BitBake versions.</para>
991 <para>Verify that your releases have been loaded correctly by
992 using the Toaster web interface to create a new
993 project.
994 Check the "Releases" dropdown menu to be sure your
995 newly specified releases exist.</para>
996 <para>If you want to use the administration interface
997 for this step, here is a set of example commands
998 with some descriptions as an example:
999 <literallayout class='monospaced'>
1000 # Create the user under which the builds will run
1001 $ adduser poky
1002
1003 # Bring up the administration interface
1004 $xdg-open http://<replaceable>server-address</replaceable>/admin/
1005
1006 # Login with the admin user previously created
1007
1008 # Go to the BuildEnvironment object in Build Environments and
1009 # set address to local host, sourcedir to /home/poky, and
1010 # builddir to /home/pokybuild.
1011 #
1012 # Save your changes and exit
1013
1014 # Go to Home, Layer Sources and select add Layer Source
1015 # Name: OpenEmbedded, Sourcetype: layerindex,
1016 # Apiurl: http://layers openembedded.org/layerindex/api/
1017 # Save your changes and exit
1018
1019 # Go to Home, Bitbake Versions, Add bitbake version;
1020 # Take version information from: http://git.openembedded.org/bitbake/refs/heads,
1021 # This example assumes "master" version.
1022 # set Name: master, Giturl git://git.openembedded.org/bitbake
1023 # branch master, dirpath /
1024 # Save your changes and exit
1025 </literallayout>
1026 You also need to configure the project releases, the
1027 default variables, and update information from the
1028 layer index.
1029 Continuing with the example:
1030 <literallayout class='monospaced'>
1031 # Go to Home, Releases, Add release
1032 # set Name: master, Description: Current master release, select Bitbake Version,
1033 # and Branch: master
1034 # Save your changes and exit
1035
1036 # Go to Home, Toaster Settings, select the Setting for DEFAULT_RELEASE
1037 # set Helptext: This selects the default release., Value: master
1038 # Save your changes and exit
1039
1040 # Go to Home, Bitbake Versions, Add bitbake version;
1041 # take version information from : http://git.openembedded.org/bitbake/refs/heads,
1042 # this manual assumes the master version
1043 # set Name: master, Giturl git://git.openembedded.org/bitbake
1044 # branch master, dirpath /
1045 # Save your changes and exit
1046
1047 # Update the information
1048 # bitbake/lib/toaster/manage.py lsupdates
1049 </literallayout>
1050 For reference information on Toaster-specific
1051 <filename>manage.py</filename> commands, see the
1052 "<link linkend='toaster-useful-commands'>Useful Commands</link>"
1053 section.
1054 </para></listitem>
1055 <listitem><para><emphasis>Install and Set up the Database Server:</emphasis>
1056 You can use any SQL server out of the box.
1057 It is recommended that you use
1058 <filename>mysql-server</filename> because it has
1059 the advantages of advanced SQL features along with a
1060 fast and reliable database.
1061 However, setting up <filename>mysql-server</filename>
1062 is more complex and might require a Database
1063 Administrator to tune it.</para>
1064 <para>Another supported database backend is
1065 <filename>sqlite3</filename>.
1066 With <filename>sqlite3</filename>, you have the
1067 advantage of no configuration and an easy installation.
1068 However, Toaster still requires direct access to the
1069 backend.
1070 The <filename>sqlite</filename> backend is also slower
1071 as compared to <filename>mysql-server</filename>, and
1072 has no transactional support.</para>
1073 <para>You should set up proper username and password
1074 access on the shared database for everyone that will
1075 be using Toaster.
1076 You need administrator rights for the root account,
1077 which is not the same thing as root access on the
1078 machine.
1079 Here is an example that installs
1080 <filename>mysql-server</filename> and sets up
1081 some user accounts and the database.
1082 <literallayout class='monospaced'>
1083 $ apt-get install mysql-server
1084 $ mysql -u root
1085 mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
1086 mysql> GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
1087 mysql> GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
1088 mysql> CREATE DATABASE 'toaster';
1089 </literallayout>
1090 You need a separate clone of the
1091 <ulink url='&YOCTO_DOCS_DEV_URL;#source-repositories'>Source Repositories</ulink>
1092 for the Database Server.
1093 This clone is only used for getting the latest Toaster
1094 files.
1095 You can set this up using the following Git command.
1096 Be sure to set up the directory outside of any
1097 Build Directories.
1098 <literallayout class='monospaced'>
1099 $ git clone git://git.yoctoproject.org/poky
1100 </literallayout>
1101 In the separately cloned tree for the Database Server,
1102 edit the
1103 <filename>bitbake/lib/toaster/toastermain/settings.py</filename>
1104 file so that the <filename>DATABASES</filename> value
1105 points to the previously created database server.
1106 Use the username and password established
1107 earlier.
1108 Here is an example:
1109 <literallayout class='monospaced'>
1110 $ cat /opt/bitbake/lib/toaster/toastermain/settings.py
1111 ...
1112 DATABASES = {
1113 'default': {
1114 'ENGINE': 'django.db.backends.mysql',
1115 'NAME': 'toaster',
1116 'USER': 'newuser',
1117 'PASSWORD': 'password',
1118 'HOST': '192.168.0.25',
1119 'PORT': '3306',
1120 }
1121 ...
1122 </literallayout>
1123 </para></listitem>
1124 <listitem><para><emphasis>Create the Database</emphasis>
1125 Use the following commands to create the default
1126 database structure:
1127 <literallayout class='monospaced'>
1128 $ bitbake/lib/toaster/manage.py syncdb
1129 $ bitbake/lib/toaster/manage.py migrate orm
1130 $ bitbake/lib/toaster/manage.py migrate bldcontrol
1131 </literallayout>
1132 The interface asks you if you want to create a
1133 superuser.
1134 Do not skip this step.
1135 You will use the superuser account to access the
1136 administration interface and make changes to the
1137 Toaster configuration.
1138 </para></listitem>
1139 <listitem><para><emphasis>Select Where the Build Process Takes Place:</emphasis>
1140 You need to create three directories for storing
1141 build artifacts, downloading sources, and running
1142 builds.
1143 All three directories need to be writable by
1144 the user, which is "poky" in this example.
1145 The build artifacts directory needs to readable by the
1146 apache user.
1147 You also need free disk space in the range of
1148 100 Gbytes.
1149 Following are three suggested directories:
1150 <literallayout class='monospaced'>
1151 /home/poky/buildartifacts/
1152 /home/poky/build/
1153 /home/poky/sources/
1154 </literallayout>
1155 </para></listitem>
1156 <listitem><para><emphasis>Set Up the <filename>toasterconf.json</filename> File:</emphasis>
1157 <ulink url='https://wiki.yoctoproject.org/wiki/File:Toasterconf.json.txt.patch'>Download the hosted <filename>toasterconf.json</filename> file</ulink>
1158 from the Yocto Project wiki and edit it to suit your
1159 environment.
1160 For information on the relevant sections of the file,
1161 see the
1162 "<link linkend='toaster-json-files'>JSON Files</link>"
1163 section.</para>
1164 <para>After editing the file, load it by running
1165 the following:
1166 <literallayout class='monospaced'>
1167 $ bitbake/lib/toaster/manage.py loadconf path-to-toasterconf.json-file
1168 </literallayout>
1169 For reference information on Toaster-specific
1170 <filename>manage.py</filename>, see the
1171 "<link linkend='toaster-useful-commands'>Useful Commands</link>"
1172 section.
1173 </para></listitem>
1174 <listitem><para><emphasis>Check the Toaster Settings:</emphasis>
1175 Configure the build environment by running the
1176 following:
1177 <literallayout class='monospaced'>
1178 $ bitbake/lib/toaster/manage.py checksettings
1179 </literallayout>
1180 When prompted, paste in the directory paths created
1181 previously during Step 7.
1182 For reference information on Toaster-specific
1183 <filename>manage.py</filename>, see the
1184 "<link linkend='toaster-useful-commands'>Useful Commands</link>"
1185 section.
1186 </para></listitem>
1187 <listitem><para><emphasis>Install and Set Up the Web Server:</emphasis>
1188 For a production environment, it is recommended that
1189 you install and set up a front-end web server.
1190 This server allows for load balancing and
1191 multi-threading over Toaster and
1192 <ulink url='https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/'><filename>django</filename> WSGI</ulink>.
1193 Here is an example that uses Apache web server:
1194 <literallayout class='monospaced'>
1195 $ apt-get install apache2 libapache2-mod-wsgi
1196 $ a2enmod wsgi
1197 $ cat /etc/apache2/sites-available/000-default.conf
1198
1199 ...
1200
1201 # the WSGIPythonPath is global
1202 WSGIPythonPath /opt/bitbake/lib/toaster/
1203
1204 ...
1205
1206 #snip - in VirtualHost
1207 WSGIScriptAlias / /opt/bitbake/lib/toaster/toastermain/wsgi.py
1208
1209 &lt;Directory //opt/bitbake/lib/toaster/toastermain/&gt;
1210 &lt;Files wsgi.py&gt;
1211 Require all granted
1212 &lt;/Files&gt;
1213 &lt;/Directory&gt;
1214
1215 ...
1216 </literallayout>
1217 You need to collect static media from Toaster and
1218 continue configuring Apache to serve that static
1219 media:
1220 <literallayout class='monospaced'>
1221 $ mkdir /var/www.html/static &amp;&amp; cd /var/www.html/static
1222 $ /opt bitbake/lib/toaster/manage.py collectstatic
1223 $ cat /etc/apache2/sites-available/000-default.conf
1224
1225 ...
1226
1227 # in VirtualHost, AHEAD of the WSGIScriptAlias definition
1228 Alias /static/ /var/www.html/static/
1229
1230 &lt;Directory /var/www.html/static/&gt;
1231 Require all granted
1232 &lt;/Directory&gt;
1233
1234 ...
1235
1236 WSGIScript Alias / /opt/bitbake/lib/toaster/toastermain/wsgi.py
1237
1238 ...
1239 </literallayout>
1240 </para></listitem>
1241 <listitem><para><emphasis>Start Toaster:</emphasis>
1242 Synchronize the databases for Toaster, and then start
1243 up the web server.
1244 Here is an example that continues with the assumed
1245 components from the previous steps:
1246 <literallayout class='monospaced'>
1247 $ /opt/bitbake/lib/toaster/manage.py syncdb
1248 $ /opt/bitbake/lib/toaster/manage.py migrate orm
1249 $ /opt/bitbake/lib/toaster/manage.py migrate bldcontrol
1250
1251 $ service apache2 restart
1252 </literallayout>
1253 For reference information on the
1254 <filename>manage.py</filename> commands used here,
1255 see the
1256 "<link linkend='toaster-useful-commands'>Useful Commands</link>"
1257 section.
1258 </para></listitem>
1259 <listitem><para><emphasis>Set up Build Control and Open the Web Interface:</emphasis>
1260 You need to run the build control manager.
1261 You can do this as shown in the following example:
1262 <literallayout class='monospaced'>
1263 # as the "poky" user, start the runbuilds command in a loop (or put it in crontab!)
1264 $ sudo -i -u poky
1265 $ while true; do /opt/bitbake/lib/toaster/manage.py runbuilds; sleep 10; done
1266
1267 # open up the web interface
1268 $ xdg-open http://[server-address]/toastergui/
1269 </literallayout>
1270 It is suggested that you enable build control by
1271 setting <filename>runbuilds</filename> in the
1272 <filename>crontab</filename> as follows:
1273 <literallayout class='monospaced'>
1274 $ crontab -l
1275 * * * * * /opt/bitbake/lit/toaster/manage.py runbuilds
1276 </literallayout>
1277 </para></listitem>
1278 <listitem><para><emphasis>Open the Browser:</emphasis>
1279 Once the Apache server is running, connect to it with
1280 your favorite browser and verify that the Toaster
1281 interface comes up:
1282 <literallayout class='monospaced'>
1283 http://localhost:8000/toastergui
1284 </literallayout>
1285 You can track accesses and errors in the Apache
1286 service logs.
1287 </para></listitem>
1288 </orderedlist>
1289 </para>
1290 </section>
1291 </section>
Patrick Williamsf1e5d692016-03-30 15:21:19 -05001292-->
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001293
1294 <section id='using-the-toaster-web-interface'>
1295 <title>Using the Toaster Web Interface</title>
1296
1297 <para>
1298 The Toaster web interface allows you to do the following:
1299 <itemizedlist>
1300 <listitem><para>
1301 Browse published layers in the
1302 <ulink url='http://layers.openembedded.org'>OpenEmbedded Metadata Index</ulink>
1303 that are available for your selected version of the build
1304 system.
1305 </para></listitem>
1306 <listitem><para>
1307 Import your own layers for building.
1308 </para></listitem>
1309 <listitem><para>
1310 Add and remove layers from your configuration.
1311 </para></listitem>
1312 <listitem><para>
1313 Set configuration variables.
1314 </para></listitem>
1315 <listitem><para>
1316 Select a target or multiple targets to build.
1317 </para></listitem>
1318 <listitem><para>
1319 Start your builds.
1320 </para></listitem>
1321 <listitem><para>
1322 See what was built (recipes and packages) and what
1323 packages were installed into your final image.
1324 </para></listitem>
1325 <listitem><para>
1326 Browse the directory structure of your image.
1327 </para></listitem>
1328 <listitem><para>
1329 See the value of all variables in your build configuration,
1330 and which files set each value.
1331 </para></listitem>
1332 <listitem><para>
1333 Examine error, warning and trace messages to aid in
1334 debugging.
1335 </para></listitem>
1336 <listitem><para>
1337 See information about the BitBake tasks executed and
1338 reused during your build, including those that used
1339 shared state.
1340 </para></listitem>
1341 <listitem><para>
1342 See dependency relationships between recipes, packages
1343 and tasks.
1344 </para></listitem>
1345 <listitem><para>
1346 See performance information such as build time, task time,
1347 CPU usage, and disk I/O.
1348 </para></listitem>
1349 </itemizedlist>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001350 </para>
Patrick Williamsf1e5d692016-03-30 15:21:19 -05001351
1352 <section id='web-interface-videos'>
1353 <title>Toaster Web Interface Videos</title>
1354
1355 <para>
1356 Following are several videos that show how to use the Toaster GUI:
1357 <itemizedlist>
1358 <listitem><para><emphasis>Build Configuration:</emphasis>
1359 This
1360 <ulink url='https://www.youtube.com/watch?v=qYgDZ8YzV6w'>video</ulink>
1361 overviews and demonstrates build configuration for Toaster.
1362 </para></listitem>
1363 <listitem><para><emphasis>Build Custom Layers:</emphasis>
1364 This
1365 <ulink url='https://www.youtube.com/watch?v=QJzaE_XjX5c'>video</ulink>
1366 shows you how to build custom layers that are used with
1367 Toaster.
1368 </para></listitem>
1369 <listitem><para><emphasis>Toaster Homepage and Table Controls:</emphasis>
1370 This
1371 <ulink url='https://www.youtube.com/watch?v=QEARDnrR1Xw'>video</ulink>
1372 goes over the Toaster entry page, and provides
1373 an overview of the data manipulation capabilities of
1374 Toaster, which include search, sorting and filtering by
1375 different criteria.
1376 </para></listitem>
1377 <listitem><para><emphasis>Build Dashboard:</emphasis>
1378 This
1379 <ulink url='https://www.youtube.com/watch?v=KKqHYcnp2gE'>video</ulink>
1380 shows you the build dashboard, a page providing an
1381 overview of the information available for a selected build.
1382 </para></listitem>
1383 <listitem><para><emphasis>Image Information:</emphasis>
1384 This
1385 <ulink url='https://www.youtube.com/watch?v=XqYGFsmA0Rw'>video</ulink>
1386 walks through the information Toaster provides
1387 about images: packages installed and root file system.
1388 </para></listitem>
1389 <listitem><para><emphasis>Configuration:</emphasis>
1390 This
1391 <ulink url='https://www.youtube.com/watch?v=UW-j-T2TzIg'>video</ulink>
1392 provides Toaster build configuration information.
1393 </para></listitem>
1394 <listitem><para><emphasis>Tasks:</emphasis>
1395 This
1396 <ulink url='https://www.youtube.com/watch?v=D4-9vGSxQtw'>video</ulink>
1397 shows the information Toaster provides about the
1398 tasks run by the build system.
1399 </para></listitem>
1400 <listitem><para><emphasis>Recipes and Packages Built:</emphasis>
1401 This
1402 <ulink url='https://www.youtube.com/watch?v=x-6dx4huNnw'>video</ulink>
1403 shows the information Toaster provides about recipes
1404 and packages built.
1405 </para></listitem>
1406 <listitem><para><emphasis>Performance Data:</emphasis>
1407 This
1408 <ulink url='https://www.youtube.com/watch?v=qWGMrJoqusQ'>video</ulink>
1409 shows the build performance data provided by
1410 Toaster.
1411 </para></listitem>
1412 </itemizedlist>
1413 </para>
1414 </section>
1415
1416 <section id='toaster-web-interface-preferred-version'>
1417 <title>Building a Specific Recipe Given Multiple Versions</title>
1418
1419 <para>
1420 Occasionally, a layer might provide more than one version of
1421 the same recipe.
1422 For example, the <filename>openembedded-core</filename> layer
1423 provides two versions of the <filename>bash</filename> recipe
1424 (i.e. 3.2.48 and 4.3.30-r0) and two versions of the
1425 <filename>which</filename> recipe (i.e. 2.21 and 2.18).
1426 The following figure shows this exact scenario:
1427 <imagedata fileref="figures/bash-oecore.png" align="center" width="9in" depth="6in" />
1428 </para>
1429
1430 <para>
1431 By default, the OpenEmbedded build system builds one of the
1432 two recipes.
1433 For the <filename>bash</filename> case, version 4.3.30-r0 is
1434 built by default.
1435 Unfortunately, Toaster as it exists, is not able to override
1436 the default recipe version.
1437 If you would like to build bash 3.2.48, you need to set the
1438 <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_VERSION'><filename>PREFERRED_VERSION</filename></ulink>
1439 variable.
1440 You can do so from Toaster, using the "Add variable" form,
1441 which is available in the "BitBake variables" page of the
1442 project configuration section as shown in the following screen:
1443 <imagedata fileref="figures/add-variable.png" align="center" width="9in" depth="6in" />
1444 </para>
1445
1446 <para>
1447 To specify <filename>bash</filename> 3.2.48 as the version to build,
1448 enter "PREFERRED_VERSION_bash" in the "Variable" field, and "3.2.48"
1449 in the "Value" field.
1450 Next, click the "Add variable" button:
1451 <imagedata fileref="figures/set-variable.png" align="center" width="9in" depth="6in" />
1452 </para>
1453
1454 <para>
1455 After clicking the "Add variable" button, the settings for
1456 <filename>PREFERRED_VERSION</filename> are added to the bottom
1457 of the BitBake variables list.
1458 With these settings, the OpenEmbedded build system builds the
1459 desired version of the recipe rather than the default version:
1460 <imagedata fileref="figures/variable-added.png" align="center" width="9in" depth="6in" />
1461 </para>
1462 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001463 </section>
1464
1465<!--
1466 <section id='toaster-gui-vids-1'>
1467 <title>Toaster Homepage and Table Controls</title>
1468
1469 <para>
1470 This video goes over the Toaster entry page, and provides
1471 an overview of the data manipulation capabilities of Toaster,
1472 which include search, sorting and filtering by different
1473 criteria.
1474 <mediaobject>
1475 <videoobject>
1476 <videodata width="640" height="480" fileref="http://www.youtube.com/v/QEARDnrR1Xw"></videodata>
1477 </videoobject>
1478 </mediaobject>
1479 </para>
1480 </section>
1481
1482 <section id='toaster-gui-vids-2'>
1483 <title>Build Dashboard</title>
1484
1485 <para>
1486 This video shows you the build dashboard, a page providing an
1487 overview of the information available for a selected build.
1488 <mediaobject>
1489 <videoobject>
1490 <videodata width="640px" height="480px" fileref="http://www.youtube.com/v/KKqHYcnp2gE"></videodata>
1491 </videoobject>
1492 </mediaobject>
1493 </para>
1494 </section>
1495
1496 <section id='toaster-gui-vids-3'>
1497 <title>Image Information</title>
1498
1499 <para>
1500 This video walks through the information Toaster provides
1501 about images: packages installed and root file system.
1502 <mediaobject>
1503 <videoobject>
1504 <videodata width="640px" height="480px" fileref="http://www.youtube.com/v/XqYGFsmA0Rw"></videodata>
1505 </videoobject>
1506 </mediaobject>
1507 </para>
1508 </section>
1509
1510 <section id='toaster-gui-vids-4'>
1511 <title>Configuration</title>
1512
1513 <para>
1514 This video shows the information Toaster provides about build
1515 configuration.
1516 <mediaobject>
1517 <videoobject>
1518 <videodata width="640px" height="480px" fileref="http://www.youtube.com/v/UW-j-T2TzIg"></videodata>
1519 </videoobject>
1520 </mediaobject>
1521 </para>
1522 </section>
1523
1524 <section id='toaster-gui-vids-5'>
1525 <title>Tasks</title>
1526
1527 <para>
1528 This video shows the information Toaster provides about the
1529 tasks run by the build system.
1530 <mediaobject>
1531 <videoobject>
1532 <videodata width="640px" height="480px" fileref="http://www.youtube.com/v/D4-9vGSxQtw"></videodata>
1533 </videoobject>
1534 </mediaobject>
1535 </para>
1536 </section>
1537
1538 <section id='toaster-gui-vids-6'>
1539 <title>Recipes and Packages Built</title>
1540
1541 <para>
1542 This video shows the information Toaster provides about recipes
1543 and packages built.
1544 <mediaobject>
1545 <videoobject>
1546 <videodata width="640px" height="480px" fileref="http://www.youtube.com/v/x-6dx4huNnw"></videodata>
1547 </videoobject>
1548 </mediaobject>qYgDZ8YzV6w
1549 </para>
1550 </section>
1551 <section id='toaster-gui-vids-7'>
1552 <title>Performance Data</title>
1553
1554 <para>
1555 This video shows the build performance data provided by
1556 Toaster.
1557 <mediaobject>
1558 <videoobject>
1559 <videodata width="640px" height="480px" fileref="http://www.youtube.com/v/qWGMrJoqusQ"></videodata>
1560 </videoobject>
1561 </mediaobject>
1562 </para>
1563 </section>
1564-->
1565</chapter>