<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.yoctoproject.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Belenbarrospena</id>
	<title>Yocto Project - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.yoctoproject.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Belenbarrospena"/>
	<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/Special:Contributions/Belenbarrospena"/>
	<updated>2026-04-07T11:15:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=File:Research_output.pdf&amp;diff=20166</id>
		<title>File:Research output.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=File:Research_output.pdf&amp;diff=20166"/>
		<updated>2016-09-12T18:38:35Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=20101</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=20101"/>
		<updated>2016-08-31T10:03:23Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patch sets for integration into Bitbake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to the [https://lists.yoctoproject.org/listinfo/toaster/| Toaster mailing list] for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster source code, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches are submitted to the upstream mailing lists, they are in pretty good shape. That helps the project maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Test the changes. Run the Django unit tests. People put effort into these so we should make sure we use them.  This assumes you have phantomjs installed.  This can usually be done from the distribution &amp;lt;code&amp;gt; apt-get install phantomjs&amp;lt;/code&amp;gt;,  for example.  If you want to test against Chrome or Firefox, see the README in bitbake/lib/toaster/tests/browser.  &lt;br /&gt;
  &amp;lt;code&amp;gt; pip3 install selenium &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;TOASTER_TESTS_BROWSER=phantomjs bitbake/lib/toaster/manage.py test orm toastergui tests.browser &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster source code, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them. his assumes you have phantomjs installed.  This can usually be done from the distribution &amp;lt;code&amp;gt; apt-get install phantomjs&amp;lt;/code&amp;gt;,  for example.  If you want to test against Chrome or Firefox, see the README in bitbake/lib/toaster/tests/browser.&lt;br /&gt;
  &amp;lt;code&amp;gt; pip3 install selenium &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;TOASTER_TESTS_BROWSER=phantomjs bitbake/lib/toaster/manage.py test orm toastergui tests.browser &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Note: If the patch creates any NEW files, the integration scripts that pull it into bitbake will fail. So, if new files are created as part of this patch set, you need to explicitly point that out in the body of the email for the patch set or do it as a PR rather than as a patch set.&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
===== Too Big =====&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
===== Different Lists =====&lt;br /&gt;
&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.  Patches for  toaster.bbclass also go to the openembedded--core list.  If you have a branch that spans both (let&#039;s say you made coupled changes to meta/classes/toaster.bbclass and bitbake/lib/bb/ui/buildinfohelper.py.  then your branch needs to be split into 2 different patch set submissions. Let&#039;s assume there are 5 commits, 2 to meta and 3 to bitbake. Currently, you can do this suboptimal workaround:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  ./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&lt;br /&gt;
  ./scripts/create-pull-request -d meta -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This will create 2 pull-XXXX directories, one for openembedded and one for bitbake-devel. Unfortunately, the meta pull-XXXX dir will have patches numbered 1-5 with 3 0 byte files and the bitbake pull-XXXX dir will have patches numbered 1-5 with 2 0 byte files.  You delete the 0 byte files and use a text editor to do the renumbering.  At some point it would be nice to have the create-pull-request do this for us but this level of file modification would probably mean moving it out of a shell script and into python.  Once the files have been renumbered (in the subject line and the cover letter) the send-pull-request can be used as referenced above.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
A different workaround that may work better for you is to create two branches which lets you use the create-pull-request and send-pull-request scripts normally on each branch. Just make sure to target them correctly&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  git checkout -b yourname/submit/the/target/branch-ForBitbake yourname/submit/the/target/branch&lt;br /&gt;
  git rebase -i&lt;br /&gt;
  # delete all the commits that are OE specific in the set you wish to submit&lt;br /&gt;
  git push -u poky-contrib yourname/submit/the/target/branchForBitbake:yourname/submit/the/target/branchForBitbake&lt;br /&gt;
  ./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&lt;br /&gt;
  git checkout -b yourname/submit/the/target/branch-ForOE yourname/submit/the/target/branch&lt;br /&gt;
  git rebase -i&lt;br /&gt;
  # delete all the commits that are bitbake specific in the set you wish to submit&lt;br /&gt;
  git push -u poky-contrib yourname/submit/the/target/branchForOE:yourname/submit/the/target/branchForOE&lt;br /&gt;
  ./scripts/create-pull-request -d meta -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== One Patch of a Long Patch Set Needs Resubmission =====&lt;br /&gt;
Suppose you upstream a 10 commit patch set to the bitbake-devel list and someone finds an issue with patch #3.  Regenerating the whole series is silly so how do you address this?  First, follow the bitbake submission steps until you end up on the yourname/submit/the/target/branch  branch.  Then you can (note &amp;lt;strong&amp;gt;the reset --hard will wipe any local changes in your working dir so commit or stash first&amp;lt;/strong&amp;gt;):&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  git checkout -b yourname/submit/the/target/branch-newHEAD&lt;br /&gt;
  git reset --hard &amp;lt;commit of resubmission issue&amp;gt; &lt;br /&gt;
  git commit --amend --signoff &lt;br /&gt;
  git send-email --in-reply-to=&amp;quot;longNumber.git.me@mycomp.com&amp;quot; --subject-prefix=&amp;quot;bitbake-devel] [PATCHVX 03/10&amp;quot;  --to=bitbake-devel@lists.openembedded.org --no-chain-reply-to --suppress-cc=all -M -1 --relative=bitbake&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The longNumber.git.me@mycomp.com comes from the email message id for the particular patch #3 so that the email threading works. In gmail, you can click on the dropdown button on the right side of the screen and choose &amp;quot;Show Original&amp;quot;.  This will have a field in the header like Message-Id: &amp;lt;4551b56f132497c055f39567946a5d3be347d770.1468363530.git.myemailusername@mycompany.com&amp;gt;  The entire string except the &#039;&amp;lt;&amp;gt;&#039; are used.  for example:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  --in-reply-to=&amp;quot;4551b56f132497c055f39567946a5d3be347d770.1468363530.git.myemailusername@mycompany.com&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to switch back to the yourname/submit/the/target/branch and push that to poky-contrib/toaster-next!  This is a little harder since you will have previously pushed a different version of the patch to poky-contrib/toaster-next.  You can do a rebase/merge by hand but that can be prone to error.  Here&#039;s the working sequence assuming it&#039;s been a few days between the first poky-contrib/toaster-next push and the one you are working on now (meaning both poky-contrib/toaster-next and origin/master have changes).&amp;lt;br&amp;gt;&lt;br /&gt;
The first issue you are likely to face is that the git filter-branch command in the standard instructions may sign off on too many commits.  If you know you just want to sign off on the last 7 commits on the yourname/submit/the/target/branch you can:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; HEAD~7..HEAD&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once your signoff is copacetic, updating poky-contrib/toaster-next can be done as follows:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&lt;br /&gt;
  git checkout -b toaster-next poky-contrib/toaster-next &lt;br /&gt;
  git rebase origin/master &lt;br /&gt;
  git checkout yourname/submit/the/target/branch &lt;br /&gt;
  git rebase --strategy recursive -X theirs -X patience toaster-next&lt;br /&gt;
  git push -fu poky-contrib poky-contrib yourname/submit/the/target/branch:toaster-next &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=20100</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=20100"/>
		<updated>2016-08-31T10:02:44Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Workflow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to the [https://lists.yoctoproject.org/listinfo/toaster/| Toaster mailing list] for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster source code, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches are submitted to the upstream mailing lists, they are in pretty good shape. That helps the project maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Test the changes. Run the Django unit tests. People put effort into these so we should make sure we use them.  This assumes you have phantomjs installed.  This can usually be done from the distribution &amp;lt;code&amp;gt; apt-get install phantomjs&amp;lt;/code&amp;gt;,  for example.  If you want to test against Chrome or Firefox, see the README in bitbake/lib/toaster/tests/browser.  &lt;br /&gt;
  &amp;lt;code&amp;gt; pip3 install selenium &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;TOASTER_TESTS_BROWSER=phantomjs bitbake/lib/toaster/manage.py test orm toastergui tests.browser &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster source code, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them. his assumes you have phantomjs installed.  This can usually be done from the distribution &amp;lt;code&amp;gt; apt-get install phantomjs&amp;lt;/code&amp;gt;,  for example.  If you want to test against Chrome or Firefox, see the README in bitbake/lib/toaster/tests/browser.&lt;br /&gt;
  &amp;lt;code&amp;gt; pip install selenium &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;TOASTER_TESTS_BROWSER=phantomjs bitbake/lib/toaster/manage.py test orm toastergui tests.browser &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Note: If the patch creates any NEW files, the integration scripts that pull it into bitbake will fail. So, if new files are created as part of this patch set, you need to explicitly point that out in the body of the email for the patch set or do it as a PR rather than as a patch set.&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
===== Too Big =====&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
===== Different Lists =====&lt;br /&gt;
&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.  Patches for  toaster.bbclass also go to the openembedded--core list.  If you have a branch that spans both (let&#039;s say you made coupled changes to meta/classes/toaster.bbclass and bitbake/lib/bb/ui/buildinfohelper.py.  then your branch needs to be split into 2 different patch set submissions. Let&#039;s assume there are 5 commits, 2 to meta and 3 to bitbake. Currently, you can do this suboptimal workaround:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  ./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&lt;br /&gt;
  ./scripts/create-pull-request -d meta -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This will create 2 pull-XXXX directories, one for openembedded and one for bitbake-devel. Unfortunately, the meta pull-XXXX dir will have patches numbered 1-5 with 3 0 byte files and the bitbake pull-XXXX dir will have patches numbered 1-5 with 2 0 byte files.  You delete the 0 byte files and use a text editor to do the renumbering.  At some point it would be nice to have the create-pull-request do this for us but this level of file modification would probably mean moving it out of a shell script and into python.  Once the files have been renumbered (in the subject line and the cover letter) the send-pull-request can be used as referenced above.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
A different workaround that may work better for you is to create two branches which lets you use the create-pull-request and send-pull-request scripts normally on each branch. Just make sure to target them correctly&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  git checkout -b yourname/submit/the/target/branch-ForBitbake yourname/submit/the/target/branch&lt;br /&gt;
  git rebase -i&lt;br /&gt;
  # delete all the commits that are OE specific in the set you wish to submit&lt;br /&gt;
  git push -u poky-contrib yourname/submit/the/target/branchForBitbake:yourname/submit/the/target/branchForBitbake&lt;br /&gt;
  ./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&lt;br /&gt;
  git checkout -b yourname/submit/the/target/branch-ForOE yourname/submit/the/target/branch&lt;br /&gt;
  git rebase -i&lt;br /&gt;
  # delete all the commits that are bitbake specific in the set you wish to submit&lt;br /&gt;
  git push -u poky-contrib yourname/submit/the/target/branchForOE:yourname/submit/the/target/branchForOE&lt;br /&gt;
  ./scripts/create-pull-request -d meta -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== One Patch of a Long Patch Set Needs Resubmission =====&lt;br /&gt;
Suppose you upstream a 10 commit patch set to the bitbake-devel list and someone finds an issue with patch #3.  Regenerating the whole series is silly so how do you address this?  First, follow the bitbake submission steps until you end up on the yourname/submit/the/target/branch  branch.  Then you can (note &amp;lt;strong&amp;gt;the reset --hard will wipe any local changes in your working dir so commit or stash first&amp;lt;/strong&amp;gt;):&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  git checkout -b yourname/submit/the/target/branch-newHEAD&lt;br /&gt;
  git reset --hard &amp;lt;commit of resubmission issue&amp;gt; &lt;br /&gt;
  git commit --amend --signoff &lt;br /&gt;
  git send-email --in-reply-to=&amp;quot;longNumber.git.me@mycomp.com&amp;quot; --subject-prefix=&amp;quot;bitbake-devel] [PATCHVX 03/10&amp;quot;  --to=bitbake-devel@lists.openembedded.org --no-chain-reply-to --suppress-cc=all -M -1 --relative=bitbake&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The longNumber.git.me@mycomp.com comes from the email message id for the particular patch #3 so that the email threading works. In gmail, you can click on the dropdown button on the right side of the screen and choose &amp;quot;Show Original&amp;quot;.  This will have a field in the header like Message-Id: &amp;lt;4551b56f132497c055f39567946a5d3be347d770.1468363530.git.myemailusername@mycompany.com&amp;gt;  The entire string except the &#039;&amp;lt;&amp;gt;&#039; are used.  for example:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  --in-reply-to=&amp;quot;4551b56f132497c055f39567946a5d3be347d770.1468363530.git.myemailusername@mycompany.com&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to switch back to the yourname/submit/the/target/branch and push that to poky-contrib/toaster-next!  This is a little harder since you will have previously pushed a different version of the patch to poky-contrib/toaster-next.  You can do a rebase/merge by hand but that can be prone to error.  Here&#039;s the working sequence assuming it&#039;s been a few days between the first poky-contrib/toaster-next push and the one you are working on now (meaning both poky-contrib/toaster-next and origin/master have changes).&amp;lt;br&amp;gt;&lt;br /&gt;
The first issue you are likely to face is that the git filter-branch command in the standard instructions may sign off on too many commits.  If you know you just want to sign off on the last 7 commits on the yourname/submit/the/target/branch you can:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; HEAD~7..HEAD&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once your signoff is copacetic, updating poky-contrib/toaster-next can be done as follows:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&lt;br /&gt;
  git checkout -b toaster-next poky-contrib/toaster-next &lt;br /&gt;
  git rebase origin/master &lt;br /&gt;
  git checkout yourname/submit/the/target/branch &lt;br /&gt;
  git rebase --strategy recursive -X theirs -X patience toaster-next&lt;br /&gt;
  git push -fu poky-contrib poky-contrib yourname/submit/the/target/branch:toaster-next &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=File:Dashboard.png&amp;diff=19890</id>
		<title>File:Dashboard.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=File:Dashboard.png&amp;diff=19890"/>
		<updated>2016-08-16T16:33:51Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: Belenbarrospena uploaded a new version of &amp;amp;quot;File:Dashboard.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=File:Dashboard.png&amp;diff=19889</id>
		<title>File:Dashboard.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=File:Dashboard.png&amp;diff=19889"/>
		<updated>2016-08-16T16:32:37Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=File:Design_review_outcome.pdf&amp;diff=19383</id>
		<title>File:Design review outcome.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=File:Design_review_outcome.pdf&amp;diff=19383"/>
		<updated>2016-07-08T16:12:59Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18470</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18470"/>
		<updated>2016-05-06T13:53:13Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Image_customisation.png|Image customisation&lt;br /&gt;
File:Separate_build_dirs.png|Isolated project configurations&lt;br /&gt;
File:Build_cancellation.png|Cancel builds from the Toaster web interface&lt;br /&gt;
File:Multiple-release-support.png|Support for building two stable releases&lt;br /&gt;
File:Improved_build_stats.png|Improved build statistics data&lt;br /&gt;
File:Filter_by_date.png|Date filers for builds&lt;br /&gt;
File:Provides_info.png|PROVIDES information for recipe dependencies&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18469</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18469"/>
		<updated>2016-05-06T13:52:43Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Image_customisation.png|Image customisation&lt;br /&gt;
File:Separate_build_dirs.png|Isolated project configurations&lt;br /&gt;
File:Build_cancellation.png|Cancel builds from the Toaster web interface&lt;br /&gt;
File:Multiple-release-support.png|Support for building two stable releases&lt;br /&gt;
File:Improved_build_stats.png|Improved build statistics data&lt;br /&gt;
File:Filter_by_date.png|Date filers for builds&lt;br /&gt;
File:Provides_info.png|PROVIDES information for recipe dependencies&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=File:Provides_info.png&amp;diff=18468</id>
		<title>File:Provides info.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=File:Provides_info.png&amp;diff=18468"/>
		<updated>2016-05-06T13:52:15Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=File:Filter_by_date.png&amp;diff=18467</id>
		<title>File:Filter by date.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=File:Filter_by_date.png&amp;diff=18467"/>
		<updated>2016-05-06T13:48:34Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=File:Improved_build_stats.png&amp;diff=18466</id>
		<title>File:Improved build stats.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=File:Improved_build_stats.png&amp;diff=18466"/>
		<updated>2016-05-06T13:47:48Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18465</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18465"/>
		<updated>2016-05-06T13:47:17Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Image_customisation.png|Image customisation&lt;br /&gt;
File:Separate_build_dirs.png|Isolated project configurations&lt;br /&gt;
File:Build_cancellation.png|Cancel builds from the Toaster web interface&lt;br /&gt;
File:Multiple-release-support.png|Support for building two stable releases&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=File:Multiple-release-support.png&amp;diff=18464</id>
		<title>File:Multiple-release-support.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=File:Multiple-release-support.png&amp;diff=18464"/>
		<updated>2016-05-06T13:46:25Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: Belenbarrospena uploaded a new version of &amp;amp;quot;File:Multiple-release-support.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=File:Multiple-release-support.png&amp;diff=18463</id>
		<title>File:Multiple-release-support.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=File:Multiple-release-support.png&amp;diff=18463"/>
		<updated>2016-05-06T13:45:50Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18462</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18462"/>
		<updated>2016-05-06T13:42:30Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Image_customisation.png|Image customisation&lt;br /&gt;
File:Separate_build_dirs.png|Isolated project configurations&lt;br /&gt;
File:Build_cancellation.png|Cancel builds from the Toaster web interface&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=File:Build_cancellation.png&amp;diff=18461</id>
		<title>File:Build cancellation.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=File:Build_cancellation.png&amp;diff=18461"/>
		<updated>2016-05-06T13:41:38Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18460</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18460"/>
		<updated>2016-05-06T13:40:16Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Image_customisation.png|Image customisation&lt;br /&gt;
File:Separate_build_dirs.png|Isolated project configurations&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18459</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18459"/>
		<updated>2016-05-06T13:39:40Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
[[File:Image_customisation.png|frameless|thumb|right|Image customisation in Toaster]]&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
[[File:Separate_build_dirs.png|frameless|thumb|right|Separate build directories per project]]&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Image_customisation.png|Image customisation&lt;br /&gt;
File:Separate_build_dirs.png|Separate build directories per project&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18458</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18458"/>
		<updated>2016-05-06T13:38:52Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
[[File:Image_customisation.png|frameless|thumb|right|Image customisation in Toaster]]&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
[[File:Separate_build_dirs.png|frameless|thumb|right|Separate build directories per project]]&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Image_customisation.png|caption|Image customisation&lt;br /&gt;
File:file_name.ext|caption|Separate build directories per project&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18457</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18457"/>
		<updated>2016-05-06T13:37:35Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
[[File:Image_customisation.png|frameless|thumb|right|Image customisation in Toaster]]&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
[[File:Separate_build_dirs.png|frameless|thumb|right|Separate build directories per project]]&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=File:Separate_build_dirs.png&amp;diff=18456</id>
		<title>File:Separate build dirs.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=File:Separate_build_dirs.png&amp;diff=18456"/>
		<updated>2016-05-06T13:36:34Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18455</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18455"/>
		<updated>2016-05-06T13:35:36Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
[[File:Image_customisation.png|frameless|thumb|right|Image customisation in Toaster]]&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18454</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18454"/>
		<updated>2016-05-06T13:34:21Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
[[File:Image_customisation.png|none|50px|frameless|right|Image customisation in Toaster]]&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18453</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18453"/>
		<updated>2016-05-06T13:33:30Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
[[File:Image_customisation.png|none|600px|frameless|left|Image customisation in Toaster]]&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18452</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18452"/>
		<updated>2016-05-06T13:32:44Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
[[File:Image_customisation.png|none|600px|thumb|left|Image customisation in Toaster]]&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18451</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18451"/>
		<updated>2016-05-06T13:29:22Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
[[File:Image_customisation.png|600px|thumb|left|Image customisation in Toaster]]&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=File:Image_customisation.png&amp;diff=18450</id>
		<title>File:Image customisation.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=File:Image_customisation.png&amp;diff=18450"/>
		<updated>2016-05-06T13:27:24Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18448</id>
		<title>What&#039;s New In 2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=What%27s_New_In_2.1&amp;diff=18448"/>
		<updated>2016-05-06T11:10:30Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;color:black; background-color:#ffffcc&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;10&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|This page is a draft - needs more screenshots and possibly copy-editing.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What&#039;s new in the Yocto Project 2.1 release =&lt;br /&gt;
&lt;br /&gt;
As with most Yocto Project releases, the Yocto Project 2.1 &amp;quot;krogoth&amp;quot; release comes with a large number of changes in different areas. If one were to try to extract a general theme for 2.1 however it would probably be cleaning out the dusty corners of the system, as well as finishing off some functionality that has been a long time in the making. This guide doesn&#039;t cover all changes (in fact, it doesn&#039;t cover the hundreds of bugfixes and minor tweaks made since the last release) but attempts to give an overview of the most visible improvements.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
There was the usual crop of recipe upgrades (~240 recipes upgraded), headed with an upgrade of the Linux kernel to 4.4 (plus 4.1 for the stable LTSI kernel), gcc 5.3 and glibc 2.3. While we are on the topic of C libraries, the musl size-optimised C library has been upgraded and fully integrated in this release - whilst there was some earlier support via the addition of an extra layer in previous releases, musl can now be built out of the box and in fact is now used in the reference &amp;quot;poky-tiny&amp;quot; distribution, replacing the earlier pared down glibc configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full GObject introspection support&#039;&#039;&#039; replaces the stub support available in previous releases. This enables better support for building applications that make use of GObject introspection (e.g. anything implemented using language bindings for GTK+3, which includes parts of the GNOME stack). The caveat is that QEMU system emulation must be supported for the target architecture in order to support this.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;uninative&#039;&#039;&#039; feature which allows shared state to be used across different host distributions more effectively has been extended and enabled by default in the Poky reference distribution. An inc file (meta/conf/distro/include/yocto-uninative.inc) has been created to make this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static library generation is now disabled for most recipes&#039;&#039;&#039; by default in the Poky reference distribution. Disabling this generation saves some build time as well as the size used for build output artifacts. Static libraries are disabled through an inc file (meta/conf/distro/include/no-static-libs.inc) making this easier to incorporate into your custom distro configuration if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.debug directories are now automatically packaged&#039;&#039;&#039; in the -dbg package - now it no longer matters where you install binaries, their split out debug symbols will always go into the -dbg package instead of triggering a QA error/warning that you needed to resolve. Additionally, build sysroot paths are now excluded from debug symbol files as part of a wider effort to remove build path dependent binary output.&lt;br /&gt;
&lt;br /&gt;
Added optional support for &#039;&#039;&#039;signing ipk packages as well as shared state artifacts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Added an &#039;&#039;&#039;npm module fetcher&#039;&#039;&#039; to BitBake and corresponding support class in OE-Core (requires separate nodejs recipe). Because of the way npm fetches dependencies as part of its operation, it was previously difficult to write reliable recipes for npm recipes - modules were fetched on the fly and outside of the do_fetch task, leading to problems with reproducibility as well as the inability to work behind a network proxy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Switching PREFERRED_PROVIDER to another virtual/* providers now results in old files being removed&#039;&#039;&#039; from the sysroot; earlier this would likely result in &amp;quot;The recipe &amp;lt;recipe&amp;gt; is trying to install files into a shared area when those files already exist&amp;quot; errors, requiring either explicit cleanup or simply deleting TMPDIR and restarting the build.&lt;br /&gt;
&lt;br /&gt;
The runqemu script for more easily starting the QEMU system emulator gained support for qcow2 and vdi images, as well as images produced by the wic tool.&lt;br /&gt;
&lt;br /&gt;
Dependencies on busybox can now be replaced relatively easily with another provider (e.g. toybox).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-completion&#039;&#039;&#039; has been imported from the meta-oe layer, providing optional support for extensible auto-completion when the bash shell is installed. Bash completion support has been added to individual recipes; this is placed in a separate -bash-completion package so that it can be installed separately if desired.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;swupd (The SoftWare UPDater)&#039;&#039;&#039; from Clear Linux provides a new way of adding functionality to and updating a Linux-based OS. swupd uses binary-delta technology to efficiently update only the files that have changed between OS updates. This means that updates are small, resulting in fast downloads, and fast to apply. swupd is made available as a separate meta-swupd layer alongside the Yocto Project 2.1 release. See https://wiki.yoctoproject.org/wiki/Meta-swupd for more information.&lt;br /&gt;
&lt;br /&gt;
== Optimisation and cleanup ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Hob UI has now been removed&#039;&#039;&#039;. Hob, which uses GTK+2, has been largely unmaintained for several releases. The Toaster web-based UI now provides all of the functionality of Hob, plus much more. See below for further information on Toaster.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Application Developer Toolkit (ADT) has also been removed&#039;&#039;&#039; for 2.1, having been functionally replaced by the standard and extensible SDKs. (The Eclipse plugin is unaffected by this change however.) More details on the extensible SDK below.&lt;br /&gt;
&lt;br /&gt;
* The troublesome &#039;&#039;&#039;&amp;quot;-e MAKEFLAGS=&amp;quot; has finally been removed from default EXTRA_OEMAKE&#039;&#039;&#039;. This was a historical accident and was something which recipe writers often needed to work around. Additionally, libexecdir has been reverted to ${prefix}/libexec to be in line with other distributions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The meta-yocto layer has been renamed to meta-poky&#039;&#039;&#039; to better match its purpose, which is to provide the Poky reference distribution. (The meta-yocto-bsp layer retains its original name since it provides reference machines for the Yocto Project and it is otherwise unrelated to Poky.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;All support for Qt 4.x has been moved out to a separate meta-qt4 layer&#039;&#039;&#039; since Qt 4 is no longer supported upstream. See the OpenEmbedded Layer Index for more information on [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt4/ meta-qt4]. Newer Qt-based applications can make use of the [https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/ meta-qt5] layer, which is actively maintained by the OpenEmbedded community.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libjpeg has been replaced by libjpeg-turbo&#039;&#039;&#039; - most of the major Linux distributions have made this move already. libjpeg-turbo retains the stable API/ABI of libjpeg 8 and also takes advantage of acceleration features available on some platforms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;libav has been replaced by ffmpeg&#039;&#039;&#039;. Again, most of the major Linux distributions have made this move already - for some background see [https://lwn.net/Articles/650816/ this article from LWN].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;udev has been replaced by eudev&#039;&#039;&#039; - for those still using SysV init (which is still the default) an update of the standalone udev was required as part of support for the Linux kernel 4.4 upgrade. The easiest course of action here turned out to be to migrate to the latest stable version of Gentoo&#039;s [https://wiki.gentoo.org/wiki/Eudev eudev] fork.&lt;br /&gt;
&lt;br /&gt;
* The first step in moving towards the changing the default of the expand parameter in &#039;&#039;&#039;d.getVar()&#039;&#039;&#039; from False to True has been made by removing the default and making the parameter mandatory. This will force specifying the value; in a future release once layer maintainers have had a chance to adapt, a default of True will be set up.&lt;br /&gt;
&lt;br /&gt;
== Toaster ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Toaster&#039;&#039;&#039;, the web-based UI for interacting with BitBake and OpenEmbedded, saw significant work in this release. Improvements include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image customization:&#039;&#039;&#039; Toaster now allows you to create you own custom images, by modifying the package content of existing ones. Toaster provides dependency information for easy package addition and removal, builds your custom images, and generates a recipe (.bb) file that you can download.&lt;br /&gt;
* &#039;&#039;&#039;Isolated project configurations:&#039;&#039;&#039; Toaster now creates a separate build directory per project, avoiding build failures caused by the reuse of intermediate build artifacts. This provides cleaner configurations that can be easily shared, and improves build reliability. Shared state artifacts and downloads are still shared by default but this can be configured per project if desired.&lt;br /&gt;
* &#039;&#039;&#039;Cancel builds from the Toaster web interface:&#039;&#039;&#039; you can now cancel the builds you start from the Toaster web interface with a single click, without having to switch to the command line interface.&lt;br /&gt;
* &#039;&#039;&#039;Improved interaction with BitBake:&#039;&#039;&#039; we have removed the need for the BitBake observer process, and we run the BitBake server only during the build, stopping it once the build is done. We have also returned to executing the BitBake server from the selected project release (Yocto Project 2.0 or 2.1), while the BitBake client runs from the same codebase used to start Toaster. This allows us to provide backward compatibility with the previous stable release of the Yocto Project (2.0), enabling the next feature in this list&lt;br /&gt;
* &#039;&#039;&#039;Support for building two stable releases:&#039;&#039;&#039; Yocto Project 2.1 &amp;quot;Krogoth&amp;quot; and Yocto Project 2.0 &amp;quot;Jethro&amp;quot; releases, and/or the OpenEmbedded jethro and krogoth branches. Toaster also builds the development branch (master).&lt;br /&gt;
* &#039;&#039;&#039;Upgraded to Django 1.8.x from 1.6.x&#039;&#039;&#039;: Django 1.8 has been designated as a Long Term Support release, with extended support until at least April 2018.&lt;br /&gt;
* &#039;&#039;&#039;Improved build statistics data:&#039;&#039;&#039; following changes to buildstats, Toaster now provides a more accurate measure of Disk I/O per task, and displays both system and user CPU time.&lt;br /&gt;
* &#039;&#039;&#039;Fix date filters for builds:&#039;&#039;&#039; ensure you can retrieve a subset of builds by specifying a date range.&lt;br /&gt;
* &#039;&#039;&#039;Show PROVIDES information in recipe dependencies:&#039;&#039;&#039; Toaster now identifies recipe build dependencies satisfied via the PROVIDES variable.&lt;br /&gt;
&lt;br /&gt;
== Extensible SDK ==&lt;br /&gt;
&lt;br /&gt;
The Extensible SDK (bitbake -c populate_sdk_ext) was introduced in preview form in the previous release, and builds on top of the standard SDK functionality with additional tools allowing developers to more easily add new applications / libraries to the build, modify the source of existing components, test changes on the target and integrate them into a system image. In 2.1 it has been solidified with the following added features:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Support for building a minimal (~35MB) SDK installer&#039;&#039;&#039; with the rest installed on-demand from shared state&lt;br /&gt;
* &#039;&#039;&#039;Ability to bring in pkgdata for world&#039;&#039;&#039;, which improves dependency mapping when adding new components through &amp;quot;devtool add&amp;quot; as well as the ability to find recipes by keyword using &amp;quot;devtool search&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Added the ability to produce a derivative SDK installer&#039;&#039;&#039; containing items in the workspace in prebuilt form&lt;br /&gt;
&lt;br /&gt;
Going together with this, a &#039;&#039;&#039;new [http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html SDK Manual]&#039;&#039;&#039; has been written providing information on how to use (and build) the standard SDK, extensible SDK and also how to install and use the Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
== devtool ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;devtool&#039;&#039;&#039; command is at the heart of the aforementioned extensible SDK, but is also available as a tool alongside a standard installation of the build system. It provides subcommands to add new software (auto-generating a recipe based on a source tree), modify the source of an existing recipe, easily deploy installed output to the target device, generate patches from source changes, and more. Improvements to devtool in 2.1 include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proper support for modifying the kernel source&#039;&#039;&#039; - &amp;quot;devtool modify virtual/kernel&amp;quot; will not only check out the source tree for the kernel but also now correctly set up the initial configuration specified via the recipe.&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;edit-recipe&amp;quot; subcommand&#039;&#039;&#039; to quickly edit created recipes&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;configure-help&amp;quot; subcommand&#039;&#039;&#039; which presents the current value of EXTRA_OECONF and the output of the configure script&#039;s --help option (if applicable) to make setting configure arguments in a recipe a bit easier&lt;br /&gt;
* &#039;&#039;&#039;New &amp;quot;sync&amp;quot; subcommand&#039;&#039;&#039; to synchronise a previously extracted source tree with upstream&lt;br /&gt;
* Improved the presentation of commands in the help text, and simplified command-line usage for the add and modify subcommands&lt;br /&gt;
* &#039;&#039;&#039;Deployment to the target has been reworked&#039;&#039;&#039; - deploy-target now preserves any existing files and writes the deployed files list to the target device; undeploy-target restores previously existing files and can now be directed to undeploy all deployed recipes at once.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;devtool add&amp;quot; command which auto-generates a recipe for a source tree internally uses &amp;quot;recipetool create&amp;quot; to do just the recipe creation process. recipetool create has been enhanced as follows:&lt;br /&gt;
* Support for extracting dependencies from cmake files&lt;br /&gt;
* Significantly improved autotools support&lt;br /&gt;
* Basic support for generating custom kernel recipes based on the linux-yocto-custom template&lt;br /&gt;
* Support for npm fetcher/class&lt;br /&gt;
* Support for out-of-tree kernel modules&lt;br /&gt;
* Extract recipe name/version from filename, github/bitbucket URLs, build scripts so that these don&#039;t always need to be specified&lt;br /&gt;
* Extract SRC_URI from the remote in a local git repository if specified&lt;br /&gt;
* Improved license detection - new &amp;quot;crunching&amp;quot; technique to ignore formatting differences between license texts that would otherwise prevent automated matching&lt;br /&gt;
* Support creating native variants or standalone native/nativesdk recipes&lt;br /&gt;
* Support specifying a subdirectory within the fetched source - useful when adding a recipe for a subcomponent of a source tree (where the source tree structure permits this)&lt;br /&gt;
* Handle &amp;lt;nowiki&amp;gt;https://....git&amp;lt;/nowiki&amp;gt; URLs - BitBake expects git:// so any URLs in the former form will be converted&lt;br /&gt;
* Allow extension of recipe creation process through additional layers - e.g. adding meta-qt5 now enables support for creating recipes for Qt5-using software&lt;br /&gt;
&lt;br /&gt;
Additionally, when externalsrc is in use shortcut symlinks for the work directory and logs directory are now created during do_configure. This will be mostly visible in the context of building a recipe when using devtool modify, devtool add or devtool upgrade (all of which make use of the externalsrc class).&lt;br /&gt;
&lt;br /&gt;
You can find more information on devtool in the [http://www.yoctoproject.org/docs/2.1/dev-manual/dev-manual.html#using-devtool-in-your-workflow Yocto Project Development Manual].&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
The following improvements have been made to building images:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Image generation is now split out from filesystem generation&#039;&#039;&#039; - i.e. turning the filesystem into the various image file formats, e.g. tar.gz and ext3, is now done in separate tasks. This not only simplifies the code but also makes it more visible as to what part of the process is being run at a given time - instead of a long-running do_rootfs you&#039;ll see a slightly shorter do_rootfs followed by several do_image_* tasks, one per type specified in IMAGE_FSTYPES. &lt;br /&gt;
* &#039;&#039;&#039;Write out an image license manifest&#039;&#039;&#039;, which includes other image dependencies such as bootloaders. These may not part of the actual image file (depending on the type) but are associated with it and thus this new manifest gives a complete picture of the licenses of the software shipped with the image.&lt;br /&gt;
* &#039;&#039;&#039;Support chaining compression&#039;&#039;&#039; (aka conversion) commands and use to allow producing checksums for images&lt;br /&gt;
* Allow vm and live image types to be built at the same time&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;wic&amp;quot; standalone image creator has seen a couple of improvements:&lt;br /&gt;
* Allow specifying a custom config for the bootloader&lt;br /&gt;
* Implement includes in wks files&lt;br /&gt;
&lt;br /&gt;
The mkefidisk.sh script has seen a couple of improvements as well:&lt;br /&gt;
&lt;br /&gt;
* Display boot log on console&lt;br /&gt;
* Added a startup script for automated boot&lt;br /&gt;
&lt;br /&gt;
== BitBake ==&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re familiar with the code it can sometimes be hard to determine where BitBake ends and OpenEmbedded starts, but BitBake the tool does remain independent of the OE metadata even though it is developed alongside it. Improvements to bitbake in this release include:&lt;br /&gt;
&lt;br /&gt;
* Set process names to be meaningful - here&#039;s some output from pstree demonstrating the new naming:&lt;br /&gt;
&lt;br /&gt;
 └─bash───KnottyUI───Cooker─┬─Worker─┬─fixesproto:conf───run.do_configur───configure&lt;br /&gt;
                            │        ├─fontconfig:conf───run.do_configur───autoreconf─┬─autoheader───sh───autom4te───sh───m4&lt;br /&gt;
                            │        │                                                └─autom4te&lt;br /&gt;
                            │        ├─groff-native:co───run.do_configur───configure───configure───g++─┬─as&lt;br /&gt;
                            │        │                                                                 └─cc1plus&lt;br /&gt;
                            │        ├─icu-native:conf───run.do_configur───configure───sh&lt;br /&gt;
                            │        ├─libpng:configur───run.do_configur───autoreconf─┬─autom4te&lt;br /&gt;
                            │        │                                                └─automake───autom4te&lt;br /&gt;
                            │        ├─libusb1:configu───run.do_configur───autoreconf───autom4te&lt;br /&gt;
                            │        └─libxext:configu───run.do_configur───configure&lt;br /&gt;
                            ├─pseudo───Worker (Fakeroo&lt;br /&gt;
                            ├─2*[{Cooker}]&lt;br /&gt;
                            └─{ProcessEQueue}&lt;br /&gt;
* Messages produced from within tasks are now always prefixed with the recipe/task name, avoiding the problem of confusing warning/error messages with no context&lt;br /&gt;
* Added support for unpacking 7-Zip archives&lt;br /&gt;
* Added --setscene-only option to only run setscene tasks (i.e. in OE context this means only tasks whose output can be restored from shared state).&lt;br /&gt;
* Added ability to build up to but not including a task&lt;br /&gt;
* Provide more information with &amp;quot;multiple .bb files are due to be built&amp;quot; message&lt;br /&gt;
* List close matching runtime providers with close matches when invalid target specified&lt;br /&gt;
* Allow BBMASK to contain multiple regular expressions&lt;br /&gt;
* Adjust styling of graph lines for RRECOMMENDS and RDEPENDS in -g output so that the difference between these is clearer&lt;br /&gt;
&lt;br /&gt;
== Further information ==&lt;br /&gt;
&lt;br /&gt;
As always, the reference manual provides a section on [http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#moving-to-the-yocto-project-2.1-release Moving to the Yocto Project 2.1 Release] which you should definitely read if you are upgrading.&lt;br /&gt;
&lt;br /&gt;
The [https://lists.yoctoproject.org/pipermail/yocto-announce/2016-May/000089.html 2.1 release notes] cover the above information in slightly briefer form along with other information including a list of upgraded recipes and security fixes.&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster&amp;diff=18330</id>
		<title>Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster&amp;diff=18330"/>
		<updated>2016-04-27T16:52:38Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* About Toaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
[[Toaster]] is a web-based interface to OpenEmbedded and BitBake.&lt;br /&gt;
[[File:Screenshot toaster.png|thumb|Screenshot of Toaster 2.1]]&lt;br /&gt;
General discussion about &#039;&#039;&#039;Toaster&#039;&#039;&#039; happens on a dedicated mailing list: [https://lists.yoctoproject.org/listinfo/toaster https://lists.yoctoproject.org/listinfo/toaster]&lt;br /&gt;
&lt;br /&gt;
=== Using Toaster ===&lt;br /&gt;
&lt;br /&gt;
Toaster can run in various modes and setups.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Local mode&#039;&#039;&#039; - in this mode Toaster is setup for use as a local development tool. It can be used to configure builds or just as a receiver for builds done on the command line with bitbake. You can launch it like this:&lt;br /&gt;
&lt;br /&gt;
 $ source oe-init-build-env&lt;br /&gt;
 $ source toaster start&lt;br /&gt;
&lt;br /&gt;
You then navigate to the link in your browser (e.g. http://localhost:8000) and configure a project. Or start building in the normal way with bitbake via the command line. Toaster will automatically pick up the builds and you will be able to see them on the build dashboard in your browser.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Production mode&#039;&#039;&#039; - All the same functionality as the local mode but with the web server setup as a shared service for multiple developers to use, this sets up Toaster as a wsgi application and [[Setting up a production instance of Toaster|requires additional configuration]].&lt;br /&gt;
&lt;br /&gt;
=== Toaster How-to&#039;s ===&lt;br /&gt;
&lt;br /&gt;
Specific pages with Toaster how-tos are available below.&lt;br /&gt;
&lt;br /&gt;
* [[Contribute to Toaster]]&lt;br /&gt;
* [[Testing Toaster]]&lt;br /&gt;
* [[Setting up a local instance of Toaster]]&lt;br /&gt;
* [[Setting up a production instance of Toaster]] - documentation for Interactive mode&lt;br /&gt;
* [https://www.yoctoproject.org/documentation/toaster-manual-18 How to use the Toaster web interface]&lt;br /&gt;
* [[How to delete information from the Toaster database]]&lt;br /&gt;
* [[How to  support permission management in Build Mode for Toaster]]&lt;br /&gt;
* [[ToasterTable]]: Toaster&#039;s internal API for adding sortable, filterable, paged tables&lt;br /&gt;
&lt;br /&gt;
=== About Toaster ===&lt;br /&gt;
[[File:Screenshot toaster analyis.png|thumb|Analysis of builds using Toaster]]&lt;br /&gt;
&lt;br /&gt;
* [[File:Working_with_design.pdf]]&lt;br /&gt;
* [https://bugzilla.yoctoproject.org/buglist.cgi?list_id=213820&amp;amp;columnlist=status_whiteboard%2Cassigned_to%2Ctarget_milestone%2Cbug_status%2Cshort_desc%2Cbug_severity%2Cpriority&amp;amp;classification=Build%20System%20%26%20Metadata&amp;amp;query_based_on=Toaster-Opens&amp;amp;query_format=advanced&amp;amp;bug_status=NEW&amp;amp;bug_status=ACCEPTED&amp;amp;bug_status=IN%20PROGRESS%20DESIGN&amp;amp;bug_status=IN%20PROGRESS%20DESIGN%20COMPLETE&amp;amp;bug_status=IN%20PROGRESS%20IMPLEMENTATION&amp;amp;bug_status=REOPENED&amp;amp;bug_status=NEEDINFO&amp;amp;bug_status=WaitForUpstream&amp;amp;component=toaster&amp;amp;product=Toaster&amp;amp;known_name=Toaster-Opens Bug list]&lt;br /&gt;
* [[Toaster architecture design]]&lt;br /&gt;
* [[Toaster and bitbake communications]]&lt;br /&gt;
* [[Toaster database]]&lt;br /&gt;
* [[Toaster testing plan]]&lt;br /&gt;
&lt;br /&gt;
=== In progress documentation ===&lt;br /&gt;
&lt;br /&gt;
We are currently preparing the documentation for the Toaster build functionality. The content here is just a brain dump of what we need to cover (in no particular order). Feel free to add and create content as you see fit:&lt;br /&gt;
&lt;br /&gt;
*[[Using virtualenv]]&lt;br /&gt;
*[[Setting up a production instance of Toaster]]&lt;br /&gt;
*[[manage.py commands]] - this should include an explanation of lsupdates&lt;br /&gt;
*[[Start Toaster in managed mode]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_future_release_planning&amp;diff=18268</id>
		<title>Toaster future release planning</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_future_release_planning&amp;diff=18268"/>
		<updated>2016-04-25T16:13:30Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* 2.2 release */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
&lt;br /&gt;
== 2.2 Planning ==&lt;br /&gt;
&lt;br /&gt;
=== Wish lists ===&lt;br /&gt;
&lt;br /&gt;
==== Michael&#039;s ====&lt;br /&gt;
* Remove pseudo API cruft / template context to json response stuff&lt;br /&gt;
* Remove bldcontrol (we only need localhostbecontroller.py)&lt;br /&gt;
* Look at schema and rework where needed&lt;br /&gt;
* Consolidate used API into it&#039;s own view&lt;br /&gt;
* Finish toaster tables porting&lt;br /&gt;
* Create a toasterclient.py to interact with toaster to avoid need for &#039;command line builds&#039;&lt;br /&gt;
** This would use toaster&#039;s API as the entry point to using bitbake&lt;br /&gt;
** It could be called by CI systems&lt;br /&gt;
** It could be used by auto builders etc&lt;br /&gt;
** Means that there are no two modes anywhere in Toaster&lt;br /&gt;
** Allows project configuration to be changed in toaster from the command line&lt;br /&gt;
* Drop supporting old releases&lt;br /&gt;
&lt;br /&gt;
==== Brian&#039;s ====&lt;br /&gt;
The Ordered Part&lt;br /&gt;
# Django 1.8 aka LTS&lt;br /&gt;
#  Image Customization&lt;br /&gt;
#  Testing and Stability&lt;br /&gt;
# One way to start/One code path &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This is *not* ordered! This is more of a brain dump :)&lt;br /&gt;
* Collapse analysis and managed mode&lt;br /&gt;
* Working CI for each commit into toaster-next as well as for project peoples testME branches on poky-contrib:&lt;br /&gt;
** run django tests&lt;br /&gt;
** run selenium tests&lt;br /&gt;
** leverage sstate to make runs generally shorter&lt;br /&gt;
* remove git assumptions from code&lt;br /&gt;
* rationalize/simplify the configuration scripts&lt;br /&gt;
* if bitbake-memres comes out, interact with it gracefully (this is my preferred method of collapsing analysis and managed)&lt;br /&gt;
* fix the tmpdir/release build issue &amp;amp;/or discuss the need to support building old releases with a UI rather than limiting toaster to build the release it is part of. This is inherently fragile.&lt;br /&gt;
* ask bb to parse any layer added to a project and such as imported layers, and layers specified in the configuration file to give us recipe information.&lt;br /&gt;
* improve our build event following:&lt;br /&gt;
** note parse events&lt;br /&gt;
** update/retrieve ui so that we can tell something is happening before the first build event comes &lt;br /&gt;
** eliminate the remaining random tracebacks from try/except failures.&lt;br /&gt;
* allow configuration in addition to the addition/removal of layers/packages&lt;br /&gt;
** kernel config&lt;br /&gt;
* add user control/authentication&lt;br /&gt;
* update to Django 1.8.  Always stay on Django LTS versions&lt;br /&gt;
* add layer update from layers.openembedded.org to the UI&lt;br /&gt;
* add Django tests for building e.g. we should be able to build core-image-sato from a django test and validate the db&lt;br /&gt;
* add mysql script to simplify setup with mysql/apache&lt;br /&gt;
* pull in new look and feel&lt;br /&gt;
* add django tests to validate all artifacts - if we say they can download it and it appears on a page anywhere, it should have a test&lt;br /&gt;
* improve docs of code on wiki. We have a nice start (ty E &amp;amp; M); I&#039;d like to improve it.  &lt;br /&gt;
** events - more info and list types supported&lt;br /&gt;
** what logic is in jscript , what is in python&lt;br /&gt;
** database schema definition and description esp interrelationships.&lt;br /&gt;
** list django tests, mostly so we can see what we are missing. &lt;br /&gt;
* build mode triggerred off of database entry, not autonomous process.&lt;br /&gt;
* add asynchronicity. I have noted a number of places where commands result in a sluggish ui. I&#039;m nervous about this one.&lt;br /&gt;
** for example, starting a build that requires us to clone layers has a noticeable delay as compared to starting a local only project build.&lt;br /&gt;
* verify we can stop builds cleanly.&lt;br /&gt;
* get the rest of our logs into our local toaster dir&lt;br /&gt;
* allow us to run and stop 2 toasters on the same machine without them interfering with each other&lt;br /&gt;
* (2.2 or later for sure) discuss how to support multiple back end bb servers.  &lt;br /&gt;
** probably will need to be able to add servers/remove servers/see server status/build state&lt;br /&gt;
* be able to see more details about build.  For example, see the &amp;quot;jobs&amp;quot; being processed like you can in knotty&lt;br /&gt;
* revisit what variables we let people change. sstate_dir and dl_dir should certainly be allowed to change&lt;br /&gt;
* discuss way we do migrations. possibly change. thoughts:&lt;br /&gt;
** only support migrations from last release to current. (e.g. if you were running toaster jethro you could update to jethro++, but could not from fido to jethro)&lt;br /&gt;
** take migration from the startup script. it&#039;s only for releasetorelease.&lt;br /&gt;
*** allow it to be in for master and ease of development w/in a release and pull at end as we do with moving releases.&lt;br /&gt;
** whatever we decide, add a test set for it so we know it works&lt;br /&gt;
* Be able to delete things from the ui&lt;br /&gt;
** old builds&lt;br /&gt;
** old projects&lt;br /&gt;
** imported layers we no longer want&lt;br /&gt;
* Be able to set from the ui a policy to delete all builds/recipes/packages that are older than XXX &amp;amp;/or be able to set maximum size on db and delete everything older than XXX when we near that size&lt;br /&gt;
* update the builds on the web page so we dont have to hit refresh to see the build progress.&lt;br /&gt;
&lt;br /&gt;
==== Elliot&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Make sure all files lint properly&lt;br /&gt;
* Include lint in CI builds&lt;br /&gt;
* Improve test coverage of all areas of the UI and back-end&lt;br /&gt;
* Clean up toasterui.py so it&#039;s easier to see what&#039;s going on in there&lt;br /&gt;
* Fix localhostbecontroller so it doesn&#039;t rely on what&#039;s in the log file when figuring out whether the bitbake server has started&lt;br /&gt;
* Provide a way to modify settings in settings.py without editing that file (e.g. with a local overlay configuration file)&lt;br /&gt;
* Move the logic, environment variables, directory setup and script calls from bin/toaster into Django commands: this would allow you to run toaster correctly, with all the required setup, without having to use bin/toaster; it would also mean that we could provide cleaner production setup instructions, as a user could run a series of Django commands (with their own parameters) to setup their environment; bin/toaster would then just execute a series of Django commands&lt;br /&gt;
&lt;br /&gt;
==== Belén&#039;s ====&lt;br /&gt;
&lt;br /&gt;
===== 2.2 release =====&lt;br /&gt;
&lt;br /&gt;
* Move to Bootstrap 3 ([https://bugzilla.yoctoproject.org/show_bug.cgi?id=9517 Bugzilla entry 9517])&lt;br /&gt;
* Clean up all the small little bugs in the Toaster UI&lt;br /&gt;
* Provide a better way to build the extensible SDK from Toaster ([https://bugzilla.yoctoproject.org/show_bug.cgi?id=9297 Bugzilla entry 9297])&lt;br /&gt;
* Improve the variable history ([https://bugzilla.yoctoproject.org/show_bug.cgi?id=5811 Bugzilla entry 5811])&lt;br /&gt;
&lt;br /&gt;
===== 2.1 release =====&lt;br /&gt;
&lt;br /&gt;
* Implement new custom theme (already in progress, aiming for end of M1: Dec 7th). Related bugs: 8417&lt;br /&gt;
* Finish image customisation. Related bugs: 8070, 8081, 8082, 8103, 8104, 8117, 8128, 8132, 8091&lt;br /&gt;
* Review interaction with layers: as it is, imposes heavy restrictions on users. Some of the questions I would like to consider:&lt;br /&gt;
** Should the import layer action be global instead of per project, so that you can reuse imported layers across projects?&lt;br /&gt;
** Should we allow users to override the release layer branch, setting a particular layer index layer to a different branch or commit?&lt;br /&gt;
** Should we allow users to set a different git repo for layer index layers?&lt;br /&gt;
** Should we allow users to override the bitbake revision set by the release in a project?&lt;br /&gt;
** Related bugs: 6640, 6701, 7574, 8426, 8429&lt;br /&gt;
* Access control (a simple one to start, with very basic permissions). Related bugs: 6233, 6234&lt;br /&gt;
* WIC integration (getting a step closer to the holy grail of &#039;click button&#039; &amp;gt; &#039;image deployed in board&#039;)&lt;br /&gt;
* Fix the variable history (this is one of the features users have highly praised, and it is a bit broken in 2.0). Related bugs: 5811, 8488, 8190, 8189, 8188&lt;br /&gt;
* Get Toaster to collect build data from Jenkins builds. Once again, repeatedly requested by users. Related bugs: 7527&lt;br /&gt;
&lt;br /&gt;
==== Ed&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Merge analysis and managed modes&lt;br /&gt;
* Fix as much pending bugs as possible.&lt;br /&gt;
* Finish image customisation.&lt;br /&gt;
* Support Django LTS&lt;br /&gt;
* Increase test coverage. It would be good to set realistic goals, e.g. cover specific modules or increase coverage to 10% and follow the plan.&lt;br /&gt;
* Include production configuration into testing&lt;br /&gt;
* Cover views.py with tests and split it into modules. Currently it&#039;s huge and hard to maintain. I suspect there are a lot of unused APIs in there.&lt;br /&gt;
* Finish refactoring of buildcontroller code. This work is started in ed/toaster/bec and sitting there for quite long time.&lt;br /&gt;
* Bring patchset support to toaster patchwork.&lt;br /&gt;
* Add &#039;submitted upstream&#039; and &#039;merged upstream&#039; statuses to patchwork. Make the statuses updated automatically when patch is accepted to toaster-next or bitbake master.&lt;br /&gt;
* Clean up the code. Set realistic goals for pylint scores and follow them.&lt;br /&gt;
* Enhance Jenkins CI jobs to run all possible django, tts and pylint tests&lt;br /&gt;
&lt;br /&gt;
==== Sujith&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Get toaster working with non-git repos. Related bugs: 8456&lt;br /&gt;
* minor, but would be good to have :- Once user launches toaster, it would be nice to see the progress bar updated without user refreshing the page. Related bugs: 8328&lt;br /&gt;
* Cancellation of build. Related bugs: 6787&lt;br /&gt;
&lt;br /&gt;
Would love to take up more tasks.&lt;br /&gt;
&lt;br /&gt;
==== David&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Finish the effort around Toaster &amp;quot;extensions&amp;quot;, started by Farrell. This will enable Toaster customization for commercial partners, as per branding and &lt;br /&gt;
alternate pages (for extended project creation).&lt;br /&gt;
&lt;br /&gt;
== All bugs for 2.2 ==&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
  |columns=id,milestone,summary,status,priority&lt;br /&gt;
  |milestone=future,2.1,2.1 M1,2.1 M2,2.1 M3,2.1 M4,2.2,2.2 M1,2.2 M2,2.2 M3,2.2 M4&lt;br /&gt;
  |sort=priority&lt;br /&gt;
  |product=Toaster&lt;br /&gt;
  |resolution=!fixed&lt;br /&gt;
  |status=!IN PROGRESS REVIEW&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==  Toaster Enhancements for 2.2 ==&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
  |columns=id,to,estimated,summary,priority,from,qa,milestone,status,resolution,whiteboard&lt;br /&gt;
  |milestone=2.2,2.2 M1,2.2 M2,2.2 M3,2.2 M4&lt;br /&gt;
  |sort=priority&lt;br /&gt;
  |severity=enhancement&lt;br /&gt;
  |product=Toaster&lt;br /&gt;
  |status=!verified&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_future_release_planning&amp;diff=18267</id>
		<title>Toaster future release planning</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_future_release_planning&amp;diff=18267"/>
		<updated>2016-04-25T16:11:26Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* 2.2 release */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
&lt;br /&gt;
== 2.2 Planning ==&lt;br /&gt;
&lt;br /&gt;
=== Wish lists ===&lt;br /&gt;
&lt;br /&gt;
==== Michael&#039;s ====&lt;br /&gt;
* Remove pseudo API cruft / template context to json response stuff&lt;br /&gt;
* Remove bldcontrol (we only need localhostbecontroller.py)&lt;br /&gt;
* Look at schema and rework where needed&lt;br /&gt;
* Consolidate used API into it&#039;s own view&lt;br /&gt;
* Finish toaster tables porting&lt;br /&gt;
* Create a toasterclient.py to interact with toaster to avoid need for &#039;command line builds&#039;&lt;br /&gt;
** This would use toaster&#039;s API as the entry point to using bitbake&lt;br /&gt;
** It could be called by CI systems&lt;br /&gt;
** It could be used by auto builders etc&lt;br /&gt;
** Means that there are no two modes anywhere in Toaster&lt;br /&gt;
** Allows project configuration to be changed in toaster from the command line&lt;br /&gt;
* Drop supporting old releases&lt;br /&gt;
&lt;br /&gt;
==== Brian&#039;s ====&lt;br /&gt;
The Ordered Part&lt;br /&gt;
# Django 1.8 aka LTS&lt;br /&gt;
#  Image Customization&lt;br /&gt;
#  Testing and Stability&lt;br /&gt;
# One way to start/One code path &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This is *not* ordered! This is more of a brain dump :)&lt;br /&gt;
* Collapse analysis and managed mode&lt;br /&gt;
* Working CI for each commit into toaster-next as well as for project peoples testME branches on poky-contrib:&lt;br /&gt;
** run django tests&lt;br /&gt;
** run selenium tests&lt;br /&gt;
** leverage sstate to make runs generally shorter&lt;br /&gt;
* remove git assumptions from code&lt;br /&gt;
* rationalize/simplify the configuration scripts&lt;br /&gt;
* if bitbake-memres comes out, interact with it gracefully (this is my preferred method of collapsing analysis and managed)&lt;br /&gt;
* fix the tmpdir/release build issue &amp;amp;/or discuss the need to support building old releases with a UI rather than limiting toaster to build the release it is part of. This is inherently fragile.&lt;br /&gt;
* ask bb to parse any layer added to a project and such as imported layers, and layers specified in the configuration file to give us recipe information.&lt;br /&gt;
* improve our build event following:&lt;br /&gt;
** note parse events&lt;br /&gt;
** update/retrieve ui so that we can tell something is happening before the first build event comes &lt;br /&gt;
** eliminate the remaining random tracebacks from try/except failures.&lt;br /&gt;
* allow configuration in addition to the addition/removal of layers/packages&lt;br /&gt;
** kernel config&lt;br /&gt;
* add user control/authentication&lt;br /&gt;
* update to Django 1.8.  Always stay on Django LTS versions&lt;br /&gt;
* add layer update from layers.openembedded.org to the UI&lt;br /&gt;
* add Django tests for building e.g. we should be able to build core-image-sato from a django test and validate the db&lt;br /&gt;
* add mysql script to simplify setup with mysql/apache&lt;br /&gt;
* pull in new look and feel&lt;br /&gt;
* add django tests to validate all artifacts - if we say they can download it and it appears on a page anywhere, it should have a test&lt;br /&gt;
* improve docs of code on wiki. We have a nice start (ty E &amp;amp; M); I&#039;d like to improve it.  &lt;br /&gt;
** events - more info and list types supported&lt;br /&gt;
** what logic is in jscript , what is in python&lt;br /&gt;
** database schema definition and description esp interrelationships.&lt;br /&gt;
** list django tests, mostly so we can see what we are missing. &lt;br /&gt;
* build mode triggerred off of database entry, not autonomous process.&lt;br /&gt;
* add asynchronicity. I have noted a number of places where commands result in a sluggish ui. I&#039;m nervous about this one.&lt;br /&gt;
** for example, starting a build that requires us to clone layers has a noticeable delay as compared to starting a local only project build.&lt;br /&gt;
* verify we can stop builds cleanly.&lt;br /&gt;
* get the rest of our logs into our local toaster dir&lt;br /&gt;
* allow us to run and stop 2 toasters on the same machine without them interfering with each other&lt;br /&gt;
* (2.2 or later for sure) discuss how to support multiple back end bb servers.  &lt;br /&gt;
** probably will need to be able to add servers/remove servers/see server status/build state&lt;br /&gt;
* be able to see more details about build.  For example, see the &amp;quot;jobs&amp;quot; being processed like you can in knotty&lt;br /&gt;
* revisit what variables we let people change. sstate_dir and dl_dir should certainly be allowed to change&lt;br /&gt;
* discuss way we do migrations. possibly change. thoughts:&lt;br /&gt;
** only support migrations from last release to current. (e.g. if you were running toaster jethro you could update to jethro++, but could not from fido to jethro)&lt;br /&gt;
** take migration from the startup script. it&#039;s only for releasetorelease.&lt;br /&gt;
*** allow it to be in for master and ease of development w/in a release and pull at end as we do with moving releases.&lt;br /&gt;
** whatever we decide, add a test set for it so we know it works&lt;br /&gt;
* Be able to delete things from the ui&lt;br /&gt;
** old builds&lt;br /&gt;
** old projects&lt;br /&gt;
** imported layers we no longer want&lt;br /&gt;
* Be able to set from the ui a policy to delete all builds/recipes/packages that are older than XXX &amp;amp;/or be able to set maximum size on db and delete everything older than XXX when we near that size&lt;br /&gt;
* update the builds on the web page so we dont have to hit refresh to see the build progress.&lt;br /&gt;
&lt;br /&gt;
==== Elliot&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Make sure all files lint properly&lt;br /&gt;
* Include lint in CI builds&lt;br /&gt;
* Improve test coverage of all areas of the UI and back-end&lt;br /&gt;
* Clean up toasterui.py so it&#039;s easier to see what&#039;s going on in there&lt;br /&gt;
* Fix localhostbecontroller so it doesn&#039;t rely on what&#039;s in the log file when figuring out whether the bitbake server has started&lt;br /&gt;
* Provide a way to modify settings in settings.py without editing that file (e.g. with a local overlay configuration file)&lt;br /&gt;
* Move the logic, environment variables, directory setup and script calls from bin/toaster into Django commands: this would allow you to run toaster correctly, with all the required setup, without having to use bin/toaster; it would also mean that we could provide cleaner production setup instructions, as a user could run a series of Django commands (with their own parameters) to setup their environment; bin/toaster would then just execute a series of Django commands&lt;br /&gt;
&lt;br /&gt;
==== Belén&#039;s ====&lt;br /&gt;
&lt;br /&gt;
===== 2.2 release =====&lt;br /&gt;
&lt;br /&gt;
* Move to Bootstrap 3&lt;br /&gt;
* Clean up all the small little bugs in the Toaster UI&lt;br /&gt;
* Provide a better way to build the extensible SDK from Toaster ([https://bugzilla.yoctoproject.org/show_bug.cgi?id=9297 Bugzilla entry 9297])&lt;br /&gt;
* Improve the variable history ([https://bugzilla.yoctoproject.org/show_bug.cgi?id=5811 Bugzilla entry 5811])&lt;br /&gt;
&lt;br /&gt;
===== 2.1 release =====&lt;br /&gt;
&lt;br /&gt;
* Implement new custom theme (already in progress, aiming for end of M1: Dec 7th). Related bugs: 8417&lt;br /&gt;
* Finish image customisation. Related bugs: 8070, 8081, 8082, 8103, 8104, 8117, 8128, 8132, 8091&lt;br /&gt;
* Review interaction with layers: as it is, imposes heavy restrictions on users. Some of the questions I would like to consider:&lt;br /&gt;
** Should the import layer action be global instead of per project, so that you can reuse imported layers across projects?&lt;br /&gt;
** Should we allow users to override the release layer branch, setting a particular layer index layer to a different branch or commit?&lt;br /&gt;
** Should we allow users to set a different git repo for layer index layers?&lt;br /&gt;
** Should we allow users to override the bitbake revision set by the release in a project?&lt;br /&gt;
** Related bugs: 6640, 6701, 7574, 8426, 8429&lt;br /&gt;
* Access control (a simple one to start, with very basic permissions). Related bugs: 6233, 6234&lt;br /&gt;
* WIC integration (getting a step closer to the holy grail of &#039;click button&#039; &amp;gt; &#039;image deployed in board&#039;)&lt;br /&gt;
* Fix the variable history (this is one of the features users have highly praised, and it is a bit broken in 2.0). Related bugs: 5811, 8488, 8190, 8189, 8188&lt;br /&gt;
* Get Toaster to collect build data from Jenkins builds. Once again, repeatedly requested by users. Related bugs: 7527&lt;br /&gt;
&lt;br /&gt;
==== Ed&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Merge analysis and managed modes&lt;br /&gt;
* Fix as much pending bugs as possible.&lt;br /&gt;
* Finish image customisation.&lt;br /&gt;
* Support Django LTS&lt;br /&gt;
* Increase test coverage. It would be good to set realistic goals, e.g. cover specific modules or increase coverage to 10% and follow the plan.&lt;br /&gt;
* Include production configuration into testing&lt;br /&gt;
* Cover views.py with tests and split it into modules. Currently it&#039;s huge and hard to maintain. I suspect there are a lot of unused APIs in there.&lt;br /&gt;
* Finish refactoring of buildcontroller code. This work is started in ed/toaster/bec and sitting there for quite long time.&lt;br /&gt;
* Bring patchset support to toaster patchwork.&lt;br /&gt;
* Add &#039;submitted upstream&#039; and &#039;merged upstream&#039; statuses to patchwork. Make the statuses updated automatically when patch is accepted to toaster-next or bitbake master.&lt;br /&gt;
* Clean up the code. Set realistic goals for pylint scores and follow them.&lt;br /&gt;
* Enhance Jenkins CI jobs to run all possible django, tts and pylint tests&lt;br /&gt;
&lt;br /&gt;
==== Sujith&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Get toaster working with non-git repos. Related bugs: 8456&lt;br /&gt;
* minor, but would be good to have :- Once user launches toaster, it would be nice to see the progress bar updated without user refreshing the page. Related bugs: 8328&lt;br /&gt;
* Cancellation of build. Related bugs: 6787&lt;br /&gt;
&lt;br /&gt;
Would love to take up more tasks.&lt;br /&gt;
&lt;br /&gt;
==== David&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Finish the effort around Toaster &amp;quot;extensions&amp;quot;, started by Farrell. This will enable Toaster customization for commercial partners, as per branding and &lt;br /&gt;
alternate pages (for extended project creation).&lt;br /&gt;
&lt;br /&gt;
== All bugs for 2.2 ==&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
  |columns=id,milestone,summary,status,priority&lt;br /&gt;
  |milestone=future,2.1,2.1 M1,2.1 M2,2.1 M3,2.1 M4,2.2,2.2 M1,2.2 M2,2.2 M3,2.2 M4&lt;br /&gt;
  |sort=priority&lt;br /&gt;
  |product=Toaster&lt;br /&gt;
  |resolution=!fixed&lt;br /&gt;
  |status=!IN PROGRESS REVIEW&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==  Toaster Enhancements for 2.2 ==&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
  |columns=id,to,estimated,summary,priority,from,qa,milestone,status,resolution,whiteboard&lt;br /&gt;
  |milestone=2.2,2.2 M1,2.2 M2,2.2 M3,2.2 M4&lt;br /&gt;
  |sort=priority&lt;br /&gt;
  |severity=enhancement&lt;br /&gt;
  |product=Toaster&lt;br /&gt;
  |status=!verified&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_future_release_planning&amp;diff=18266</id>
		<title>Toaster future release planning</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_future_release_planning&amp;diff=18266"/>
		<updated>2016-04-25T16:09:39Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* 2.2 release */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
&lt;br /&gt;
== 2.2 Planning ==&lt;br /&gt;
&lt;br /&gt;
=== Wish lists ===&lt;br /&gt;
&lt;br /&gt;
==== Michael&#039;s ====&lt;br /&gt;
* Remove pseudo API cruft / template context to json response stuff&lt;br /&gt;
* Remove bldcontrol (we only need localhostbecontroller.py)&lt;br /&gt;
* Look at schema and rework where needed&lt;br /&gt;
* Consolidate used API into it&#039;s own view&lt;br /&gt;
* Finish toaster tables porting&lt;br /&gt;
* Create a toasterclient.py to interact with toaster to avoid need for &#039;command line builds&#039;&lt;br /&gt;
** This would use toaster&#039;s API as the entry point to using bitbake&lt;br /&gt;
** It could be called by CI systems&lt;br /&gt;
** It could be used by auto builders etc&lt;br /&gt;
** Means that there are no two modes anywhere in Toaster&lt;br /&gt;
** Allows project configuration to be changed in toaster from the command line&lt;br /&gt;
* Drop supporting old releases&lt;br /&gt;
&lt;br /&gt;
==== Brian&#039;s ====&lt;br /&gt;
The Ordered Part&lt;br /&gt;
# Django 1.8 aka LTS&lt;br /&gt;
#  Image Customization&lt;br /&gt;
#  Testing and Stability&lt;br /&gt;
# One way to start/One code path &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This is *not* ordered! This is more of a brain dump :)&lt;br /&gt;
* Collapse analysis and managed mode&lt;br /&gt;
* Working CI for each commit into toaster-next as well as for project peoples testME branches on poky-contrib:&lt;br /&gt;
** run django tests&lt;br /&gt;
** run selenium tests&lt;br /&gt;
** leverage sstate to make runs generally shorter&lt;br /&gt;
* remove git assumptions from code&lt;br /&gt;
* rationalize/simplify the configuration scripts&lt;br /&gt;
* if bitbake-memres comes out, interact with it gracefully (this is my preferred method of collapsing analysis and managed)&lt;br /&gt;
* fix the tmpdir/release build issue &amp;amp;/or discuss the need to support building old releases with a UI rather than limiting toaster to build the release it is part of. This is inherently fragile.&lt;br /&gt;
* ask bb to parse any layer added to a project and such as imported layers, and layers specified in the configuration file to give us recipe information.&lt;br /&gt;
* improve our build event following:&lt;br /&gt;
** note parse events&lt;br /&gt;
** update/retrieve ui so that we can tell something is happening before the first build event comes &lt;br /&gt;
** eliminate the remaining random tracebacks from try/except failures.&lt;br /&gt;
* allow configuration in addition to the addition/removal of layers/packages&lt;br /&gt;
** kernel config&lt;br /&gt;
* add user control/authentication&lt;br /&gt;
* update to Django 1.8.  Always stay on Django LTS versions&lt;br /&gt;
* add layer update from layers.openembedded.org to the UI&lt;br /&gt;
* add Django tests for building e.g. we should be able to build core-image-sato from a django test and validate the db&lt;br /&gt;
* add mysql script to simplify setup with mysql/apache&lt;br /&gt;
* pull in new look and feel&lt;br /&gt;
* add django tests to validate all artifacts - if we say they can download it and it appears on a page anywhere, it should have a test&lt;br /&gt;
* improve docs of code on wiki. We have a nice start (ty E &amp;amp; M); I&#039;d like to improve it.  &lt;br /&gt;
** events - more info and list types supported&lt;br /&gt;
** what logic is in jscript , what is in python&lt;br /&gt;
** database schema definition and description esp interrelationships.&lt;br /&gt;
** list django tests, mostly so we can see what we are missing. &lt;br /&gt;
* build mode triggerred off of database entry, not autonomous process.&lt;br /&gt;
* add asynchronicity. I have noted a number of places where commands result in a sluggish ui. I&#039;m nervous about this one.&lt;br /&gt;
** for example, starting a build that requires us to clone layers has a noticeable delay as compared to starting a local only project build.&lt;br /&gt;
* verify we can stop builds cleanly.&lt;br /&gt;
* get the rest of our logs into our local toaster dir&lt;br /&gt;
* allow us to run and stop 2 toasters on the same machine without them interfering with each other&lt;br /&gt;
* (2.2 or later for sure) discuss how to support multiple back end bb servers.  &lt;br /&gt;
** probably will need to be able to add servers/remove servers/see server status/build state&lt;br /&gt;
* be able to see more details about build.  For example, see the &amp;quot;jobs&amp;quot; being processed like you can in knotty&lt;br /&gt;
* revisit what variables we let people change. sstate_dir and dl_dir should certainly be allowed to change&lt;br /&gt;
* discuss way we do migrations. possibly change. thoughts:&lt;br /&gt;
** only support migrations from last release to current. (e.g. if you were running toaster jethro you could update to jethro++, but could not from fido to jethro)&lt;br /&gt;
** take migration from the startup script. it&#039;s only for releasetorelease.&lt;br /&gt;
*** allow it to be in for master and ease of development w/in a release and pull at end as we do with moving releases.&lt;br /&gt;
** whatever we decide, add a test set for it so we know it works&lt;br /&gt;
* Be able to delete things from the ui&lt;br /&gt;
** old builds&lt;br /&gt;
** old projects&lt;br /&gt;
** imported layers we no longer want&lt;br /&gt;
* Be able to set from the ui a policy to delete all builds/recipes/packages that are older than XXX &amp;amp;/or be able to set maximum size on db and delete everything older than XXX when we near that size&lt;br /&gt;
* update the builds on the web page so we dont have to hit refresh to see the build progress.&lt;br /&gt;
&lt;br /&gt;
==== Elliot&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Make sure all files lint properly&lt;br /&gt;
* Include lint in CI builds&lt;br /&gt;
* Improve test coverage of all areas of the UI and back-end&lt;br /&gt;
* Clean up toasterui.py so it&#039;s easier to see what&#039;s going on in there&lt;br /&gt;
* Fix localhostbecontroller so it doesn&#039;t rely on what&#039;s in the log file when figuring out whether the bitbake server has started&lt;br /&gt;
* Provide a way to modify settings in settings.py without editing that file (e.g. with a local overlay configuration file)&lt;br /&gt;
* Move the logic, environment variables, directory setup and script calls from bin/toaster into Django commands: this would allow you to run toaster correctly, with all the required setup, without having to use bin/toaster; it would also mean that we could provide cleaner production setup instructions, as a user could run a series of Django commands (with their own parameters) to setup their environment; bin/toaster would then just execute a series of Django commands&lt;br /&gt;
&lt;br /&gt;
==== Belén&#039;s ====&lt;br /&gt;
&lt;br /&gt;
===== 2.2 release =====&lt;br /&gt;
&lt;br /&gt;
* Move to Bootstrap 3&lt;br /&gt;
* Clean up all the small little bugs in the Toaster UI&lt;br /&gt;
* &lt;br /&gt;
* Improve the variable history [https://bugzilla.yoctoproject.org/show_bug.cgi?id=5811 Bugzilla entry 5811]&lt;br /&gt;
&lt;br /&gt;
===== 2.1 release =====&lt;br /&gt;
&lt;br /&gt;
* Implement new custom theme (already in progress, aiming for end of M1: Dec 7th). Related bugs: 8417&lt;br /&gt;
* Finish image customisation. Related bugs: 8070, 8081, 8082, 8103, 8104, 8117, 8128, 8132, 8091&lt;br /&gt;
* Review interaction with layers: as it is, imposes heavy restrictions on users. Some of the questions I would like to consider:&lt;br /&gt;
** Should the import layer action be global instead of per project, so that you can reuse imported layers across projects?&lt;br /&gt;
** Should we allow users to override the release layer branch, setting a particular layer index layer to a different branch or commit?&lt;br /&gt;
** Should we allow users to set a different git repo for layer index layers?&lt;br /&gt;
** Should we allow users to override the bitbake revision set by the release in a project?&lt;br /&gt;
** Related bugs: 6640, 6701, 7574, 8426, 8429&lt;br /&gt;
* Access control (a simple one to start, with very basic permissions). Related bugs: 6233, 6234&lt;br /&gt;
* WIC integration (getting a step closer to the holy grail of &#039;click button&#039; &amp;gt; &#039;image deployed in board&#039;)&lt;br /&gt;
* Fix the variable history (this is one of the features users have highly praised, and it is a bit broken in 2.0). Related bugs: 5811, 8488, 8190, 8189, 8188&lt;br /&gt;
* Get Toaster to collect build data from Jenkins builds. Once again, repeatedly requested by users. Related bugs: 7527&lt;br /&gt;
&lt;br /&gt;
==== Ed&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Merge analysis and managed modes&lt;br /&gt;
* Fix as much pending bugs as possible.&lt;br /&gt;
* Finish image customisation.&lt;br /&gt;
* Support Django LTS&lt;br /&gt;
* Increase test coverage. It would be good to set realistic goals, e.g. cover specific modules or increase coverage to 10% and follow the plan.&lt;br /&gt;
* Include production configuration into testing&lt;br /&gt;
* Cover views.py with tests and split it into modules. Currently it&#039;s huge and hard to maintain. I suspect there are a lot of unused APIs in there.&lt;br /&gt;
* Finish refactoring of buildcontroller code. This work is started in ed/toaster/bec and sitting there for quite long time.&lt;br /&gt;
* Bring patchset support to toaster patchwork.&lt;br /&gt;
* Add &#039;submitted upstream&#039; and &#039;merged upstream&#039; statuses to patchwork. Make the statuses updated automatically when patch is accepted to toaster-next or bitbake master.&lt;br /&gt;
* Clean up the code. Set realistic goals for pylint scores and follow them.&lt;br /&gt;
* Enhance Jenkins CI jobs to run all possible django, tts and pylint tests&lt;br /&gt;
&lt;br /&gt;
==== Sujith&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Get toaster working with non-git repos. Related bugs: 8456&lt;br /&gt;
* minor, but would be good to have :- Once user launches toaster, it would be nice to see the progress bar updated without user refreshing the page. Related bugs: 8328&lt;br /&gt;
* Cancellation of build. Related bugs: 6787&lt;br /&gt;
&lt;br /&gt;
Would love to take up more tasks.&lt;br /&gt;
&lt;br /&gt;
==== David&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Finish the effort around Toaster &amp;quot;extensions&amp;quot;, started by Farrell. This will enable Toaster customization for commercial partners, as per branding and &lt;br /&gt;
alternate pages (for extended project creation).&lt;br /&gt;
&lt;br /&gt;
== All bugs for 2.2 ==&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
  |columns=id,milestone,summary,status,priority&lt;br /&gt;
  |milestone=future,2.1,2.1 M1,2.1 M2,2.1 M3,2.1 M4,2.2,2.2 M1,2.2 M2,2.2 M3,2.2 M4&lt;br /&gt;
  |sort=priority&lt;br /&gt;
  |product=Toaster&lt;br /&gt;
  |resolution=!fixed&lt;br /&gt;
  |status=!IN PROGRESS REVIEW&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==  Toaster Enhancements for 2.2 ==&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
  |columns=id,to,estimated,summary,priority,from,qa,milestone,status,resolution,whiteboard&lt;br /&gt;
  |milestone=2.2,2.2 M1,2.2 M2,2.2 M3,2.2 M4&lt;br /&gt;
  |sort=priority&lt;br /&gt;
  |severity=enhancement&lt;br /&gt;
  |product=Toaster&lt;br /&gt;
  |status=!verified&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_future_release_planning&amp;diff=18265</id>
		<title>Toaster future release planning</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_future_release_planning&amp;diff=18265"/>
		<updated>2016-04-25T16:08:46Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* 2.2 release */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
&lt;br /&gt;
== 2.2 Planning ==&lt;br /&gt;
&lt;br /&gt;
=== Wish lists ===&lt;br /&gt;
&lt;br /&gt;
==== Michael&#039;s ====&lt;br /&gt;
* Remove pseudo API cruft / template context to json response stuff&lt;br /&gt;
* Remove bldcontrol (we only need localhostbecontroller.py)&lt;br /&gt;
* Look at schema and rework where needed&lt;br /&gt;
* Consolidate used API into it&#039;s own view&lt;br /&gt;
* Finish toaster tables porting&lt;br /&gt;
* Create a toasterclient.py to interact with toaster to avoid need for &#039;command line builds&#039;&lt;br /&gt;
** This would use toaster&#039;s API as the entry point to using bitbake&lt;br /&gt;
** It could be called by CI systems&lt;br /&gt;
** It could be used by auto builders etc&lt;br /&gt;
** Means that there are no two modes anywhere in Toaster&lt;br /&gt;
** Allows project configuration to be changed in toaster from the command line&lt;br /&gt;
* Drop supporting old releases&lt;br /&gt;
&lt;br /&gt;
==== Brian&#039;s ====&lt;br /&gt;
The Ordered Part&lt;br /&gt;
# Django 1.8 aka LTS&lt;br /&gt;
#  Image Customization&lt;br /&gt;
#  Testing and Stability&lt;br /&gt;
# One way to start/One code path &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This is *not* ordered! This is more of a brain dump :)&lt;br /&gt;
* Collapse analysis and managed mode&lt;br /&gt;
* Working CI for each commit into toaster-next as well as for project peoples testME branches on poky-contrib:&lt;br /&gt;
** run django tests&lt;br /&gt;
** run selenium tests&lt;br /&gt;
** leverage sstate to make runs generally shorter&lt;br /&gt;
* remove git assumptions from code&lt;br /&gt;
* rationalize/simplify the configuration scripts&lt;br /&gt;
* if bitbake-memres comes out, interact with it gracefully (this is my preferred method of collapsing analysis and managed)&lt;br /&gt;
* fix the tmpdir/release build issue &amp;amp;/or discuss the need to support building old releases with a UI rather than limiting toaster to build the release it is part of. This is inherently fragile.&lt;br /&gt;
* ask bb to parse any layer added to a project and such as imported layers, and layers specified in the configuration file to give us recipe information.&lt;br /&gt;
* improve our build event following:&lt;br /&gt;
** note parse events&lt;br /&gt;
** update/retrieve ui so that we can tell something is happening before the first build event comes &lt;br /&gt;
** eliminate the remaining random tracebacks from try/except failures.&lt;br /&gt;
* allow configuration in addition to the addition/removal of layers/packages&lt;br /&gt;
** kernel config&lt;br /&gt;
* add user control/authentication&lt;br /&gt;
* update to Django 1.8.  Always stay on Django LTS versions&lt;br /&gt;
* add layer update from layers.openembedded.org to the UI&lt;br /&gt;
* add Django tests for building e.g. we should be able to build core-image-sato from a django test and validate the db&lt;br /&gt;
* add mysql script to simplify setup with mysql/apache&lt;br /&gt;
* pull in new look and feel&lt;br /&gt;
* add django tests to validate all artifacts - if we say they can download it and it appears on a page anywhere, it should have a test&lt;br /&gt;
* improve docs of code on wiki. We have a nice start (ty E &amp;amp; M); I&#039;d like to improve it.  &lt;br /&gt;
** events - more info and list types supported&lt;br /&gt;
** what logic is in jscript , what is in python&lt;br /&gt;
** database schema definition and description esp interrelationships.&lt;br /&gt;
** list django tests, mostly so we can see what we are missing. &lt;br /&gt;
* build mode triggerred off of database entry, not autonomous process.&lt;br /&gt;
* add asynchronicity. I have noted a number of places where commands result in a sluggish ui. I&#039;m nervous about this one.&lt;br /&gt;
** for example, starting a build that requires us to clone layers has a noticeable delay as compared to starting a local only project build.&lt;br /&gt;
* verify we can stop builds cleanly.&lt;br /&gt;
* get the rest of our logs into our local toaster dir&lt;br /&gt;
* allow us to run and stop 2 toasters on the same machine without them interfering with each other&lt;br /&gt;
* (2.2 or later for sure) discuss how to support multiple back end bb servers.  &lt;br /&gt;
** probably will need to be able to add servers/remove servers/see server status/build state&lt;br /&gt;
* be able to see more details about build.  For example, see the &amp;quot;jobs&amp;quot; being processed like you can in knotty&lt;br /&gt;
* revisit what variables we let people change. sstate_dir and dl_dir should certainly be allowed to change&lt;br /&gt;
* discuss way we do migrations. possibly change. thoughts:&lt;br /&gt;
** only support migrations from last release to current. (e.g. if you were running toaster jethro you could update to jethro++, but could not from fido to jethro)&lt;br /&gt;
** take migration from the startup script. it&#039;s only for releasetorelease.&lt;br /&gt;
*** allow it to be in for master and ease of development w/in a release and pull at end as we do with moving releases.&lt;br /&gt;
** whatever we decide, add a test set for it so we know it works&lt;br /&gt;
* Be able to delete things from the ui&lt;br /&gt;
** old builds&lt;br /&gt;
** old projects&lt;br /&gt;
** imported layers we no longer want&lt;br /&gt;
* Be able to set from the ui a policy to delete all builds/recipes/packages that are older than XXX &amp;amp;/or be able to set maximum size on db and delete everything older than XXX when we near that size&lt;br /&gt;
* update the builds on the web page so we dont have to hit refresh to see the build progress.&lt;br /&gt;
&lt;br /&gt;
==== Elliot&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Make sure all files lint properly&lt;br /&gt;
* Include lint in CI builds&lt;br /&gt;
* Improve test coverage of all areas of the UI and back-end&lt;br /&gt;
* Clean up toasterui.py so it&#039;s easier to see what&#039;s going on in there&lt;br /&gt;
* Fix localhostbecontroller so it doesn&#039;t rely on what&#039;s in the log file when figuring out whether the bitbake server has started&lt;br /&gt;
* Provide a way to modify settings in settings.py without editing that file (e.g. with a local overlay configuration file)&lt;br /&gt;
* Move the logic, environment variables, directory setup and script calls from bin/toaster into Django commands: this would allow you to run toaster correctly, with all the required setup, without having to use bin/toaster; it would also mean that we could provide cleaner production setup instructions, as a user could run a series of Django commands (with their own parameters) to setup their environment; bin/toaster would then just execute a series of Django commands&lt;br /&gt;
&lt;br /&gt;
==== Belén&#039;s ====&lt;br /&gt;
&lt;br /&gt;
===== 2.2 release =====&lt;br /&gt;
&lt;br /&gt;
* Move to Bootstrap 3&lt;br /&gt;
* Clean up all the small little bugs in the Toaster UI&lt;br /&gt;
* &lt;br /&gt;
* Improve the variable history [https://bugzilla.yoctoproject.org/show_bug.cgi?id=5811|Bugzilla entry 5811 ]&lt;br /&gt;
&lt;br /&gt;
===== 2.1 release =====&lt;br /&gt;
&lt;br /&gt;
* Implement new custom theme (already in progress, aiming for end of M1: Dec 7th). Related bugs: 8417&lt;br /&gt;
* Finish image customisation. Related bugs: 8070, 8081, 8082, 8103, 8104, 8117, 8128, 8132, 8091&lt;br /&gt;
* Review interaction with layers: as it is, imposes heavy restrictions on users. Some of the questions I would like to consider:&lt;br /&gt;
** Should the import layer action be global instead of per project, so that you can reuse imported layers across projects?&lt;br /&gt;
** Should we allow users to override the release layer branch, setting a particular layer index layer to a different branch or commit?&lt;br /&gt;
** Should we allow users to set a different git repo for layer index layers?&lt;br /&gt;
** Should we allow users to override the bitbake revision set by the release in a project?&lt;br /&gt;
** Related bugs: 6640, 6701, 7574, 8426, 8429&lt;br /&gt;
* Access control (a simple one to start, with very basic permissions). Related bugs: 6233, 6234&lt;br /&gt;
* WIC integration (getting a step closer to the holy grail of &#039;click button&#039; &amp;gt; &#039;image deployed in board&#039;)&lt;br /&gt;
* Fix the variable history (this is one of the features users have highly praised, and it is a bit broken in 2.0). Related bugs: 5811, 8488, 8190, 8189, 8188&lt;br /&gt;
* Get Toaster to collect build data from Jenkins builds. Once again, repeatedly requested by users. Related bugs: 7527&lt;br /&gt;
&lt;br /&gt;
==== Ed&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Merge analysis and managed modes&lt;br /&gt;
* Fix as much pending bugs as possible.&lt;br /&gt;
* Finish image customisation.&lt;br /&gt;
* Support Django LTS&lt;br /&gt;
* Increase test coverage. It would be good to set realistic goals, e.g. cover specific modules or increase coverage to 10% and follow the plan.&lt;br /&gt;
* Include production configuration into testing&lt;br /&gt;
* Cover views.py with tests and split it into modules. Currently it&#039;s huge and hard to maintain. I suspect there are a lot of unused APIs in there.&lt;br /&gt;
* Finish refactoring of buildcontroller code. This work is started in ed/toaster/bec and sitting there for quite long time.&lt;br /&gt;
* Bring patchset support to toaster patchwork.&lt;br /&gt;
* Add &#039;submitted upstream&#039; and &#039;merged upstream&#039; statuses to patchwork. Make the statuses updated automatically when patch is accepted to toaster-next or bitbake master.&lt;br /&gt;
* Clean up the code. Set realistic goals for pylint scores and follow them.&lt;br /&gt;
* Enhance Jenkins CI jobs to run all possible django, tts and pylint tests&lt;br /&gt;
&lt;br /&gt;
==== Sujith&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Get toaster working with non-git repos. Related bugs: 8456&lt;br /&gt;
* minor, but would be good to have :- Once user launches toaster, it would be nice to see the progress bar updated without user refreshing the page. Related bugs: 8328&lt;br /&gt;
* Cancellation of build. Related bugs: 6787&lt;br /&gt;
&lt;br /&gt;
Would love to take up more tasks.&lt;br /&gt;
&lt;br /&gt;
==== David&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Finish the effort around Toaster &amp;quot;extensions&amp;quot;, started by Farrell. This will enable Toaster customization for commercial partners, as per branding and &lt;br /&gt;
alternate pages (for extended project creation).&lt;br /&gt;
&lt;br /&gt;
== All bugs for 2.2 ==&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
  |columns=id,milestone,summary,status,priority&lt;br /&gt;
  |milestone=future,2.1,2.1 M1,2.1 M2,2.1 M3,2.1 M4,2.2,2.2 M1,2.2 M2,2.2 M3,2.2 M4&lt;br /&gt;
  |sort=priority&lt;br /&gt;
  |product=Toaster&lt;br /&gt;
  |resolution=!fixed&lt;br /&gt;
  |status=!IN PROGRESS REVIEW&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==  Toaster Enhancements for 2.2 ==&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
  |columns=id,to,estimated,summary,priority,from,qa,milestone,status,resolution,whiteboard&lt;br /&gt;
  |milestone=2.2,2.2 M1,2.2 M2,2.2 M3,2.2 M4&lt;br /&gt;
  |sort=priority&lt;br /&gt;
  |severity=enhancement&lt;br /&gt;
  |product=Toaster&lt;br /&gt;
  |status=!verified&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_future_release_planning&amp;diff=18264</id>
		<title>Toaster future release planning</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_future_release_planning&amp;diff=18264"/>
		<updated>2016-04-25T16:08:09Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* 2.2 release */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
&lt;br /&gt;
== 2.2 Planning ==&lt;br /&gt;
&lt;br /&gt;
=== Wish lists ===&lt;br /&gt;
&lt;br /&gt;
==== Michael&#039;s ====&lt;br /&gt;
* Remove pseudo API cruft / template context to json response stuff&lt;br /&gt;
* Remove bldcontrol (we only need localhostbecontroller.py)&lt;br /&gt;
* Look at schema and rework where needed&lt;br /&gt;
* Consolidate used API into it&#039;s own view&lt;br /&gt;
* Finish toaster tables porting&lt;br /&gt;
* Create a toasterclient.py to interact with toaster to avoid need for &#039;command line builds&#039;&lt;br /&gt;
** This would use toaster&#039;s API as the entry point to using bitbake&lt;br /&gt;
** It could be called by CI systems&lt;br /&gt;
** It could be used by auto builders etc&lt;br /&gt;
** Means that there are no two modes anywhere in Toaster&lt;br /&gt;
** Allows project configuration to be changed in toaster from the command line&lt;br /&gt;
* Drop supporting old releases&lt;br /&gt;
&lt;br /&gt;
==== Brian&#039;s ====&lt;br /&gt;
The Ordered Part&lt;br /&gt;
# Django 1.8 aka LTS&lt;br /&gt;
#  Image Customization&lt;br /&gt;
#  Testing and Stability&lt;br /&gt;
# One way to start/One code path &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This is *not* ordered! This is more of a brain dump :)&lt;br /&gt;
* Collapse analysis and managed mode&lt;br /&gt;
* Working CI for each commit into toaster-next as well as for project peoples testME branches on poky-contrib:&lt;br /&gt;
** run django tests&lt;br /&gt;
** run selenium tests&lt;br /&gt;
** leverage sstate to make runs generally shorter&lt;br /&gt;
* remove git assumptions from code&lt;br /&gt;
* rationalize/simplify the configuration scripts&lt;br /&gt;
* if bitbake-memres comes out, interact with it gracefully (this is my preferred method of collapsing analysis and managed)&lt;br /&gt;
* fix the tmpdir/release build issue &amp;amp;/or discuss the need to support building old releases with a UI rather than limiting toaster to build the release it is part of. This is inherently fragile.&lt;br /&gt;
* ask bb to parse any layer added to a project and such as imported layers, and layers specified in the configuration file to give us recipe information.&lt;br /&gt;
* improve our build event following:&lt;br /&gt;
** note parse events&lt;br /&gt;
** update/retrieve ui so that we can tell something is happening before the first build event comes &lt;br /&gt;
** eliminate the remaining random tracebacks from try/except failures.&lt;br /&gt;
* allow configuration in addition to the addition/removal of layers/packages&lt;br /&gt;
** kernel config&lt;br /&gt;
* add user control/authentication&lt;br /&gt;
* update to Django 1.8.  Always stay on Django LTS versions&lt;br /&gt;
* add layer update from layers.openembedded.org to the UI&lt;br /&gt;
* add Django tests for building e.g. we should be able to build core-image-sato from a django test and validate the db&lt;br /&gt;
* add mysql script to simplify setup with mysql/apache&lt;br /&gt;
* pull in new look and feel&lt;br /&gt;
* add django tests to validate all artifacts - if we say they can download it and it appears on a page anywhere, it should have a test&lt;br /&gt;
* improve docs of code on wiki. We have a nice start (ty E &amp;amp; M); I&#039;d like to improve it.  &lt;br /&gt;
** events - more info and list types supported&lt;br /&gt;
** what logic is in jscript , what is in python&lt;br /&gt;
** database schema definition and description esp interrelationships.&lt;br /&gt;
** list django tests, mostly so we can see what we are missing. &lt;br /&gt;
* build mode triggerred off of database entry, not autonomous process.&lt;br /&gt;
* add asynchronicity. I have noted a number of places where commands result in a sluggish ui. I&#039;m nervous about this one.&lt;br /&gt;
** for example, starting a build that requires us to clone layers has a noticeable delay as compared to starting a local only project build.&lt;br /&gt;
* verify we can stop builds cleanly.&lt;br /&gt;
* get the rest of our logs into our local toaster dir&lt;br /&gt;
* allow us to run and stop 2 toasters on the same machine without them interfering with each other&lt;br /&gt;
* (2.2 or later for sure) discuss how to support multiple back end bb servers.  &lt;br /&gt;
** probably will need to be able to add servers/remove servers/see server status/build state&lt;br /&gt;
* be able to see more details about build.  For example, see the &amp;quot;jobs&amp;quot; being processed like you can in knotty&lt;br /&gt;
* revisit what variables we let people change. sstate_dir and dl_dir should certainly be allowed to change&lt;br /&gt;
* discuss way we do migrations. possibly change. thoughts:&lt;br /&gt;
** only support migrations from last release to current. (e.g. if you were running toaster jethro you could update to jethro++, but could not from fido to jethro)&lt;br /&gt;
** take migration from the startup script. it&#039;s only for releasetorelease.&lt;br /&gt;
*** allow it to be in for master and ease of development w/in a release and pull at end as we do with moving releases.&lt;br /&gt;
** whatever we decide, add a test set for it so we know it works&lt;br /&gt;
* Be able to delete things from the ui&lt;br /&gt;
** old builds&lt;br /&gt;
** old projects&lt;br /&gt;
** imported layers we no longer want&lt;br /&gt;
* Be able to set from the ui a policy to delete all builds/recipes/packages that are older than XXX &amp;amp;/or be able to set maximum size on db and delete everything older than XXX when we near that size&lt;br /&gt;
* update the builds on the web page so we dont have to hit refresh to see the build progress.&lt;br /&gt;
&lt;br /&gt;
==== Elliot&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Make sure all files lint properly&lt;br /&gt;
* Include lint in CI builds&lt;br /&gt;
* Improve test coverage of all areas of the UI and back-end&lt;br /&gt;
* Clean up toasterui.py so it&#039;s easier to see what&#039;s going on in there&lt;br /&gt;
* Fix localhostbecontroller so it doesn&#039;t rely on what&#039;s in the log file when figuring out whether the bitbake server has started&lt;br /&gt;
* Provide a way to modify settings in settings.py without editing that file (e.g. with a local overlay configuration file)&lt;br /&gt;
* Move the logic, environment variables, directory setup and script calls from bin/toaster into Django commands: this would allow you to run toaster correctly, with all the required setup, without having to use bin/toaster; it would also mean that we could provide cleaner production setup instructions, as a user could run a series of Django commands (with their own parameters) to setup their environment; bin/toaster would then just execute a series of Django commands&lt;br /&gt;
&lt;br /&gt;
==== Belén&#039;s ====&lt;br /&gt;
&lt;br /&gt;
===== 2.2 release =====&lt;br /&gt;
&lt;br /&gt;
* Move to Bootstrap 3&lt;br /&gt;
* Clean up all the small little bugs in the Toaster UI&lt;br /&gt;
* &lt;br /&gt;
* Improve the variable history [https://bugzilla.yoctoproject.org/show_bug.cgi?id=5811 |Bugzilla entry 5811 ]&lt;br /&gt;
&lt;br /&gt;
===== 2.1 release =====&lt;br /&gt;
&lt;br /&gt;
* Implement new custom theme (already in progress, aiming for end of M1: Dec 7th). Related bugs: 8417&lt;br /&gt;
* Finish image customisation. Related bugs: 8070, 8081, 8082, 8103, 8104, 8117, 8128, 8132, 8091&lt;br /&gt;
* Review interaction with layers: as it is, imposes heavy restrictions on users. Some of the questions I would like to consider:&lt;br /&gt;
** Should the import layer action be global instead of per project, so that you can reuse imported layers across projects?&lt;br /&gt;
** Should we allow users to override the release layer branch, setting a particular layer index layer to a different branch or commit?&lt;br /&gt;
** Should we allow users to set a different git repo for layer index layers?&lt;br /&gt;
** Should we allow users to override the bitbake revision set by the release in a project?&lt;br /&gt;
** Related bugs: 6640, 6701, 7574, 8426, 8429&lt;br /&gt;
* Access control (a simple one to start, with very basic permissions). Related bugs: 6233, 6234&lt;br /&gt;
* WIC integration (getting a step closer to the holy grail of &#039;click button&#039; &amp;gt; &#039;image deployed in board&#039;)&lt;br /&gt;
* Fix the variable history (this is one of the features users have highly praised, and it is a bit broken in 2.0). Related bugs: 5811, 8488, 8190, 8189, 8188&lt;br /&gt;
* Get Toaster to collect build data from Jenkins builds. Once again, repeatedly requested by users. Related bugs: 7527&lt;br /&gt;
&lt;br /&gt;
==== Ed&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Merge analysis and managed modes&lt;br /&gt;
* Fix as much pending bugs as possible.&lt;br /&gt;
* Finish image customisation.&lt;br /&gt;
* Support Django LTS&lt;br /&gt;
* Increase test coverage. It would be good to set realistic goals, e.g. cover specific modules or increase coverage to 10% and follow the plan.&lt;br /&gt;
* Include production configuration into testing&lt;br /&gt;
* Cover views.py with tests and split it into modules. Currently it&#039;s huge and hard to maintain. I suspect there are a lot of unused APIs in there.&lt;br /&gt;
* Finish refactoring of buildcontroller code. This work is started in ed/toaster/bec and sitting there for quite long time.&lt;br /&gt;
* Bring patchset support to toaster patchwork.&lt;br /&gt;
* Add &#039;submitted upstream&#039; and &#039;merged upstream&#039; statuses to patchwork. Make the statuses updated automatically when patch is accepted to toaster-next or bitbake master.&lt;br /&gt;
* Clean up the code. Set realistic goals for pylint scores and follow them.&lt;br /&gt;
* Enhance Jenkins CI jobs to run all possible django, tts and pylint tests&lt;br /&gt;
&lt;br /&gt;
==== Sujith&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Get toaster working with non-git repos. Related bugs: 8456&lt;br /&gt;
* minor, but would be good to have :- Once user launches toaster, it would be nice to see the progress bar updated without user refreshing the page. Related bugs: 8328&lt;br /&gt;
* Cancellation of build. Related bugs: 6787&lt;br /&gt;
&lt;br /&gt;
Would love to take up more tasks.&lt;br /&gt;
&lt;br /&gt;
==== David&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Finish the effort around Toaster &amp;quot;extensions&amp;quot;, started by Farrell. This will enable Toaster customization for commercial partners, as per branding and &lt;br /&gt;
alternate pages (for extended project creation).&lt;br /&gt;
&lt;br /&gt;
== All bugs for 2.2 ==&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
  |columns=id,milestone,summary,status,priority&lt;br /&gt;
  |milestone=future,2.1,2.1 M1,2.1 M2,2.1 M3,2.1 M4,2.2,2.2 M1,2.2 M2,2.2 M3,2.2 M4&lt;br /&gt;
  |sort=priority&lt;br /&gt;
  |product=Toaster&lt;br /&gt;
  |resolution=!fixed&lt;br /&gt;
  |status=!IN PROGRESS REVIEW&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==  Toaster Enhancements for 2.2 ==&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
  |columns=id,to,estimated,summary,priority,from,qa,milestone,status,resolution,whiteboard&lt;br /&gt;
  |milestone=2.2,2.2 M1,2.2 M2,2.2 M3,2.2 M4&lt;br /&gt;
  |sort=priority&lt;br /&gt;
  |severity=enhancement&lt;br /&gt;
  |product=Toaster&lt;br /&gt;
  |status=!verified&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_future_release_planning&amp;diff=18263</id>
		<title>Toaster future release planning</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_future_release_planning&amp;diff=18263"/>
		<updated>2016-04-25T16:07:24Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Belén&amp;#039;s */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
&lt;br /&gt;
== 2.2 Planning ==&lt;br /&gt;
&lt;br /&gt;
=== Wish lists ===&lt;br /&gt;
&lt;br /&gt;
==== Michael&#039;s ====&lt;br /&gt;
* Remove pseudo API cruft / template context to json response stuff&lt;br /&gt;
* Remove bldcontrol (we only need localhostbecontroller.py)&lt;br /&gt;
* Look at schema and rework where needed&lt;br /&gt;
* Consolidate used API into it&#039;s own view&lt;br /&gt;
* Finish toaster tables porting&lt;br /&gt;
* Create a toasterclient.py to interact with toaster to avoid need for &#039;command line builds&#039;&lt;br /&gt;
** This would use toaster&#039;s API as the entry point to using bitbake&lt;br /&gt;
** It could be called by CI systems&lt;br /&gt;
** It could be used by auto builders etc&lt;br /&gt;
** Means that there are no two modes anywhere in Toaster&lt;br /&gt;
** Allows project configuration to be changed in toaster from the command line&lt;br /&gt;
* Drop supporting old releases&lt;br /&gt;
&lt;br /&gt;
==== Brian&#039;s ====&lt;br /&gt;
The Ordered Part&lt;br /&gt;
# Django 1.8 aka LTS&lt;br /&gt;
#  Image Customization&lt;br /&gt;
#  Testing and Stability&lt;br /&gt;
# One way to start/One code path &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This is *not* ordered! This is more of a brain dump :)&lt;br /&gt;
* Collapse analysis and managed mode&lt;br /&gt;
* Working CI for each commit into toaster-next as well as for project peoples testME branches on poky-contrib:&lt;br /&gt;
** run django tests&lt;br /&gt;
** run selenium tests&lt;br /&gt;
** leverage sstate to make runs generally shorter&lt;br /&gt;
* remove git assumptions from code&lt;br /&gt;
* rationalize/simplify the configuration scripts&lt;br /&gt;
* if bitbake-memres comes out, interact with it gracefully (this is my preferred method of collapsing analysis and managed)&lt;br /&gt;
* fix the tmpdir/release build issue &amp;amp;/or discuss the need to support building old releases with a UI rather than limiting toaster to build the release it is part of. This is inherently fragile.&lt;br /&gt;
* ask bb to parse any layer added to a project and such as imported layers, and layers specified in the configuration file to give us recipe information.&lt;br /&gt;
* improve our build event following:&lt;br /&gt;
** note parse events&lt;br /&gt;
** update/retrieve ui so that we can tell something is happening before the first build event comes &lt;br /&gt;
** eliminate the remaining random tracebacks from try/except failures.&lt;br /&gt;
* allow configuration in addition to the addition/removal of layers/packages&lt;br /&gt;
** kernel config&lt;br /&gt;
* add user control/authentication&lt;br /&gt;
* update to Django 1.8.  Always stay on Django LTS versions&lt;br /&gt;
* add layer update from layers.openembedded.org to the UI&lt;br /&gt;
* add Django tests for building e.g. we should be able to build core-image-sato from a django test and validate the db&lt;br /&gt;
* add mysql script to simplify setup with mysql/apache&lt;br /&gt;
* pull in new look and feel&lt;br /&gt;
* add django tests to validate all artifacts - if we say they can download it and it appears on a page anywhere, it should have a test&lt;br /&gt;
* improve docs of code on wiki. We have a nice start (ty E &amp;amp; M); I&#039;d like to improve it.  &lt;br /&gt;
** events - more info and list types supported&lt;br /&gt;
** what logic is in jscript , what is in python&lt;br /&gt;
** database schema definition and description esp interrelationships.&lt;br /&gt;
** list django tests, mostly so we can see what we are missing. &lt;br /&gt;
* build mode triggerred off of database entry, not autonomous process.&lt;br /&gt;
* add asynchronicity. I have noted a number of places where commands result in a sluggish ui. I&#039;m nervous about this one.&lt;br /&gt;
** for example, starting a build that requires us to clone layers has a noticeable delay as compared to starting a local only project build.&lt;br /&gt;
* verify we can stop builds cleanly.&lt;br /&gt;
* get the rest of our logs into our local toaster dir&lt;br /&gt;
* allow us to run and stop 2 toasters on the same machine without them interfering with each other&lt;br /&gt;
* (2.2 or later for sure) discuss how to support multiple back end bb servers.  &lt;br /&gt;
** probably will need to be able to add servers/remove servers/see server status/build state&lt;br /&gt;
* be able to see more details about build.  For example, see the &amp;quot;jobs&amp;quot; being processed like you can in knotty&lt;br /&gt;
* revisit what variables we let people change. sstate_dir and dl_dir should certainly be allowed to change&lt;br /&gt;
* discuss way we do migrations. possibly change. thoughts:&lt;br /&gt;
** only support migrations from last release to current. (e.g. if you were running toaster jethro you could update to jethro++, but could not from fido to jethro)&lt;br /&gt;
** take migration from the startup script. it&#039;s only for releasetorelease.&lt;br /&gt;
*** allow it to be in for master and ease of development w/in a release and pull at end as we do with moving releases.&lt;br /&gt;
** whatever we decide, add a test set for it so we know it works&lt;br /&gt;
* Be able to delete things from the ui&lt;br /&gt;
** old builds&lt;br /&gt;
** old projects&lt;br /&gt;
** imported layers we no longer want&lt;br /&gt;
* Be able to set from the ui a policy to delete all builds/recipes/packages that are older than XXX &amp;amp;/or be able to set maximum size on db and delete everything older than XXX when we near that size&lt;br /&gt;
* update the builds on the web page so we dont have to hit refresh to see the build progress.&lt;br /&gt;
&lt;br /&gt;
==== Elliot&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Make sure all files lint properly&lt;br /&gt;
* Include lint in CI builds&lt;br /&gt;
* Improve test coverage of all areas of the UI and back-end&lt;br /&gt;
* Clean up toasterui.py so it&#039;s easier to see what&#039;s going on in there&lt;br /&gt;
* Fix localhostbecontroller so it doesn&#039;t rely on what&#039;s in the log file when figuring out whether the bitbake server has started&lt;br /&gt;
* Provide a way to modify settings in settings.py without editing that file (e.g. with a local overlay configuration file)&lt;br /&gt;
* Move the logic, environment variables, directory setup and script calls from bin/toaster into Django commands: this would allow you to run toaster correctly, with all the required setup, without having to use bin/toaster; it would also mean that we could provide cleaner production setup instructions, as a user could run a series of Django commands (with their own parameters) to setup their environment; bin/toaster would then just execute a series of Django commands&lt;br /&gt;
&lt;br /&gt;
==== Belén&#039;s ====&lt;br /&gt;
&lt;br /&gt;
===== 2.2 release =====&lt;br /&gt;
&lt;br /&gt;
* Move to Bootstrap 3&lt;br /&gt;
* Clean up of the small little bugs in the Toaster UI&lt;br /&gt;
* Improve the variable history [https://bugzilla.yoctoproject.org/show_bug.cgi?id=5811 | Bugzilla entry 5811 ]&lt;br /&gt;
&lt;br /&gt;
===== 2.1 release =====&lt;br /&gt;
&lt;br /&gt;
* Implement new custom theme (already in progress, aiming for end of M1: Dec 7th). Related bugs: 8417&lt;br /&gt;
* Finish image customisation. Related bugs: 8070, 8081, 8082, 8103, 8104, 8117, 8128, 8132, 8091&lt;br /&gt;
* Review interaction with layers: as it is, imposes heavy restrictions on users. Some of the questions I would like to consider:&lt;br /&gt;
** Should the import layer action be global instead of per project, so that you can reuse imported layers across projects?&lt;br /&gt;
** Should we allow users to override the release layer branch, setting a particular layer index layer to a different branch or commit?&lt;br /&gt;
** Should we allow users to set a different git repo for layer index layers?&lt;br /&gt;
** Should we allow users to override the bitbake revision set by the release in a project?&lt;br /&gt;
** Related bugs: 6640, 6701, 7574, 8426, 8429&lt;br /&gt;
* Access control (a simple one to start, with very basic permissions). Related bugs: 6233, 6234&lt;br /&gt;
* WIC integration (getting a step closer to the holy grail of &#039;click button&#039; &amp;gt; &#039;image deployed in board&#039;)&lt;br /&gt;
* Fix the variable history (this is one of the features users have highly praised, and it is a bit broken in 2.0). Related bugs: 5811, 8488, 8190, 8189, 8188&lt;br /&gt;
* Get Toaster to collect build data from Jenkins builds. Once again, repeatedly requested by users. Related bugs: 7527&lt;br /&gt;
&lt;br /&gt;
==== Ed&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Merge analysis and managed modes&lt;br /&gt;
* Fix as much pending bugs as possible.&lt;br /&gt;
* Finish image customisation.&lt;br /&gt;
* Support Django LTS&lt;br /&gt;
* Increase test coverage. It would be good to set realistic goals, e.g. cover specific modules or increase coverage to 10% and follow the plan.&lt;br /&gt;
* Include production configuration into testing&lt;br /&gt;
* Cover views.py with tests and split it into modules. Currently it&#039;s huge and hard to maintain. I suspect there are a lot of unused APIs in there.&lt;br /&gt;
* Finish refactoring of buildcontroller code. This work is started in ed/toaster/bec and sitting there for quite long time.&lt;br /&gt;
* Bring patchset support to toaster patchwork.&lt;br /&gt;
* Add &#039;submitted upstream&#039; and &#039;merged upstream&#039; statuses to patchwork. Make the statuses updated automatically when patch is accepted to toaster-next or bitbake master.&lt;br /&gt;
* Clean up the code. Set realistic goals for pylint scores and follow them.&lt;br /&gt;
* Enhance Jenkins CI jobs to run all possible django, tts and pylint tests&lt;br /&gt;
&lt;br /&gt;
==== Sujith&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Get toaster working with non-git repos. Related bugs: 8456&lt;br /&gt;
* minor, but would be good to have :- Once user launches toaster, it would be nice to see the progress bar updated without user refreshing the page. Related bugs: 8328&lt;br /&gt;
* Cancellation of build. Related bugs: 6787&lt;br /&gt;
&lt;br /&gt;
Would love to take up more tasks.&lt;br /&gt;
&lt;br /&gt;
==== David&#039;s ====&lt;br /&gt;
&lt;br /&gt;
* Finish the effort around Toaster &amp;quot;extensions&amp;quot;, started by Farrell. This will enable Toaster customization for commercial partners, as per branding and &lt;br /&gt;
alternate pages (for extended project creation).&lt;br /&gt;
&lt;br /&gt;
== All bugs for 2.2 ==&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
  |columns=id,milestone,summary,status,priority&lt;br /&gt;
  |milestone=future,2.1,2.1 M1,2.1 M2,2.1 M3,2.1 M4,2.2,2.2 M1,2.2 M2,2.2 M3,2.2 M4&lt;br /&gt;
  |sort=priority&lt;br /&gt;
  |product=Toaster&lt;br /&gt;
  |resolution=!fixed&lt;br /&gt;
  |status=!IN PROGRESS REVIEW&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==  Toaster Enhancements for 2.2 ==&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
  |columns=id,to,estimated,summary,priority,from,qa,milestone,status,resolution,whiteboard&lt;br /&gt;
  |milestone=2.2,2.2 M1,2.2 M2,2.2 M3,2.2 M4&lt;br /&gt;
  |sort=priority&lt;br /&gt;
  |severity=enhancement&lt;br /&gt;
  |product=Toaster&lt;br /&gt;
  |status=!verified&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18064</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18064"/>
		<updated>2016-04-07T18:30:47Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patch sets for integration into Bitbake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to the [https://lists.yoctoproject.org/listinfo/toaster/| Toaster mailing list] for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster source code, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches are submitted to the upstream mailing lists, they are in pretty good shape. That helps the project maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster source code, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18063</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18063"/>
		<updated>2016-04-07T18:30:08Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to the [https://lists.yoctoproject.org/listinfo/toaster/| Toaster mailing list] for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster source code, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches are submitted to the upstream mailing lists, they are in pretty good shape. That helps the project maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18062</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18062"/>
		<updated>2016-04-07T18:29:48Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to the [https://lists.yoctoproject.org/listinfo/toaster/| Toaster mailing list] for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster code, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches are submitted to the upstream mailing lists, they are in pretty good shape. That helps the project maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18061</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18061"/>
		<updated>2016-04-07T18:29:22Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to the [https://lists.yoctoproject.org/listinfo/toaster/| Toaster mailing list] for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster code base, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches are submitted to the upstream mailing lists, they are in pretty good shape. That helps the project maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18060</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18060"/>
		<updated>2016-04-07T18:20:30Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to the [https://lists.yoctoproject.org/listinfo/toaster/| Toaster mailing list] for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster code base, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches are submitted to the upstream mailing lists, they will be in pretty good shape. That helps the project maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18059</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18059"/>
		<updated>2016-04-07T18:20:00Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to the [https://lists.yoctoproject.org/listinfo/toaster/| Toaster mailing list] for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster code base, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches are submitted to the upstream mailing lists, the patches will be in pretty good shape. That helps the project maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18058</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18058"/>
		<updated>2016-04-07T18:18:59Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to the [https://lists.yoctoproject.org/listinfo/toaster/| Toaster mailing list] for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster code base, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches hit the BitBake or OpenEmbedded core mailing lists, the patches will be in pretty good shape. That helps the upstream maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18057</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18057"/>
		<updated>2016-04-07T18:18:25Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to the [https://lists.yoctoproject.org/listinfo/toaster | Toaster mailing list] for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster code base, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches hit the BitBake or OpenEmbedded core mailing lists, the patches will be in pretty good shape. That helps the upstream maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18056</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18056"/>
		<updated>2016-04-07T18:17:56Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to the [https://lists.yoctoproject.org/listinfo/toaster| Toaster mailing list] for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster code base, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches hit the BitBake or OpenEmbedded core mailing lists, the patches will be in pretty good shape. That helps the upstream maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18055</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18055"/>
		<updated>2016-04-07T18:17:09Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to the [https://lists.yoctoproject.org/listinfo/toaster|Toaster mailing list] for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster code base, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches hit the BitBake or OpenEmbedded core mailing lists, the patches will be in pretty good shape. That helps the upstream maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18054</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18054"/>
		<updated>2016-04-07T18:16:12Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to Toaster Project for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster code base, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches hit the BitBake or OpenEmbedded core mailing lists, the patches will be in pretty good shape. That helps the upstream maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18053</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18053"/>
		<updated>2016-04-07T18:15:59Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to Toaster Project for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, you can be sure the patches are reviewed by the people in the community who are familiar with the Toaster code base, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches hit the BitBake or OpenEmbedded core mailing lists, the patches will be in pretty good shape. That helps the upstream maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18052</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18052"/>
		<updated>2016-04-07T18:14:01Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patch sets for integration into Bitbake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to Toaster Project for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base, and makes their busy lives a bit easier.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18051</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18051"/>
		<updated>2016-04-07T18:12:56Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patch sets for integration into Bitbake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to Toaster Project for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
Toaster patches are normally submitted upstream to the BitBake repository by the reviewer (not the author). This tells the upstream maintainers that the patches have been reviewed by the people who are familiar with the Toaster code base.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18050</id>
		<title>Contribute to Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Contribute_to_Toaster&amp;diff=18050"/>
		<updated>2016-04-07T18:11:06Z</updated>

		<summary type="html">&lt;p&gt;Belenbarrospena: /* Submitting patch sets for integration into Bitbake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This page summarises the Toaster development process. We hope this will help you start contributing to the project. &lt;br /&gt;
&lt;br /&gt;
== What can I do? ==&lt;br /&gt;
&lt;br /&gt;
The [https://bugzilla.yoctoproject.org/buglist.cgi?product=Toaster Yocto Project Bugzilla instance] lists all the things that need to be done:&lt;br /&gt;
&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design available&amp;lt;/strong&amp;gt; in the Whiteboard field, there is a design specification document attached to the issue that you should follow. Send questions / comments about it to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list]&lt;br /&gt;
* If the issue says &amp;lt;strong&amp;gt;GUI design pending&amp;lt;/strong&amp;gt; in the Whiteboard field, there is some design work still to be done. Feel free to take the issue and send an email to the [https://lists.yoctoproject.org/listinfo/toaster Toaster mailing list] to find out why the design work is not done yet&lt;br /&gt;
&lt;br /&gt;
== Set up the local repository ==&lt;br /&gt;
&lt;br /&gt;
For development of Toaster we recommend setting up a local install of Toaster. Installation instructions are available in the main [http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html#toaster-manual-start Toaster documentation]&lt;br /&gt;
&lt;br /&gt;
== Submitting patches ==&lt;br /&gt;
&lt;br /&gt;
Publishing your patches to Toaster is a two step process.&lt;br /&gt;
# Sending patches to Toaster Project for review&lt;br /&gt;
# Submitting the patches that you reviewed to the upstream repository&lt;br /&gt;
&lt;br /&gt;
Toaster code lives in Bitbake repository at [http://git.openembedded.org/bitbake/|http://git.openembedded.org/bitbake/].&lt;br /&gt;
All contributions must be upstreamed to the Bitbake repository in order to make it to the &amp;quot;master&amp;quot; branch of the poky/ repository.&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
We are now supporting a [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/ poky-contrib] toaster-next branch.  The purpose of this branch is to speed up our work so that we can base patches on top of patches that are waiting for upstream inclusion but have not yet made it into master.  To facilitate this we have some extra rebasing actions needed.&lt;br /&gt;
&lt;br /&gt;
To contribute to toaster you will also need authorization to write to the upstream yocto project repository.  Contact a member of the toaster team for details.&lt;br /&gt;
&lt;br /&gt;
1) Download master branch of the yocto project&lt;br /&gt;
  &amp;lt;code&amp;gt; git clone git://git.yoctoproject.org/poky &amp;amp;&amp;amp; cd poky &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Add poky-contrib to the local repository you set up above&lt;br /&gt;
  &amp;lt;code&amp;gt; git remote add poky-contrib ssh://git@git.yoctoproject.org/poky-contrib &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Fetch the poky-contrib branches&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch --all &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Start your feature branch off of toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b the/target/branch poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Do Work &lt;br /&gt;
&lt;br /&gt;
6) Rebase on toaster-next. It has probably changed while you were working (unless you are really really fast!)&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Send to the toaster-mailing list using one of the methods outlined below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sending patches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; The format of the commit message should be like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    toaster: &amp;lt;short one line summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    long(er) description&lt;br /&gt;
&lt;br /&gt;
    [YOCTO #0000]&lt;br /&gt;
&lt;br /&gt;
    Signed-off-by: First Last &amp;lt;name@domain.com&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where YOCTO #0000 is the related bug number if there is one. Signed off by with your git commit -s credentials.&lt;br /&gt;
&lt;br /&gt;
We accept patches on the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] ( toaster@yoctoproject.org ) by &amp;quot;git send-email&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ git send-email HEAD^ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the utilities in the script directory to prepare your patch&lt;br /&gt;
&lt;br /&gt;
1) Use the create-pull-request script (from poky) to create a pull request while on your feature branch&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t toaster@yoctoproject.org&lt;br /&gt;
&lt;br /&gt;
A comprehensive document about commit messages is available on the [http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines openembedded wiki]&lt;br /&gt;
&lt;br /&gt;
More help learning git is available on [https://try.github.io github] and [http://git-scm.com/documentation/ the official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Sending branches to Toaster Project ===&lt;br /&gt;
&lt;br /&gt;
If you wish to submit whole branches please use the poky-contrib repository see [[Poky Contributions#Poky_Contrib_Branch]] for setup guide.&lt;br /&gt;
&lt;br /&gt;
Once you have pushed a branch please then send an email to the [https://www.yoctoproject.org/tools-resources/community/mailing-lists toaster mailing list] with the subject in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [review-request] my_branch_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the body of the email it&#039;s useful to describe your branch&#039;s functionality, which commits and a link to the git web.&lt;br /&gt;
&lt;br /&gt;
If you need any assistance please post on the mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch sets for integration into Bitbake ===&lt;br /&gt;
&lt;br /&gt;
All Toaster patches should be submitted upstream to the BitBake repository by the reviewer (not the author). &lt;br /&gt;
&lt;br /&gt;
By submitting your patches first to the Toaster mailing list, and getting the reviewer to send them upstream, you can be sure the patches are reviewed by the people in the community who are currently familiar with the Toaster code base, and who have experience developing web applications.&lt;br /&gt;
&lt;br /&gt;
That also means that, by the time the patches hit the BitBake or OpenEmbedded core mailing lists, the patches will be in pretty good shape. That helps the upstream maintainers, and hopefully also helps you.&lt;br /&gt;
&lt;br /&gt;
Since development happens on the poky-contrib repository, but the patches need to be merged to the Bitbake repository, the following process should be executed.&lt;br /&gt;
&lt;br /&gt;
1) Bring toaster-next up to date with master&lt;br /&gt;
  &amp;lt;code&amp;gt; git fetch poky-contrib toaster-next&amp;amp;&amp;amp; git fetch origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git checkout -b toaster-next poky-contrib/toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt; git rebase origin/master &amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2) Checkout the target branch&lt;br /&gt;
   &amp;lt;code&amp;gt;git checkout the/target/branch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Create a new branch for submission &lt;br /&gt;
   &amp;lt;code&amp;gt; git checkout -b yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Make sure the branch is rebased on current poky-contrib toaster-next. &lt;br /&gt;
   &amp;lt;code&amp;gt;git rebase poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Test the changes. Run the Django unit tests.  People put effort into these so we should make sure we use them.&lt;br /&gt;
  &amp;lt;code&amp;gt;bitbake/lib/toaster/manage.py test orm toastergui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Add signed off by to the commit messages&lt;br /&gt;
   &amp;lt;code&amp;gt;git filter-branch -f --msg-filter &#039;cat &amp;amp;&amp;amp; echo &amp;quot;Signed-off-by: $(git config --get user.name) &amp;lt;$(git config --get user.email)&amp;gt;&amp;quot;&#039; toaster-next..HEAD&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Push the modified commit messages and rebased version to poky-contrib&lt;br /&gt;
   &amp;lt;code&amp;gt;git push -u poky-contrib yourname/submit/the/target/branch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Use the create-pull-request script (from poky) to create a pull request&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/create-pull-request -d bitbake -s &amp;quot;toaster: Fixes and clean ups&amp;quot; -u poky-contrib -r poky-contrib/toaster-next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Review their content, especially the summary mail:&lt;br /&gt;
   &amp;lt;code&amp;gt;edit ./pull-&amp;lt;pid&amp;gt;/0000-cover-letter.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Push the branch you just signed off on and sent upstream to toaster-next&lt;br /&gt;
  &amp;lt;code&amp;gt; git push -f -u  poky-contrib yourname/submit/the/target/branch:toaster-next &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you are satisfied, you can send them with:&lt;br /&gt;
   &amp;lt;code&amp;gt;./scripts/send-pull-request -a -p ./pull-&amp;lt;pid&amp;gt;&amp;lt;/code&amp;gt; -t bitbake-devel@lists.openembedded.org&lt;br /&gt;
&lt;br /&gt;
==== Submitting patches for prior releases ====&lt;br /&gt;
&lt;br /&gt;
The procedure is the same, but using the prior release as the base branch instead of the &amp;quot;master&amp;quot; branch in bitbake.&lt;br /&gt;
&lt;br /&gt;
Also, make sure that you add the name of the prior release for which the patchset is intended in the prefix of the patchset, as parameter to the &amp;quot;create-pull-request&amp;quot; command, e.g. &#039;&#039;&#039;-p 1.26&#039;&#039;&#039; for the 1.26 branch.&lt;br /&gt;
&lt;br /&gt;
==== Gotchas ====&lt;br /&gt;
&lt;br /&gt;
Sometimes the mailer will refuse to send patches, especially on binary or long-line files. The proper way to go around that is to reply to the patchset you&#039;ve submitted to the mailing list, asking for a git pull directly from the poky-contrib branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The toasterconf.json files live in the meta and meta-yocto layer. Patches to the meta-yocto/conf/toasterconf.json go to poky@yoctoproject.org. Patches to meta/conf/toasterjson.conf go to openembedded-core@lists.openembedded.org.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patches for documentation ===&lt;br /&gt;
&lt;br /&gt;
Documentation patches should be sent to [https://lists.yoctoproject.org/listinfo/yocto Yocto mailing list] with [yocto-docs] in the subject, CC Scott Rifenbark (and make sure you send it to his gmail, not his defunct Intel address). For his email address, look at [http://lists.openembedded.org/pipermail/bitbake-devel/2015-October/006632.html this post].&lt;br /&gt;
&lt;br /&gt;
== Code syle guide ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Django has a template language which allows us to render pages based on the data (context). We use the template language to setup the initial state of the page and to create re-usable components that can be included in other pages.&lt;br /&gt;
&lt;br /&gt;
The recommend template code style is as follows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  {# Maintaining indentation #}&lt;br /&gt;
  {% if %}&lt;br /&gt;
   &amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% else %}&lt;br /&gt;
   &amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;&lt;br /&gt;
  {% endif %}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{% comment %}&lt;br /&gt;
This is a longer comment that describes all the things&lt;br /&gt;
that are below in quite a bit of detail because they&#039;re&lt;br /&gt;
a little more difficult to understand.&lt;br /&gt;
{% endcomment %}&lt;br /&gt;
&lt;br /&gt;
{% for layer in layers_list %}&lt;br /&gt;
 {{layer}}&lt;br /&gt;
{% endfor %}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{var}}&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{# Maintaining indentation #}&lt;br /&gt;
{%if%}&amp;lt;p&amp;gt;this&amp;lt;/p&amp;gt;{%else%}&amp;lt;p&amp;gt;that&amp;lt;/p&amp;gt;{%endif%}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{#This is a longer comment that describes all the things that are below in quite a bit of detail because they&#039;re a little more difficult to understand. #}&lt;br /&gt;
{%for o in layers_list%}{{o}}{%endfor%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Maintain indentation as you would with other languages&lt;br /&gt;
* White space after &#039;%&#039;&lt;br /&gt;
* Comment blocks for longer comments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* These hold some numbers */&lt;br /&gt;
var oneVar = 1;&lt;br /&gt;
var twoVar = 2;&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = {&lt;br /&gt;
  cheddar : 1,&lt;br /&gt;
  stilton : 2,&lt;br /&gt;
  emmental : 3, &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function doThingsHere(){&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If one equals two do some other things and make sure that&lt;br /&gt;
 * if the the click handler is setup correctly.&lt;br /&gt;
 */&lt;br /&gt;
if (one === two) {&lt;br /&gt;
  var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
  oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
  $(this).click(function (event){&lt;br /&gt;
    alert(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#little-mouse&amp;quot;).focusout(function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
  noThingHere();&lt;br /&gt;
else&lt;br /&gt;
  doThingHere();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// These hold some numbers&lt;br /&gt;
oneVar = 1&lt;br /&gt;
twoVar = 2&lt;br /&gt;
&lt;br /&gt;
var cheesesTypes = { cheddar : 1, stilton : 2,  emmental : 3, }&lt;br /&gt;
&lt;br /&gt;
function doThingsHere ()&lt;br /&gt;
{&lt;br /&gt;
return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//If one equals two do some other things and make sure that if the the click handler is setup correctly.&lt;br /&gt;
if( one === two ) {&lt;br /&gt;
var cheese = &amp;quot;cheddar&amp;quot;;&lt;br /&gt;
oneVar = doThingsHere();&lt;br /&gt;
&lt;br /&gt;
    $(this).click(function(event){ alert(&amp;quot;Hello&amp;quot;); });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;little-mouse&amp;quot;).addEventListener(&amp;quot;focusout&amp;quot;, function(){&lt;br /&gt;
  alert(&amp;quot;bye&amp;quot;)&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
if (oneVar)&lt;br /&gt;
{&lt;br /&gt;
  noThingHere();&lt;br /&gt;
} else {  doThingHere(); }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Variables should be marked with &amp;quot;var&amp;quot; &lt;br /&gt;
* Semicolons should be used&lt;br /&gt;
* Keep as close to 80 cols as possible&lt;br /&gt;
* Use 2 space per indentation&lt;br /&gt;
* Open curly braces after parenthesis for functions and close on a new line&lt;br /&gt;
* Use camelCase for function names and variable names &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make use of running your Javascript through jshint we have a .jshint configuration file in that js directory (toastergui/static/js)&lt;br /&gt;
&lt;br /&gt;
e.g. install jshint and add to your current PATH, then run:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ npm install jshint; export PATH=$PATH:$PWD/node_modules/.bin/&lt;br /&gt;
 $ jshint ./toastergui/static/js/base.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yes please:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;something-area&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
  &amp;lt;p id=&amp;quot;important-text&amp;gt;This is some text&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No thank you:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;Important&amp;quot;&amp;gt;This is some text&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;somethingarea&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;ImportantText&amp;quot;&amp;gt;This is&lt;br /&gt;
some text&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* 2 space indentation&lt;br /&gt;
* Lower case, ids hyphenated when multiple words&lt;br /&gt;
* No duplicate ids &lt;br /&gt;
&lt;br /&gt;
* Run your HTML through a [http://validator.w3.org/#validate_by_input HTML validator] available for [http://validator.w3.org/source/ local install]. The w3c validator it&#039;s self doesn&#039;t currently validate html5, it uses as a back end [https://validator.github.io/validator/ Nu Html Checker] which can be installed as a standalone service, full instructions in the readme.&lt;br /&gt;
&lt;br /&gt;
Quick install instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ mkdir html5-validator &amp;amp;&amp;amp; cd html5-validator&lt;br /&gt;
 $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk&lt;br /&gt;
 $ git clone https://github.com/validator/validator.git&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
 $ python build/build.py all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML can be indented quickly using tidy, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 tidy -xml --indent auto --indent-spaces 2 --quiet yes -w -1 --show-body-only yes  ./index.html &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Lenient [https://www.python.org/dev/peps/pep-0008 pep8]&lt;br /&gt;
Ignoring most of the whitespace around character issues (E124,E203,E201,E265,E303,E302,E231) see toaster/.pep8 and [http://pep8.readthedocs.org/en/latest/intro.html#error-codes error code list]&lt;br /&gt;
&lt;br /&gt;
Fix all issues identified by running code through pep8. We have a fairly lenient config file (toaster/.pep8).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pep8 ./toastergui/urls.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run code through pylint and fix identified issues - Some can be reasonably ignored such as doc strings for every function or star-args. No pylintrc config provided here as most issues identified are highly contextual and should be ignored on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ pylint --load-plugins pylint_django toastergui/tests.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Working with design ==&lt;br /&gt;
&lt;br /&gt;
Yes, the Yocto Project is one of those lucky projects with designers around to help in UI matters. We have a document explaining how to work with the design contributors: [[File:Working_with_design.pdf]]&lt;/div&gt;</summary>
		<author><name>Belenbarrospena</name></author>
	</entry>
</feed>