diff options
author | Scott Rifenbark <scott.m.rifenbark@intel.com> | 2011-09-20 06:44:45 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-09-25 17:59:58 +0100 |
commit | 2a745da247a8340bdee487778ecb3bf1648c403a (patch) | |
tree | e5f08a34b3b516958578954257c8b0083a3a6d07 | |
parent | 13f312a6dc563733374454af002ca2d2501e0232 (diff) | |
download | poky-2a745da247a8340bdee487778ecb3bf1648c403a.tar.gz |
documentation/dev-manual/dev-manual-newbie.xml: edits and enhancements.
General pass-through for consistency in referencing sections.
Also, added Darren Hart's review comments for the "Submitting a
Change" section. I added more about the mailing lists and how to
submit a proper commit message.
(From yocto-docs rev: d9c8f5db8c862b1be724915cc43da6d12b88b97d)
Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | documentation/dev-manual/dev-manual-newbie.xml | 461 |
1 files changed, 255 insertions, 206 deletions
diff --git a/documentation/dev-manual/dev-manual-newbie.xml b/documentation/dev-manual/dev-manual-newbie.xml index c3df1c2958..fd8ff08949 100644 --- a/documentation/dev-manual/dev-manual-newbie.xml +++ b/documentation/dev-manual/dev-manual-newbie.xml | |||
@@ -7,12 +7,12 @@ | |||
7 | 7 | ||
8 | <para> | 8 | <para> |
9 | This chapter helps you understand the Yocto Project as an open source development project. | 9 | This chapter helps you understand the Yocto Project as an open source development project. |
10 | In general, working in an open-source environment is very different than working in a | 10 | In general, working in an open source environment is very different as compared to working in a |
11 | proprietary environment. | 11 | proprietary environment. |
12 | Additionally, the Yocto Project uses specific tools and constructs as part of its development | 12 | Additionally, the Yocto Project uses specific tools and constructs as part of its development |
13 | environment. | 13 | environment. |
14 | The chapter specifically addresses open source philosophy, licensing issues, code repositories, | 14 | The chapter specifically addresses open source philosophy, licensing issues, code repositories, |
15 | the open source distributed version control system Git, and best practices using Yocto Project. | 15 | the open source distributed version control system Git, and best practices using the Yocto Project. |
16 | </para> | 16 | </para> |
17 | 17 | ||
18 | <section id='open-source-philosophy'> | 18 | <section id='open-source-philosophy'> |
@@ -33,23 +33,21 @@ | |||
33 | stake in the software project. | 33 | stake in the software project. |
34 | The open source environment contains new copyright, licensing, domain, and consumer issues | 34 | The open source environment contains new copyright, licensing, domain, and consumer issues |
35 | that differ from the more traditional development environment. | 35 | that differ from the more traditional development environment. |
36 | In an open source environment the end-product, source material, and documentation are | 36 | In an open source environment, the end-product, source material, and documentation are |
37 | all available to the public at no cost. | 37 | all available to the public at no cost. |
38 | </para> | 38 | </para> |
39 | 39 | ||
40 | <para> | 40 | <para> |
41 | A benchmark example of an open source project is the Linux Kernel, which was initially conceived | 41 | A benchmark example of an open source project is the Linux Kernel, which was initially conceived |
42 | and created by Finnish computer science student Linus Torvalds in 1991. | 42 | and created by Finnish computer science student Linus Torvalds in 1991. |
43 | Conversely, a good example of a non-open source project is the Windows family of operating | 43 | Conversely, a good example of a non-open source project is the |
44 | systems developed by Microsoft Corporation. | 44 | <trademark class='registered'>Windows</trademark> family of operating |
45 | systems developed by <trademark class='registered'>Microsoft</trademark> Corporation. | ||
45 | </para> | 46 | </para> |
46 | 47 | ||
47 | <para> | 48 | <para> |
48 | Wikipedia has a good historical description of the Open Source Philosophy | 49 | Wikipedia has a good historical description of the Open Source Philosophy |
49 | <ulink url='http://en.wikipedia.org/wiki/Open_source'>here</ulink>. | 50 | <ulink url='http://en.wikipedia.org/wiki/Open_source'>here</ulink>. |
50 | </para> | ||
51 | |||
52 | <para> | ||
53 | You can also find helpful information on how to participate in the Linux Community | 51 | You can also find helpful information on how to participate in the Linux Community |
54 | <ulink url='http://ldn.linuxfoundation.org/book/how-participate-linux-community'>here</ulink>. | 52 | <ulink url='http://ldn.linuxfoundation.org/book/how-participate-linux-community'>here</ulink>. |
55 | </para> | 53 | </para> |
@@ -66,21 +64,21 @@ | |||
66 | From the interface, you can click on any particular item in the "Name" column and | 64 | From the interface, you can click on any particular item in the "Name" column and |
67 | see the URL at the bottom of the page that you need to set up a Git repository for | 65 | see the URL at the bottom of the page that you need to set up a Git repository for |
68 | that particular item. | 66 | that particular item. |
69 | The ability to create Git repositories of the Yocto Project source allows you to | 67 | Having a local Git repository of the Yocto Project files allows you to |
70 | make changes, contribute to the history, and ultimately enhance the Yocto Project's | 68 | make changes, contribute to the history, and ultimately enhance the Yocto Project's |
71 | tools, Board Support Packages, and so forth. | 69 | tools, Board Support Packages, and so forth. |
72 | </para> | 70 | </para> |
73 | 71 | ||
74 | <para> | 72 | <para> |
75 | Conversely, if you are a developer that is not interested in contributing back to the | 73 | Conversely, if you are a developer that is not interested in contributing back to the |
76 | Yocto Project you have the ability to simply download and extract release tarballs | 74 | Yocto Project, you have the ability to simply download and extract release tarballs |
77 | and use them within the Yocto Project environment. | 75 | and use them within the Yocto Project environment. |
78 | All that is required is a particular release of Yocto Project, a kernel, and | 76 | All that is required is a particular release of Yocto Project, a kernel, and |
79 | your application source code. | 77 | your application source code. |
80 | </para> | 78 | </para> |
81 | 79 | ||
82 | <para> | 80 | <para> |
83 | For any supported release of Yocto Project you can go to the Yocto Project website’s | 81 | For any supported release of Yocto Project, you can go to the Yocto Project website’s |
84 | <ulink url='http://www.yoctoproject.org/download'>download page</ulink> and get a | 82 | <ulink url='http://www.yoctoproject.org/download'>download page</ulink> and get a |
85 | tarball of the release. | 83 | tarball of the release. |
86 | You can also go to this site to download any supported BSP tarballs. | 84 | You can also go to this site to download any supported BSP tarballs. |
@@ -104,8 +102,9 @@ | |||
104 | <imagedata fileref="figures/source-repos.png" align="center" width="6in" depth="4in" /> | 102 | <imagedata fileref="figures/source-repos.png" align="center" width="6in" depth="4in" /> |
105 | </para></listitem> | 103 | </para></listitem> |
106 | <listitem><para><anchor id='index-downloads' /><emphasis><ulink url='http://autobuilder.yoctoproject.org/downloads/'>Index of /downloads:</ulink></emphasis> | 104 | <listitem><para><anchor id='index-downloads' /><emphasis><ulink url='http://autobuilder.yoctoproject.org/downloads/'>Index of /downloads:</ulink></emphasis> |
107 | This area contains an index of the Eclipse-plugin, miscellaneous support, poky, pseudo, and | 105 | This area contains an index of downloads such as |
108 | all released versions of Yocto Project in the form of images or tarballs. | 106 | the Eclipse Yocto Plug-in, miscellaneous support, Poky, pseudo, cross-development toolchains, |
107 | and all released versions of Yocto Project in the form of images or tarballs. | ||
109 | Downloading and extracting these files does not produce a Git repository but rather | 108 | Downloading and extracting these files does not produce a Git repository but rather |
110 | a snapshot of a particular release or image. | 109 | a snapshot of a particular release or image. |
111 | [WRITER NOTE: link will be http://downloads.yoctoproject.org.]</para> | 110 | [WRITER NOTE: link will be http://downloads.yoctoproject.org.]</para> |
@@ -130,12 +129,87 @@ | |||
130 | <para> | 129 | <para> |
131 | Following is a list of terms and definitions users new to the Yocto Project development | 130 | Following is a list of terms and definitions users new to the Yocto Project development |
132 | environment might find helpful. | 131 | environment might find helpful. |
133 | Some terms are universal but are included here just in case: | 132 | While some of these terms are universal, the list includes them just in case: |
134 | <itemizedlist> | 133 | <itemizedlist> |
135 | <listitem><para><emphasis>The Yocto Project Files:</emphasis> | 134 | <listitem><para><emphasis>Append Files:</emphasis> Files that append build information to |
135 | a recipe file. | ||
136 | Information in append files override the information in the similarly-named recipe file. | ||
137 | Append files use the <filename>.bbappend</filename> filename suffix.</para></listitem> | ||
138 | <listitem><para><emphasis>BitBake:</emphasis> The task executor and scheduler used by | ||
139 | the Yocto Project to build images. | ||
140 | For more information on BitBake, see the <ulink url='http://bitbake.berlios.de/manual/'> | ||
141 | BitBake documentation</ulink>.</para></listitem> | ||
142 | <listitem><para><emphasis>Classes:</emphasis> Files that provide for logic encapsulation | ||
143 | and inheritance allowing commonly used patterns to be defined once and easily used | ||
144 | in multiple recipes. | ||
145 | Class files end with the <filename>.bbclass</filename> filename extension.</para></listitem> | ||
146 | <listitem><para><emphasis>Configuration File:</emphasis> Configuration information in the | ||
147 | <filename>.conf</filename> files provides global definitions of variables. | ||
148 | The <filename>conf/local.conf</filename> configuration file in the Yocto Project | ||
149 | build directory defines user-defined variables that affect each build. | ||
150 | The <filename>distro/poky.conf</filename> configuration file also in the | ||
151 | build directory defines Yocto ‘distro’ configuration | ||
152 | variables used only when building with this policy. | ||
153 | Machine configuration files, which | ||
154 | are located throughout the Yocto Project file structure, define | ||
155 | variables for specific hardware and are only used when building for that target | ||
156 | (e.g. the <filename>machine/beagleboard.conf</filename> configuration file defines | ||
157 | variables for the Texas Instruments ARM Cortex-A8 development board). | ||
158 | Configuration files end with a <filename>.conf</filename> filename extension.</para></listitem> | ||
159 | <listitem><para><emphasis>Cross-Development Toolchain:</emphasis> A collection of software development | ||
160 | tools and utilities that allow you to develop software for targeted architectures. | ||
161 | This toolchain contains cross-compilers, linkers, and debuggers that are specific to | ||
162 | an architecure. | ||
163 | You can use the Yocto Project to build cross-development toolchains in tarball form that when | ||
164 | unpacked contain the development tools you need to cross-compile and test your software. | ||
165 | The Yocto Project ships with images that contain toolchains for supported architectures | ||
166 | as well. | ||
167 | Sometimes this toolchain is referred to as the meta-toolchain.</para></listitem> | ||
168 | <listitem><para><emphasis>Image:</emphasis> An image is the result produced when | ||
169 | BitBake processes a given collection of recipes and related metadata. | ||
170 | Images are the binary output that runs on specific hardware and for specific | ||
171 | use cases. | ||
172 | For a list of the supported image types that the Yocto Project provides, see the | ||
173 | "<ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html#ref-images'>Reference: Images</ulink>" | ||
174 | appendix in | ||
175 | <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html'> | ||
176 | The Yocto Project Reference Manual</ulink>.</para></listitem> | ||
177 | <listitem><para><emphasis>Layer:</emphasis> A collection of recipes representing the core, | ||
178 | a BSP, or an application stack.</para></listitem> | ||
179 | <listitem><para><emphasis>Metadata:</emphasis> The files that BitBake parses when building an image. | ||
180 | Metadata includes recipes, classes, and configuration files.</para></listitem> | ||
181 | <listitem><para><emphasis>OE-Core:</emphasis> A core set of metadata originating | ||
182 | with OpenEmbedded (OE) that is shared between OE and the Yocto Project. | ||
183 | This metadata is found in the <filename>meta</filename> directory of the Yocto Project | ||
184 | files.</para></listitem> | ||
185 | <listitem><para><emphasis>Package:</emphasis> The packaged output from a baked recipe. | ||
186 | A package is generally the compiled binaries produced from the recipe's sources. | ||
187 | You ‘bake’ something by running it through BitBake.</para></listitem> | ||
188 | <listitem><para><emphasis>Poky:</emphasis> The build tool that the Yocto Project | ||
189 | uses to create images.</para></listitem> | ||
190 | <listitem><para><emphasis>Recipe:</emphasis> A set of instructions for building packages. | ||
191 | A recipe describes where you get source code and which patches to apply. | ||
192 | Recipes describe dependencies for libraries or for other recipes, and they | ||
193 | also contain configuration and compilation options. | ||
194 | Recipes contain the logical unit of execution, the software/images to build, and | ||
195 | use the <filename>.bb</filename> file extension.</para></listitem> | ||
196 | <listitem><para><emphasis>Tasks:</emphasis> Arbitrary groups of software Recipes. | ||
197 | You simply use Tasks to hold recipes that, when built, usually accomplish a single task. | ||
198 | For example, a task could contain the recipes for a company’s proprietary or value-add software. | ||
199 | Or, the task could contain the recipes that enable graphics. | ||
200 | A task is really just another recipe. | ||
201 | Because task files are recipes, they end with the <filename>.bb</filename> filename | ||
202 | extension.</para></listitem> | ||
203 | <listitem><para><emphasis>Upstream:</emphasis> A reference to source code or repositories | ||
204 | that are not local to the development system but located in a master area that is controlled | ||
205 | by the maintainer of the source code. | ||
206 | For example, in order for a developer to work on a particular piece of code, they need to | ||
207 | first get a copy of it from an "upstream" source.</para></listitem> | ||
208 | <listitem><para><emphasis>Yocto Project Files:</emphasis> | ||
136 | This term refers to the directory structure created as a result of downloading | 209 | This term refers to the directory structure created as a result of downloading |
137 | and unpacking a Yocto Project release tarball or setting up a Git repository | 210 | and unpacking a Yocto Project release tarball or setting up a Git repository |
138 | by cloning <filename>git://git.yoctoproject.org/poky</filename>.</para> | 211 | by cloning <filename>git://git.yoctoproject.org/poky</filename>. |
212 | Sometimes the term "the Yocto Project Files structure" is used as well.</para> | ||
139 | <para>The Yocto Project files contain BitBake, Documentation, metadata and | 213 | <para>The Yocto Project files contain BitBake, Documentation, metadata and |
140 | other files that all support the development environment. | 214 | other files that all support the development environment. |
141 | Consequently, you must have the Yocto Project files in place on your development | 215 | Consequently, you must have the Yocto Project files in place on your development |
@@ -143,102 +217,31 @@ | |||
143 | <para>The name of the top-level directory of the Yocto Project file structure | 217 | <para>The name of the top-level directory of the Yocto Project file structure |
144 | is derived from the Yocto Project release tarball. | 218 | is derived from the Yocto Project release tarball. |
145 | For example, downloading and unpacking <filename>poky-edison-6.0.tar.bz2</filename> | 219 | For example, downloading and unpacking <filename>poky-edison-6.0.tar.bz2</filename> |
146 | results in a Yocto Project source tree whose Yocto Project source directory is named | 220 | results in a Yocto Project file structure whose Yocto Project source directory is named |
147 | <filename>poky-edison-6.0</filename>. | 221 | <filename>poky-edison-6.0</filename>. |
148 | If you create a Git repository, then you can name the repository anything you like.</para> | 222 | If you create a Git repository, then you can name the repository anything you like.</para> |
149 | <para>You can find instruction on how to set up the Yocto Project files on your | 223 | <para>You can find instruction on how to set up the Yocto Project files on your |
150 | host development system by reading | 224 | host development system by reading |
151 | the | 225 | the |
152 | "<ulink url='http://www.yoctoproject.org/docs/1.1/dev-manual/dev-manual.html#getting-setup'>Getting | 226 | "<ulink url='http://www.yoctoproject.org/docs/1.1/dev-manual/dev-manual.html#getting-setup'>Getting |
153 | Setup</ulink>" section in | 227 | Setup</ulink>" section.</para></listitem> |
154 | <ulink url='http://www.yoctoproject.org/docs/1.1/dev-manual/dev-manual.html'> | 228 | <listitem><para><emphasis>Yocto Project Build Directory:</emphasis> |
155 | The Yocto Project Development Manual</ulink>.</para></listitem> | 229 | This term refers to the area used by the Yocto Project for builds. |
156 | <listitem><para><emphasis>Yocto Project Build Tree:</emphasis> | ||
157 | This term refers to the area where the Yocto Project builds images. | ||
158 | The area is created when you <filename>source</filename> the Yocto Project setup | 230 | The area is created when you <filename>source</filename> the Yocto Project setup |
159 | environment script that is found in the Yocto Project files area. | 231 | environment script that is found in the Yocto Project files area. |
160 | (e.g. <filename>oe-init-build-env</filename>). | 232 | (e.g. <filename>oe-init-build-env</filename>). |
161 | You can create the Yocto Project build tree anywhere you want on your | 233 | You can create the Yocto Project build directory anywhere you want on your |
162 | development system. | 234 | development system. |
163 | Here is an example that creates the tree in <filename>mybuilds</filename> | 235 | Here is an example that creates the directory in <filename>mybuilds</filename> |
164 | and names the Yocto Project build directory <filename>YP-6.0</filename>: | 236 | and names the Yocto Project build directory <filename>YP-6.0</filename>: |
165 | <literallayout class='monospaced'> | 237 | <literallayout class='monospaced'> |
166 | $ source poky-edison-6.0/oe-init-build-env $HOME/mybuilds/YP-6.0 | 238 | $ source poky-edison-6.0/oe-init-build-env $HOME/mybuilds/YP-6.0 |
167 | </literallayout> | 239 | </literallayout> |
168 | If you don't specifically name the build directory, BitBake creates it | 240 | If you don't specifically name the directory, BitBake creates it |
169 | in the current directory and uses the name <filename>build</filename>. | 241 | in the current directory and uses the name <filename>build</filename>. |
170 | Also, if you supply an existing directory, then BitBake uses that | 242 | Also, if you supply an existing directory, then BitBake uses that |
171 | directory as the Yocto Project build directory and populates the build tree | 243 | directory as the Yocto Project build directory and populates the build hierarchy |
172 | beneath it.</para></listitem> | 244 | beneath it.</para></listitem> |
173 | <listitem><para><emphasis>Image</emphasis> - An image is the result produced when | ||
174 | BitBake processes a given collection of recipes and related metadata. | ||
175 | Images are the binary output that runs on specific hardware and for specific | ||
176 | use cases. | ||
177 | For a list of the supported image types that the Yocto Project provides, see the | ||
178 | <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html#ref-images'> | ||
179 | Reference: Images</ulink> appendix in | ||
180 | <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html'> | ||
181 | The Yocto Project Reference Manual</ulink>.</para></listitem> | ||
182 | <listitem><para><emphasis>Recipe</emphasis> - A set of instructions for building packages. | ||
183 | A recipe describes where you get source code and which patches to apply. | ||
184 | Recipes describe dependencies for libraries or for other recipes and they | ||
185 | also contain configuration and compilation options. | ||
186 | Recipes contain the logical unit of execution, the software/images to build, and | ||
187 | use the <filename>.bb</filename> file extension.</para></listitem> | ||
188 | <listitem><para><emphasis>BitBake</emphasis> - The task executor and scheduler used by Yocto Project | ||
189 | to build images. | ||
190 | For more information on BitBake, see the <ulink url='http://bitbake.berlios.de/manual/'> | ||
191 | BitBake documentation</ulink>.</para></listitem> | ||
192 | <listitem><para><emphasis>Package</emphasis> - The packaged output from a baked recipe. | ||
193 | A package is generally the compiled binaries produced from the recipe's sources. | ||
194 | You ‘bake’ something by running it through BitBake.</para></listitem> | ||
195 | <listitem><para><emphasis>Layer</emphasis> - A collection of recipes representing the core, | ||
196 | a BSP, or an application stack.</para></listitem> | ||
197 | <listitem><para><emphasis>Metadata</emphasis> - A term used throughout the Yocto Project | ||
198 | documentation that refers to the files that BitBake parses when building an image. | ||
199 | Metadata includes recipes, classes, and configuration files.</para></listitem> | ||
200 | <listitem><para><emphasis>Meta-Toolchain</emphasis> - A collection of software development | ||
201 | tools and utilities that allow you to develop software for targeted architectures. | ||
202 | These toolchains contain cross-compilers, linkers, and debuggers that are specific to | ||
203 | an architecure. | ||
204 | You can use the Yocto Project to build meta-toolchains in tarball form that when | ||
205 | unpacked contain the development tools you need to cross-compile and test your software. | ||
206 | The Yocto Project ships with images that contain toolchains for supported architectures | ||
207 | as well.</para></listitem> | ||
208 | <listitem><para><emphasis>Configuration File</emphasis>: Configuration information in the | ||
209 | <filename>.conf</filename> files provides global definitions of variables. | ||
210 | The <filename>build/conf/local.conf</filename> configuration file defines user-defined variables | ||
211 | that effect each build. | ||
212 | The <filename>distro/poky.conf</filename> configuration file defines Yocto ‘distro’ configuration | ||
213 | variables used only when building with this policy. | ||
214 | The <filename>machine/beagleboard.conf</filename> configuration file defines variables | ||
215 | for the Beagleboard and are only used when building for that target | ||
216 | (i.e. Texas Instruments ARM Cortex-A8 development board). | ||
217 | Configuration files end with a <filename>.conf</filename> filename extension.</para></listitem> | ||
218 | <listitem><para><emphasis>Classes</emphasis> - Files that provide for logic encapsulation | ||
219 | and inheritance allowing commonly used patterns to be defined once and easily used | ||
220 | in multiple recipes. | ||
221 | Class files end with the <filename>.bbclass</filename> filename extension.</para></listitem> | ||
222 | <listitem><para><emphasis>Append Files</emphasis> - Files that append build information to | ||
223 | a recipe file. | ||
224 | Information in append files override the information in the similarly-named recipe file. | ||
225 | Append files use the <filename>.bbappend</filename> filename suffix.</para></listitem> | ||
226 | <listitem><para><emphasis>Tasks</emphasis> - Arbitrary groups of software Recipes. | ||
227 | You simply use Tasks to hold recipes that when built usually accomplish a single task. | ||
228 | For example, a task could contain the recipes for a company’s proprietary or value-add software. | ||
229 | Or the task could contain the recipes that enable graphics. | ||
230 | A task is really just another recipe. | ||
231 | Because task files are recipes, they end with the <filename>.bb</filename> filename | ||
232 | extension.</para></listitem> | ||
233 | <listitem><para><emphasis>OE-Core</emphasis> - A core set of metadata originating | ||
234 | with OpenEmbedded (OE) that is shared between OE and the Yocto Project. | ||
235 | This metadata is found in the <filename>meta</filename> directory of the Yocto Project | ||
236 | files.</para></listitem> | ||
237 | <listitem><para><emphasis>Upstream</emphasis> - A reference to source code or repositories | ||
238 | that are not local to the development system but located in a master area that is controlled | ||
239 | by the maintainer of the source code. | ||
240 | For example, in order for a developer to work on a particular piece of code they need to | ||
241 | first get a copy of it from an "upstream" source.</para></listitem> | ||
242 | </itemizedlist> | 245 | </itemizedlist> |
243 | </para> | 246 | </para> |
244 | </section> | 247 | </section> |
@@ -247,9 +250,9 @@ | |||
247 | <title>Licensing</title> | 250 | <title>Licensing</title> |
248 | 251 | ||
249 | <para> | 252 | <para> |
250 | Because open source projects are open to the public they have different licensing structures in place. | 253 | Because open source projects are open to the public, they have different licensing structures in place. |
251 | License evolution for both Open Source and Free Software has an interesting history. | 254 | License evolution for both Open Source and Free Software has an interesting history. |
252 | If you are interested in the history you can find basic information here: | 255 | If you are interested in this history, you can find basic information here: |
253 | <itemizedlist> | 256 | <itemizedlist> |
254 | <listitem><para><ulink url='http://en.wikipedia.org/wiki/Open-source_license'>Open source license history</ulink> | 257 | <listitem><para><ulink url='http://en.wikipedia.org/wiki/Open-source_license'>Open source license history</ulink> |
255 | </para></listitem> | 258 | </para></listitem> |
@@ -275,13 +278,13 @@ | |||
275 | When you build an image using Yocto Project, the build process uses a known list of licenses to | 278 | When you build an image using Yocto Project, the build process uses a known list of licenses to |
276 | ensure compliance. | 279 | ensure compliance. |
277 | Once the build completes, the list of all licenses found and used during the build are | 280 | Once the build completes, the list of all licenses found and used during the build are |
278 | kept in the resulting build directory at | 281 | kept in the Yocto Project build directory at |
279 | <filename><build_directory>/tmp/deploy/images/licenses</filename>. | 282 | <filename>tmp/deploy/images/licenses</filename>. |
280 | If a module requires a license that is not in the base list, the build process | 283 | If a module requires a license that is not in the base list, the build process |
281 | generates a warning during the build. | 284 | generates a warning during the build. |
282 | These tools make it easier for a developer to be certain of the licenses with which | 285 | These tools make it easier for a developer to be certain of the licenses with which |
283 | their shipped products must comply. | 286 | their shipped products must comply. |
284 | However, it is still up to the developer to resolve potential licensing issues. | 287 | However, even with these tools it is still up to the developer to resolve potential licensing issues. |
285 | </para> | 288 | </para> |
286 | 289 | ||
287 | <para> | 290 | <para> |
@@ -292,14 +295,13 @@ | |||
292 | for a standard format for communicating the components, licenses, and copyrights | 295 | for a standard format for communicating the components, licenses, and copyrights |
293 | associated with a software package. | 296 | associated with a software package. |
294 | <ulink url='http://opensource.org'>OSI</ulink> is a corporation dedicated to the Open Source | 297 | <ulink url='http://opensource.org'>OSI</ulink> is a corporation dedicated to the Open Source |
295 | Definition and the effort for reviewing | 298 | Definition and the effort for reviewing and approving licenses that are OSD-conformant. |
296 | and approving licenses that are OSD-conformant. | ||
297 | </para> | 299 | </para> |
298 | 300 | ||
299 | <para> | 301 | <para> |
300 | You can find a list of the combined SPDX and OSI licenses that the Yocto Project uses | 302 | You can find a list of the combined SPDX and OSI licenses that the Yocto Project uses |
301 | <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/files/common-licenses'>here</ulink>. | 303 | <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/files/common-licenses'>here</ulink>. |
302 | The wiki page discusses the license infrastructure used by the Yocto Project. | 304 | This wiki page discusses the license infrastructure used by the Yocto Project. |
303 | </para> | 305 | </para> |
304 | </section> | 306 | </section> |
305 | 307 | ||
@@ -320,7 +322,7 @@ | |||
320 | You do not have to be an expert in Git to be functional. | 322 | You do not have to be an expert in Git to be functional. |
321 | A good place to look for instruction on a minimal set of Git commands is | 323 | A good place to look for instruction on a minimal set of Git commands is |
322 | <ulink url='http://git-scm.com/documentation'>here</ulink>. | 324 | <ulink url='http://git-scm.com/documentation'>here</ulink>. |
323 | If you need to download Git you can do so | 325 | If you need to download Git, you can do so |
324 | <ulink url='http://git-scm.com/download'>here</ulink>. | 326 | <ulink url='http://git-scm.com/download'>here</ulink>. |
325 | </para> | 327 | </para> |
326 | 328 | ||
@@ -332,7 +334,7 @@ | |||
332 | This methodology also allows for an environment in which you can do lots of | 334 | This methodology also allows for an environment in which you can do lots of |
333 | experimentation on your project as you develop changes or new features. | 335 | experimentation on your project as you develop changes or new features. |
334 | For example, you can create a “branch”, experiment with some feature, and then | 336 | For example, you can create a “branch”, experiment with some feature, and then |
335 | if you like the feature you incorporate the branch into the tree. | 337 | if you like the feature, you incorporate the branch into the tree. |
336 | If you don’t, you cut the branch off by deleting it. | 338 | If you don’t, you cut the branch off by deleting it. |
337 | </para> | 339 | </para> |
338 | 340 | ||
@@ -347,55 +349,63 @@ | |||
347 | omits the many arguments they support. | 349 | omits the many arguments they support. |
348 | See the Git documentation for complete descriptions and strategies on how to use these commands: | 350 | See the Git documentation for complete descriptions and strategies on how to use these commands: |
349 | <itemizedlist> | 351 | <itemizedlist> |
350 | <listitem><para><emphasis><filename>git init</filename></emphasis> – Initializes an empty Git repository. | 352 | <listitem><para><emphasis><filename>git init</filename>:</emphasis> Initializes an empty Git repository. |
351 | You cannot use Git commands unless you have a <filename>.git</filename> repository.</para></listitem> | 353 | You cannot use Git commands unless you have a <filename>.git</filename> repository.</para></listitem> |
352 | <listitem><para><emphasis><filename>git clone</filename></emphasis> – Creates a clone of a repository. | 354 | <listitem><para><emphasis><filename>git clone</filename>:</emphasis> Creates a clone of a repository. |
353 | During collaboration this command allows you to create a local repository that is on | 355 | During collaboration, this command allows you to create a local repository that is on |
354 | equal footing with a fellow developer’s repository.</para></listitem> | 356 | equal footing with a fellow developer’s repository.</para></listitem> |
355 | <listitem><para><emphasis><filename>git add</filename></emphasis> – Adds updated file contents to the index that | 357 | <listitem><para><emphasis><filename>git add</filename>:</emphasis> Adds updated file contents |
358 | to the index that | ||
356 | Git uses to track changes. | 359 | Git uses to track changes. |
357 | All files that have changed must be added before they can be committed.</para></listitem> | 360 | You must add all files that have changed before you can commit them.</para></listitem> |
358 | <listitem><para><emphasis><filename>git commit</filename></emphasis> – Creates a “commit” that documents | 361 | <listitem><para><emphasis><filename>git commit</filename>:</emphasis> Creates a “commit” that documents |
359 | the changes you made. | 362 | the changes you made. |
360 | Commits are used for historical purposes, for determining if a maintainer of a project | 363 | Commits are used for historical purposes, for determining if a maintainer of a project |
361 | will allow the change, and for ultimately pushing the change from your local Git repository | 364 | will allow the change, and for ultimately pushing the change from your local Git repository |
362 | into the project’s upstream (or master) repository.</para></listitem> | 365 | into the project’s upstream (or master) repository.</para></listitem> |
363 | <listitem><para><emphasis><filename>git status</filename></emphasis> – Reports any modified files that | 366 | <listitem><para><emphasis><filename>git status</filename>:</emphasis> Reports any modified files that |
364 | possibly need added and committed.</para></listitem> | 367 | possibly need added and committed.</para></listitem> |
365 | <listitem><para><emphasis><filename>git checkout <branch-name></filename></emphasis> - Changes | 368 | <listitem><para><emphasis><filename>git checkout <branch-name></filename>:</emphasis> Changes |
366 | your working branch. This command is analogous to “cd”.</para></listitem> | 369 | your working branch. |
367 | <listitem><para><emphasis><filename>git checkout –b <working-branch></filename></emphasis> - Creates | 370 | This command is analogous to “cd”.</para></listitem> |
371 | <listitem><para><emphasis><filename>git checkout –b <working-branch></filename>:</emphasis> Creates | ||
368 | a working branch on your local machine where you can isolate work. | 372 | a working branch on your local machine where you can isolate work. |
369 | It is a good idea to use local branches when adding specific features or changes. | 373 | It is a good idea to use local branches when adding specific features or changes. |
370 | This way if you don’t like what you have done you can easily get rid of the work.</para></listitem> | 374 | This way if you don’t like what you have done you can easily get rid of the work.</para></listitem> |
371 | <listitem><para><emphasis><filename>git branch</filename></emphasis> – Reports existing branches and | 375 | <listitem><para><emphasis><filename>git branch</filename>:</emphasis> Reports existing branches and |
372 | tells you which branch in which you are currently working.</para></listitem> | 376 | tells you which branch in which you are currently working.</para></listitem> |
373 | <listitem><para><emphasis><filename>git branch -D <branch-name></filename></emphasis> – | 377 | <listitem><para><emphasis><filename>git branch -D <branch-name></filename>:</emphasis> |
374 | Deletes an existing branch. You need to be in a branch other than the one you are deleting | 378 | Deletes an existing branch. |
379 | You need to be in a branch other than the one you are deleting | ||
375 | in order to delete <branch-name>.</para></listitem> | 380 | in order to delete <branch-name>.</para></listitem> |
376 | <listitem><para><emphasis><filename>git pull</filename></emphasis> – Retrieves information from an upstream Git | 381 | <listitem><para><emphasis><filename>git pull</filename>:</emphasis> Retrieves information |
382 | from an upstream Git | ||
377 | repository and places it in your local Git repository. | 383 | repository and places it in your local Git repository. |
378 | You use this command to make sure you are synchronized with the upstream repository | 384 | You use this command to make sure you are synchronized with the repository |
379 | from which the project’s maintainer uses to pull changes into the master repository.</para></listitem> | 385 | from which you are basing changes (.e.g. the master repository).</para></listitem> |
380 | <listitem><para><emphasis><filename>git push</filename></emphasis> – Sends all your local changes you | 386 | <listitem><para><emphasis><filename>git push</filename>:</emphasis> Sends all your local changes you |
381 | have committed to an upstream Git repository. | 387 | have committed to an upstream Git repository (e.g. a contribution repository). |
382 | The maintainer of the project draws from these repositories when adding your changes to the | 388 | The maintainer of the project draws from these repositories when adding your changes to the |
383 | project’s master repository.</para></listitem> | 389 | project’s master repository.</para></listitem> |
384 | <listitem><para><emphasis><filename>git merge</filename></emphasis> – Combines or adds changes from one | 390 | <listitem><para><emphasis><filename>git merge</filename>:</emphasis> Combines or adds changes from one |
385 | local branch of your repository with another branch. | 391 | local branch of your repository with another branch. |
386 | When you create a local Git repository the default branch is named “master”. | 392 | When you create a local Git repository, the default branch is named “master”. |
387 | A typical workflow is to create a temporary branch for isolated work, make and commit your | 393 | A typical workflow is to create a temporary branch for isolated work, make and commit your |
388 | changes, switch to the master branch, merge the changes from the temporary branch into the | 394 | changes, switch to your local master branch, merge the changes from the temporary branch into the |
389 | master branch, and then delete the temporary branch</para></listitem> | 395 | local master branch, and then delete the temporary branch.</para></listitem> |
390 | <listitem><para><emphasis><filename>git cherry-pick</filename></emphasis> – Choose and apply specific | 396 | <listitem><para><emphasis><filename>git cherry-pick</filename>:</emphasis> Choose and apply specific |
391 | commits from one branch into another branch. | 397 | commits from one branch into another branch. |
392 | There are times when you might not be able to merge all the changes in one branch with | 398 | There are times when you might not be able to merge all the changes in one branch with |
393 | another but need to pick out certain ones.</para></listitem> | 399 | another but need to pick out certain ones.</para></listitem> |
394 | <listitem><para><emphasis><filename>gitk</filename></emphasis> – Provides a GUI view of the branches | 400 | <listitem><para><emphasis><filename>gitk</filename>:</emphasis> Provides a GUI view of the branches |
395 | and changes in your local Git repository. | 401 | and changes in your local Git repository. |
396 | This command is a good way to see where things have diverged in your local repository.</para></listitem> | 402 | This command is a good way to graphically see where things have diverged in your |
397 | <listitem><para><emphasis><filename>git log</filename></emphasis> – Reports a history of your changes to the | 403 | local repository.</para></listitem> |
404 | <listitem><para><emphasis><filename>git log</filename>:</emphasis> Reports a history of your changes to the | ||
398 | repository.</para></listitem> | 405 | repository.</para></listitem> |
406 | <listitem><para><emphasis><filename>git diff</filename>:</emphasis> Displays line-by-line differences | ||
407 | between your local working files and the same files in the upstream Git repository that your | ||
408 | branch currently tracks.</para></listitem> | ||
399 | </itemizedlist> | 409 | </itemizedlist> |
400 | </para> | 410 | </para> |
401 | </section> | 411 | </section> |
@@ -407,14 +417,16 @@ | |||
407 | This section provides some overview on workflows using Git. | 417 | This section provides some overview on workflows using Git. |
408 | In particular, the information covers basic practices that describe roles and actions in a | 418 | In particular, the information covers basic practices that describe roles and actions in a |
409 | collaborative development environment. | 419 | collaborative development environment. |
410 | Again, if you are familiar with this type of development environment you might want to just skip the section. | 420 | Again, if you are familiar with this type of development environment, you might want to just |
421 | skip the section. | ||
411 | </para> | 422 | </para> |
412 | 423 | ||
413 | <para> | 424 | <para> |
414 | The Yocto Project files are maintained using Git in a "master" branch whose Git history | 425 | The Yocto Project files are maintained using Git in a "master" branch whose Git history |
415 | tracks every change and whose structure provides branches for all diverging functionality. | 426 | tracks every change and whose structure provides branches for all diverging functionality. |
416 | Although there is no need to use Git, This practice is typical for open-source projects. | 427 | Although there is no need to use Git, many open source projects do so. |
417 | For the Yocto Project a key individual called the "maintainer" is responsible for "master". | 428 | For the Yocto Project, a key individual called the "maintainer" is responsible for "master" |
429 | branch of the Git repository. | ||
418 | The "master" branch is the “upstream” repository where the final builds of the project occur. | 430 | The "master" branch is the “upstream” repository where the final builds of the project occur. |
419 | The maintainer is responsible for allowing changes in from other developers and for | 431 | The maintainer is responsible for allowing changes in from other developers and for |
420 | organizing the underlying branch structure to reflect release strategies and so forth. | 432 | organizing the underlying branch structure to reflect release strategies and so forth. |
@@ -432,7 +444,7 @@ | |||
432 | Developers (including contributing community members) create and maintain cloned repositories | 444 | Developers (including contributing community members) create and maintain cloned repositories |
433 | of the upstream "master" branch. | 445 | of the upstream "master" branch. |
434 | These repositories are local to their development platforms and are used to develop changes. | 446 | These repositories are local to their development platforms and are used to develop changes. |
435 | When a developer is satisfied with a particular feature or change they “push” the changes | 447 | When a developer is satisfied with a particular feature or change, they “push” the changes |
436 | to the appropriate "contrib" repository. | 448 | to the appropriate "contrib" repository. |
437 | </para> | 449 | </para> |
438 | 450 | ||
@@ -468,53 +480,53 @@ | |||
468 | The following list describes some of these practices. | 480 | The following list describes some of these practices. |
469 | For more detailed information about these strategies see | 481 | For more detailed information about these strategies see |
470 | <ulink url='http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html'>Git Workflows</ulink>. | 482 | <ulink url='http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html'>Git Workflows</ulink>. |
471 | <itemizedlist> | 483 | <itemizedlist> |
472 | <listitem><para><emphasis>Make Small Changes</emphasis> - It is best to keep your changes you commit | 484 | <listitem><para><emphasis>Make Small Changes:</emphasis> It is best to keep your changes you commit |
473 | small as compared to bundling many disparate changes into a single commit. | 485 | small as compared to bundling many disparate changes into a single commit. |
474 | This practice not only keeps things manageable but also allows the maintainer | 486 | This practice not only keeps things manageable but also allows the maintainer |
475 | to more easily include or refuse changes.</para> | 487 | to more easily include or refuse changes.</para> |
476 | <para>It is also good practice to leave the repository in a state that allows you to | 488 | <para>It is also good practice to leave the repository in a state that allows you to |
477 | still successfully build your project.</para></listitem> | 489 | still successfully build your project.</para></listitem> |
478 | <listitem><para><emphasis>Use Branches Liberally</emphasis> - It is very easy to create, use, and | 490 | <listitem><para><emphasis>Use Branches Liberally:</emphasis> It is very easy to create, use, and |
479 | delete local branches in your working Git repository. | 491 | delete local branches in your working Git repository. |
480 | You can name these branches anything you like. | 492 | You can name these branches anything you like. |
481 | It is helpful to give them names associated with the particular feature or change | 493 | It is helpful to give them names associated with the particular feature or change |
482 | on which you are working. | 494 | on which you are working. |
483 | Once you are done with a feature or change you simply discard the branch.</para></listitem> | 495 | Once you are done with a feature or change, simply discard the branch.</para></listitem> |
484 | <listitem><para><emphasis>Merge Changes</emphasis> - The <filename>git merge</filename> | 496 | <listitem><para><emphasis>Merge Changes:</emphasis> The <filename>git merge</filename> |
485 | command allows you to take the | 497 | command allows you to take the |
486 | changes from one branch and fold them into another branch. | 498 | changes from one branch and fold them into another branch. |
487 | This process is especially helpful when more than a single developer might be working | 499 | This process is especially helpful when more than a single developer might be working |
488 | on different parts of the same feature. | 500 | on different parts of the same feature. |
489 | Merging changes also automatically identifies any collisions or “conflicts” | 501 | Merging changes also automatically identifies any collisions or “conflicts” |
490 | that might happen resulting from the same lines of code being altered by two different | 502 | that might happen as a result of the same lines of code being altered by two different |
491 | developers.</para></listitem> | 503 | developers.</para></listitem> |
492 | <listitem><para><emphasis>Manage Branches</emphasis> - Because branches are easy to use, you should | 504 | <listitem><para><emphasis>Manage Branches:</emphasis> Because branches are easy to use, you should |
493 | use a system where branches indicate varying levels of code readiness. | 505 | use a system where branches indicate varying levels of code readiness. |
494 | For example, you can have a “work” branch to develop in, a “test” branch where the code or | 506 | For example, you can have a “work” branch to develop in, a “test” branch where the code or |
495 | change is tested, a “stage” branch where changes are ready to be committed, and so forth. | 507 | change is tested, a “stage” branch where changes are ready to be committed, and so forth. |
496 | As your project develops, you can merge code across the branches to reflect ever-increasing | 508 | As your project develops, you can merge code across the branches to reflect ever-increasing |
497 | stable states of the development.</para></listitem> | 509 | stable states of the development.</para></listitem> |
498 | <listitem><para><emphasis>Use Push and Pull</emphasis> - The push-pull workflow is based on the | 510 | <listitem><para><emphasis>Use Push and Pull:</emphasis> The push-pull workflow is based on the |
499 | concept of developers “pushing” local commits to a remote repository, which is | 511 | concept of developers “pushing” local commits to a remote repository, which is |
500 | usually a contribution repository. | 512 | usually a contribution repository. |
501 | It is also based on the developers “pulling” known states of the project down into their | 513 | This workflow is also based on developers “pulling” known states of the project down into their |
502 | local development repositories. | 514 | local development repositories. |
503 | This workflow easily allows you to pull changes submitted by other developers from the | 515 | The workflow easily allows you to pull changes submitted by other developers from the |
504 | upstream repository into your work area ensuring that you have the most recent software | 516 | upstream repository into your work area ensuring that you have the most recent software |
505 | on which to develop. | 517 | on which to develop. |
506 | The Yocto Project has two scripts named <filename>create-pull-request</filename> and | 518 | The Yocto Project has two scripts named <filename>create-pull-request</filename> and |
507 | <filename>send-pull-request</filename> that ship with the release to facilitate this | 519 | <filename>send-pull-request</filename> that ship with the release to facilitate this |
508 | workflow. | 520 | workflow. |
509 | You can find these scripts in the local Yocto Project files Git repository in | 521 | You can find these scripts in the local Yocto Project files Git repository in |
510 | <filename>scripts</filename>.</para></listitem> | 522 | <filename>scripts</filename>.</para></listitem> |
511 | <listitem><para><emphasis>Patch Workflow</emphasis> - This workflow allows you to notify the | 523 | <listitem><para><emphasis>Patch Workflow:</emphasis> This workflow allows you to notify the |
512 | maintainer through an email that you have a change (or patch) you would like considered | 524 | maintainer through an email that you have a change (or patch) you would like considered |
513 | for the "master" branch of the Git repository. | 525 | for the "master" branch of the Git repository. |
514 | To send this type of change you format the patch and then send the email using the Git commands | 526 | To send this type of change you format the patch and then send the email using the Git commands |
515 | <filename>git format-patch</filename> and <filename>git send-email</filename>. | 527 | <filename>git format-patch</filename> and <filename>git send-email</filename>. |
516 | You can find information on how to submit later in this chapter.</para></listitem> | 528 | You can find information on how to submit later in this chapter.</para></listitem> |
517 | </itemizedlist> | 529 | </itemizedlist> |
518 | </para> | 530 | </para> |
519 | </section> | 531 | </section> |
520 | 532 | ||
@@ -532,7 +544,7 @@ | |||
532 | <para> | 544 | <para> |
533 | Sometimes it is helpful to submit, investigate, or track a bug against the Yocto Project itself | 545 | Sometimes it is helpful to submit, investigate, or track a bug against the Yocto Project itself |
534 | such as when discovering an issue with some component of the build system that acts contrary | 546 | such as when discovering an issue with some component of the build system that acts contrary |
535 | to the documentation or expectations. | 547 | to the documentation or your expectations. |
536 | You can find information | 548 | You can find information |
537 | for Bugzilla configuration and bug tracking procedures specific to the Yocto Project | 549 | for Bugzilla configuration and bug tracking procedures specific to the Yocto Project |
538 | <ulink url='https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking'>here</ulink>. | 550 | <ulink url='https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking'>here</ulink>. |
@@ -548,7 +560,7 @@ | |||
548 | <para> | 560 | <para> |
549 | Here are some things to remember when dealing with bugs against the Yocto Project: | 561 | Here are some things to remember when dealing with bugs against the Yocto Project: |
550 | <itemizedlist> | 562 | <itemizedlist> |
551 | <listitem><para>The Yocto Project follows a naming bug-naming convention: | 563 | <listitem><para>The Yocto Project follows a bug-naming convention: |
552 | <filename>[YOCTO #<number>]</filename>, where <filename><number></filename> is the | 564 | <filename>[YOCTO #<number>]</filename>, where <filename><number></filename> is the |
553 | assigned defect ID used in Bugzilla. | 565 | assigned defect ID used in Bugzilla. |
554 | So, for example, a valid way to refer to a defect when creating a commit comment | 566 | So, for example, a valid way to refer to a defect when creating a commit comment |
@@ -567,8 +579,34 @@ | |||
567 | 579 | ||
568 | <para> | 580 | <para> |
569 | Contributions to the Yocto Project are very welcome. | 581 | Contributions to the Yocto Project are very welcome. |
570 | You should send patches to the Yocto Project mailing list to get them in front of the | 582 | You should send patches to the appropriate Yocto Project mailing list to get them |
571 | Yocto Project Maintainer. | 583 | in front of the Yocto Project Maintainer. |
584 | For a list of the Yocto Project mailing lists, see the | ||
585 | "<ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html#resources-mailinglist'>Mailing lists</ulink>" section in | ||
586 | <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html'> The | ||
587 | Yocto Project Reference Manual</ulink>. | ||
588 | </para> | ||
589 | |||
590 | <para> | ||
591 | Following is some guidance on which mailing list to use for what type of defect: | ||
592 | <itemizedlist> | ||
593 | <listitem><para>For defects against the Yocto Project build system Poky, send | ||
594 | your patch to the | ||
595 | <ulink url='http://lists.yoctoproject.org/listinfo/poky'></ulink> mailing list. | ||
596 | This mailing list corresponds to issues that are not specific to the Yocto Project but | ||
597 | are part of the OE-core. | ||
598 | For example, a defect against anything in the <filename>meta</filename> layer | ||
599 | or the BitBake Manual could be sent to this mailing list.</para></listitem> | ||
600 | <listitem><para>For defects against Yocto-specific layers, tools, and Yocto Project | ||
601 | documentation use the | ||
602 | <ulink url='http://lists.yoctoproject.org/listinfo/yocto'></ulink> mailing list. | ||
603 | This mailing list corresponds to Yocto-specific areas such as | ||
604 | <filename>meta-yocto</filename>, <filename>meta-intel</filename>, | ||
605 | <filename>linux-yocto</filename>, and <filename>documentation</filename>.</para></listitem> | ||
606 | </itemizedlist> | ||
607 | </para> | ||
608 | |||
609 | <para> | ||
572 | When you send a patch, be sure to include a "signed-off-by:" | 610 | When you send a patch, be sure to include a "signed-off-by:" |
573 | line in the same style as required by the Linux kernel. | 611 | line in the same style as required by the Linux kernel. |
574 | Adding this line signifies the developer has agreed to the Developer's Certificate of Origin 1.1 | 612 | Adding this line signifies the developer has agreed to the Developer's Certificate of Origin 1.1 |
@@ -611,33 +649,38 @@ | |||
611 | <para> | 649 | <para> |
612 | In a collaborative environment, it is necessary to have some sort of standard | 650 | In a collaborative environment, it is necessary to have some sort of standard |
613 | or method through which you submit changes. | 651 | or method through which you submit changes. |
614 | Otherwise, things would get quite chaotic. | 652 | Otherwise, things could get quite chaotic. |
615 | </para> | 653 | </para> |
616 | 654 | ||
617 | <para> | 655 | <para> |
618 | When you form a commit you must follow certain standards established by the | 656 | When you form a commit, you must follow certain standards established by the |
619 | Yocto Project development team. | 657 | Yocto Project development team. |
620 | For each commit, do the following: | 658 | For each commit, you must provide a single-line summary of the change and you |
659 | almost always provide a more detailed description of what you did (i.e. the body | ||
660 | of the commit). | ||
661 | The only exceptions for not providing a detailed description would be if your | ||
662 | change is a simple, self-explanatory change that needs no description. | ||
663 | Here are the Yocto Project commit message guidelines: | ||
621 | <itemizedlist> | 664 | <itemizedlist> |
622 | <listitem><para>Provide a single-line, short summary of the change. | 665 | <listitem><para>Provide a single-line, short summary of the change. |
623 | This summary is typically viewable by source control systems. | 666 | This summary is typically viewable by source control systems. |
624 | Thus, providing something short and descriptive that gives the reader | 667 | Thus, providing something short and descriptive that gives the reader |
625 | a summary of the change is useful when viewing a list of many commits. | 668 | a summary of the change is useful when viewing a list of many commits. |
626 | </para></listitem> | 669 | </para></listitem> |
670 | <listitem><para>For the body of the commit message, provide detailed information | ||
671 | that describes what you changed, why you made the change, and the approach | ||
672 | you used. | ||
673 | Provide as much detail as you can in the body of the commit message. | ||
674 | </para></listitem> | ||
627 | <listitem><para>If the change addresses a specific bug or issue that is | 675 | <listitem><para>If the change addresses a specific bug or issue that is |
628 | associated with a bug-tracking ID, prefix the single-line commit summary | 676 | associated with a bug-tracking ID, prefix your detailed description |
629 | with the bug or issue ID. | 677 | with the bug or issue ID. |
630 | For example, the Yocto Project tracks bugs using a bug-naming convention. | 678 | For example, the Yocto Project tracks bugs using a bug-naming convention. |
631 | Any commits that address a bug must use a commit summary line in the | 679 | Any commits that address a bug must start with the bug ID in the description |
632 | following form: | 680 | as follows: |
633 | <literallayout class='monospaced'> | 681 | <literallayout class='monospaced'> |
634 | YOCTO #<bug-id>: <Brief 40-character or less summary of the change> | 682 | YOCTO #<bug-id>: <Detailed description of commit> |
635 | </literallayout></para></listitem> | 683 | </literallayout></para></listitem> |
636 | <listitem><para>For the body of the commit message, provide detailed information | ||
637 | that describes what you changed, why you made the change, and the approach | ||
638 | you used. | ||
639 | Provide as much detail as you want in the body of the commit message. | ||
640 | </para></listitem> | ||
641 | </itemizedlist> | 684 | </itemizedlist> |
642 | </para> | 685 | </para> |
643 | 686 | ||
@@ -655,7 +698,7 @@ | |||
655 | <listitem><para>Stage your commit (or change) by using the <filename>git add</filename> | 698 | <listitem><para>Stage your commit (or change) by using the <filename>git add</filename> |
656 | command.</para></listitem> | 699 | command.</para></listitem> |
657 | <listitem><para>Commit the change by using the <filename>git commit</filename> | 700 | <listitem><para>Commit the change by using the <filename>git commit</filename> |
658 | command and push it to the upstream "contrib" repository. | 701 | command and push it to the "contrib" repository. |
659 | Be sure to provide a commit message that follows the project’s commit standards | 702 | Be sure to provide a commit message that follows the project’s commit standards |
660 | as described earlier.</para></listitem> | 703 | as described earlier.</para></listitem> |
661 | <listitem><para>Notify the maintainer that you have pushed a change by making a pull | 704 | <listitem><para>Notify the maintainer that you have pushed a change by making a pull |
@@ -696,12 +739,13 @@ | |||
696 | <listitem><para>Commit the change by using the | 739 | <listitem><para>Commit the change by using the |
697 | <filename>git commit --signoff</filename> command. | 740 | <filename>git commit --signoff</filename> command. |
698 | Using the <filename>--signoff</filename> option identifies you as the person | 741 | Using the <filename>--signoff</filename> option identifies you as the person |
699 | making the change.</para> | 742 | making the change and also satisfies the Developer's Certificate of |
743 | Origin (DCO) shown earlier.</para> | ||
700 | <para>When you form a commit you must follow certain standards established by the | 744 | <para>When you form a commit you must follow certain standards established by the |
701 | Yocto Project development team. | 745 | Yocto Project development team. |
702 | See the | 746 | See the earlier section |
703 | <link linkend='how-to-submit-a-change'>How to Submit a Change</link> section | 747 | "<link linkend='how-to-submit-a-change'>How to Submit a Change</link>" |
704 | earlier for Yocto Project commit message standards.</para></listitem> | 748 | for Yocto Project commit message standards.</para></listitem> |
705 | <listitem><para>Format the commit into an email messsage. | 749 | <listitem><para>Format the commit into an email messsage. |
706 | To format commits, use the <filename>git format-patch</filename> command. | 750 | To format commits, use the <filename>git format-patch</filename> command. |
707 | When you provide the command, you must include a revision list or a number of patches | 751 | When you provide the command, you must include a revision list or a number of patches |
@@ -714,9 +758,11 @@ | |||
714 | </literallayout></para> | 758 | </literallayout></para> |
715 | <para>After the command is run, the current directory contains a | 759 | <para>After the command is run, the current directory contains a |
716 | numbered <filename>.patch</filename> file for the commit.</para> | 760 | numbered <filename>.patch</filename> file for the commit.</para> |
717 | <para>If you provide several commits as part of the command, it produces a numbered | 761 | <para>If you provide several commits as part of the command, |
762 | the <filename>git format-patch</filename> command produces a numbered | ||
718 | series of files in the current directory – one for each commit. | 763 | series of files in the current directory – one for each commit. |
719 | For information on the <filename>git format-patch</filename> command use the | 764 | For information on the <filename>git format-patch</filename> command, |
765 | see <filename>GIT_FORMAT_PATCH(1)</filename> displayed using the | ||
720 | <filename>man git-format-patch</filename> command.</para></listitem> | 766 | <filename>man git-format-patch</filename> command.</para></listitem> |
721 | <listitem><para>Import the files into your mail client by using the | 767 | <listitem><para>Import the files into your mail client by using the |
722 | <filename>git send-email</filename> command. | 768 | <filename>git send-email</filename> command. |
@@ -728,7 +774,10 @@ | |||
728 | <filename>msmtp</filename>, <filename>sendmail</filename>, or through a direct | 774 | <filename>msmtp</filename>, <filename>sendmail</filename>, or through a direct |
729 | <filename>smtp</filename> configuration in your Git <filename>config</filename> | 775 | <filename>smtp</filename> configuration in your Git <filename>config</filename> |
730 | file.</para> | 776 | file.</para> |
731 | <para>The <filename>git send-email</filename> command has several options that let you | 777 | <para>The <filename>git send-email</filename> command is the preferred method |
778 | for sending your patches since there is no risk of compromising whitespace | ||
779 | in the body of the message, which can occur when you use your own mail client. | ||
780 | The command also has several options that let you | ||
732 | specify recipients and perform further editing of the email message. | 781 | specify recipients and perform further editing of the email message. |
733 | For information on how to use the <filename>git send-email</filename> command, | 782 | For information on how to use the <filename>git send-email</filename> command, |
734 | use the <filename>man git-send-email</filename> command.</para></listitem> | 783 | use the <filename>man git-send-email</filename> command.</para></listitem> |