diff options
Diffstat (limited to 'documentation/dev-manual')
-rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 173 | ||||
-rw-r--r-- | documentation/dev-manual/dev-manual-intro.xml | 35 | ||||
-rw-r--r-- | documentation/dev-manual/dev-manual-kernel-appendix.xml | 92 | ||||
-rw-r--r-- | documentation/dev-manual/dev-manual-model.xml | 137 | ||||
-rw-r--r-- | documentation/dev-manual/dev-manual-newbie.xml | 199 | ||||
-rw-r--r-- | documentation/dev-manual/dev-manual-start.xml | 72 |
6 files changed, 320 insertions, 388 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index 067b5dfcc2..f326dc5209 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
@@ -7,7 +7,7 @@ | |||
7 | <title>Common Tasks</title> | 7 | <title>Common Tasks</title> |
8 | <para> | 8 | <para> |
9 | This chapter describes standard tasks such as adding new | 9 | This chapter describes standard tasks such as adding new |
10 | software packages, extending or customizing images, and porting the Yocto Project to | 10 | software packages, extending or customizing images, and porting work to |
11 | new hardware (adding a new machine). | 11 | new hardware (adding a new machine). |
12 | The chapter also describes how to combine multiple | 12 | The chapter also describes how to combine multiple |
13 | versions of library files into a single image, how to handle a package name alias, and | 13 | versions of library files into a single image, how to handle a package name alias, and |
@@ -18,7 +18,7 @@ | |||
18 | <title>Understanding and Creating Layers</title> | 18 | <title>Understanding and Creating Layers</title> |
19 | 19 | ||
20 | <para> | 20 | <para> |
21 | The Yocto Project build system supports organizing <link linkend='metadata'>metadata</link> | 21 | The OpenEmbedded build system supports organizing <link linkend='metadata'>metadata</link> |
22 | into multiple layers. | 22 | into multiple layers. |
23 | Layers allow you to isolate different types of customizations from each other. | 23 | Layers allow you to isolate different types of customizations from each other. |
24 | You might find it tempting to keep everything in one layer when working on a single project. | 24 | You might find it tempting to keep everything in one layer when working on a single project. |
@@ -43,13 +43,13 @@ | |||
43 | </para> | 43 | </para> |
44 | 44 | ||
45 | <section id='yocto-project-layers'> | 45 | <section id='yocto-project-layers'> |
46 | <title>Yocto Project Layers</title> | 46 | <title>Layers</title> |
47 | 47 | ||
48 | <para> | 48 | <para> |
49 | The Yocto Project contains several layers right out of the box. | 49 | The source directory contains several layers right out of the box. |
50 | You can easily identify a layer in the Yocto Project by the name of its folder. | 50 | You can easily identify a layer in the source directory by its folder name. |
51 | Folders that are layers begin with the string <filename>meta</filename>. | 51 | Folders that are layers begin with the string <filename>meta</filename>. |
52 | For example, when you set up the <link linkend='yocto-project-files'>Yocto Project Files</link> | 52 | For example, when you set up the <link linkend='source-directory'>source directory</link> |
53 | structure, you will see several layers: <filename>meta</filename>, <filename>meta-demoapps</filename>, | 53 | structure, you will see several layers: <filename>meta</filename>, <filename>meta-demoapps</filename>, |
54 | <filename>meta-skeleton</filename>, and <filename>meta-yocto</filename>. | 54 | <filename>meta-skeleton</filename>, and <filename>meta-yocto</filename>. |
55 | Each of these folders is a layer. | 55 | Each of these folders is a layer. |
@@ -69,7 +69,7 @@ | |||
69 | <title>Creating Your Own Layer</title> | 69 | <title>Creating Your Own Layer</title> |
70 | 70 | ||
71 | <para> | 71 | <para> |
72 | It is very easy to create your own layer to use with the Yocto Project. | 72 | It is very easy to create your own layer to use with the OpenEmbedded build system. |
73 | Follow these general steps to create your layer: | 73 | Follow these general steps to create your layer: |
74 | <orderedlist> | 74 | <orderedlist> |
75 | <listitem><para><emphasis>Check Existing Layers:</emphasis> Before creating a new layer, | 75 | <listitem><para><emphasis>Check Existing Layers:</emphasis> Before creating a new layer, |
@@ -170,13 +170,14 @@ | |||
170 | If this is the case, you need to address that deficiency instead of overlaying | 170 | If this is the case, you need to address that deficiency instead of overlaying |
171 | the include file. | 171 | the include file. |
172 | For example, consider how Qt 4 database support plugins are configured. | 172 | For example, consider how Qt 4 database support plugins are configured. |
173 | The Yocto Project does not have MySQL or PostgreSQL, however OpenEmbedded's | 173 | The source directory does not have |
174 | MySQL or PostgreSQL, however OpenEmbedded's | ||
174 | layer <filename>meta-oe</filename> does. | 175 | layer <filename>meta-oe</filename> does. |
175 | Consequently, <filename>meta-oe</filename> uses <filename>.bbappend</filename> | 176 | Consequently, <filename>meta-oe</filename> uses <filename>.bbappend</filename> |
176 | files to modify the <filename>QT_SQL_DRIVER_FLAGS</filename> variable to enable | 177 | files to modify the <filename>QT_SQL_DRIVER_FLAGS</filename> variable to enable |
177 | the appropriate plugins. | 178 | the appropriate plugins. |
178 | This variable was added to the <filename>qt4.inc</filename> include file in | 179 | This variable was added to the <filename>qt4.inc</filename> include file in |
179 | The Yocto Project specifically to allow the <filename>meta-oe</filename> layer | 180 | the source directory specifically to allow the <filename>meta-oe</filename> layer |
180 | to be able to control which plugins are built.</para></listitem> | 181 | to be able to control which plugins are built.</para></listitem> |
181 | </itemizedlist> | 182 | </itemizedlist> |
182 | </para> | 183 | </para> |
@@ -187,10 +188,10 @@ | |||
187 | <listitem><para>Store custom layers in a Git repository that uses the | 188 | <listitem><para>Store custom layers in a Git repository that uses the |
188 | <filename>meta-<layer_name></filename> format.</para></listitem> | 189 | <filename>meta-<layer_name></filename> format.</para></listitem> |
189 | <listitem><para>Clone the repository alongside other <filename>meta</filename> | 190 | <listitem><para>Clone the repository alongside other <filename>meta</filename> |
190 | directories in | 191 | directories in the |
191 | <link linkend='yocto-project-files'>Yocto Project Files</link>.</para></listitem> | 192 | <link linkend='source-directory'>source directory</link>.</para></listitem> |
192 | </itemizedlist> | 193 | </itemizedlist> |
193 | Following these recommendations keeps your Yocto Project files area and | 194 | Following these recommendations keeps your source directory and |
194 | its configuration entirely inside the Yocto Project's core base. | 195 | its configuration entirely inside the Yocto Project's core base. |
195 | </para> | 196 | </para> |
196 | </section> | 197 | </section> |
@@ -199,11 +200,11 @@ | |||
199 | <title>Enabling Your Layer</title> | 200 | <title>Enabling Your Layer</title> |
200 | 201 | ||
201 | <para> | 202 | <para> |
202 | Before the Yocto Project build system can use your new layer, you need to enable it. | 203 | Before the OpenEmbedded build system can use your new layer, you need to enable it. |
203 | To enable your layer, simply add your layer's path to the | 204 | To enable your layer, simply add your layer's path to the |
204 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBLAYERS'>BBLAYERS</ulink></filename> | 205 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBLAYERS'>BBLAYERS</ulink></filename> |
205 | variable in your <filename>conf/bblayers.conf</filename> file, which is found in the | 206 | variable in your <filename>conf/bblayers.conf</filename> file, which is found in the |
206 | <link linkend='yocto-project-build-directory'>Yocto Project Build Directory</link>. | 207 | <link linkend='build-directory'>build directory</link>. |
207 | The following example shows how to enable a layer named <filename>meta-mylayer</filename>: | 208 | The following example shows how to enable a layer named <filename>meta-mylayer</filename>: |
208 | <literallayout class='monospaced'> | 209 | <literallayout class='monospaced'> |
209 | LCONF_VERSION = "1" | 210 | LCONF_VERSION = "1" |
@@ -222,8 +223,8 @@ | |||
222 | <filename>BBLAYERS</filename> variable within the <filename>conf/bblayers.conf</filename> | 223 | <filename>BBLAYERS</filename> variable within the <filename>conf/bblayers.conf</filename> |
223 | file. | 224 | file. |
224 | During the processing of each <filename>conf/layer.conf</filename> file, BitBake adds the | 225 | During the processing of each <filename>conf/layer.conf</filename> file, BitBake adds the |
225 | recipes, classes and configurations contained within the particular layer to the Yocto | 226 | recipes, classes and configurations contained within the particular layer to the source |
226 | Project. | 227 | directory. |
227 | </para> | 228 | </para> |
228 | </section> | 229 | </section> |
229 | 230 | ||
@@ -267,7 +268,7 @@ | |||
267 | <para> | 268 | <para> |
268 | As an example, consider the main formfactor recipe and a corresponding formfactor | 269 | As an example, consider the main formfactor recipe and a corresponding formfactor |
269 | append file both from the | 270 | append file both from the |
270 | <link linkend='yocto-project-files'>Yocto Project Files</link>. | 271 | <link linkend='source-directory'>source directory</link>. |
271 | Here is the main formfactor recipe, which is named <filename>formfactor_0.0.bb</filename> and | 272 | Here is the main formfactor recipe, which is named <filename>formfactor_0.0.bb</filename> and |
272 | located in the meta layer at <filename>meta/recipes-bsp/formfactor</filename>: | 273 | located in the meta layer at <filename>meta/recipes-bsp/formfactor</filename>: |
273 | <literallayout class='monospaced'> | 274 | <literallayout class='monospaced'> |
@@ -450,7 +451,7 @@ | |||
450 | <title>Customizing Images</title> | 451 | <title>Customizing Images</title> |
451 | 452 | ||
452 | <para> | 453 | <para> |
453 | You can customize Yocto Project images to satisfy particular requirements. | 454 | You can customize images to satisfy particular requirements. |
454 | This section describes several methods and provides guidelines for each. | 455 | This section describes several methods and provides guidelines for each. |
455 | </para> | 456 | </para> |
456 | 457 | ||
@@ -552,13 +553,11 @@ | |||
552 | <filename>EXTRA_IMAGE_FEATURES</filename></title> | 553 | <filename>EXTRA_IMAGE_FEATURES</filename></title> |
553 | 554 | ||
554 | <para> | 555 | <para> |
555 | Ultimately users might want to add extra image features to the set used by | 556 | Ultimately users might want to add extra image features to the set by using the |
556 | Yocto Project with the | ||
557 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FEATURES'>IMAGE_FEATURES</ulink></filename> | 557 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FEATURES'>IMAGE_FEATURES</ulink></filename> |
558 | variable. | 558 | variable. |
559 | To create these features, the best reference is | 559 | To create these features, the best reference is |
560 | <filename>meta/classes/core-image.bbclass</filename>, which shows how the | 560 | <filename>meta/classes/core-image.bbclass</filename>, which shows how to achieve this. |
561 | Yocto Project achieves this. | ||
562 | In summary, the file looks at the contents of the | 561 | In summary, the file looks at the contents of the |
563 | <filename>IMAGE_FEATURES</filename> | 562 | <filename>IMAGE_FEATURES</filename> |
564 | variable and then maps that into a set of tasks or packages. | 563 | variable and then maps that into a set of tasks or packages. |
@@ -569,8 +568,8 @@ | |||
569 | with specialized image <filename>.bb</filename> files. | 568 | with specialized image <filename>.bb</filename> files. |
570 | You can also add more features by configuring the | 569 | You can also add more features by configuring the |
571 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_IMAGE_FEATURES'>EXTRA_IMAGE_FEATURES</ulink></filename> | 570 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_IMAGE_FEATURES'>EXTRA_IMAGE_FEATURES</ulink></filename> |
572 | variable in the <filename>local.conf</filename> file found in the Yocto Project | 571 | variable in the <filename>local.conf</filename> file found in the source directory |
573 | files located in the build directory. | 572 | located in the build directory. |
574 | </para> | 573 | </para> |
575 | 574 | ||
576 | <para> | 575 | <para> |
@@ -648,7 +647,7 @@ | |||
648 | <title>Adding a Package</title> | 647 | <title>Adding a Package</title> |
649 | 648 | ||
650 | <para> | 649 | <para> |
651 | To add a package into the Yocto Project you need to write a recipe for it. | 650 | To add a package you need to write a recipe for it. |
652 | Writing a recipe means creating a <filename>.bb</filename> file that sets some | 651 | Writing a recipe means creating a <filename>.bb</filename> file that sets some |
653 | variables. | 652 | variables. |
654 | For information on variables that are useful for recipes and for information about recipe naming | 653 | For information on variables that are useful for recipes and for information about recipe naming |
@@ -662,7 +661,7 @@ | |||
662 | whether someone else has written one already. | 661 | whether someone else has written one already. |
663 | OpenEmbedded is a good place to look as it has a wider scope and range of packages. | 662 | OpenEmbedded is a good place to look as it has a wider scope and range of packages. |
664 | Because the Yocto Project aims to be compatible with OpenEmbedded, most recipes | 663 | Because the Yocto Project aims to be compatible with OpenEmbedded, most recipes |
665 | you find there should work in Yocto Project. | 664 | you find there should work for you. |
666 | </para> | 665 | </para> |
667 | 666 | ||
668 | <para> | 667 | <para> |
@@ -1001,53 +1000,7 @@ | |||
1001 | </section> | 1000 | </section> |
1002 | 1001 | ||
1003 | <section id="platdev-newmachine"> | 1002 | <section id="platdev-newmachine"> |
1004 | <title>Porting the Yocto Project to a New Machine</title> | 1003 | <title>Adding a New Machine</title> |
1005 | |||
1006 | <!-- | ||
1007 | WRITER NOTES: | ||
1008 | |||
1009 | I had this chat with Richard: | ||
1010 | |||
1011 | scottrif: Terminology question: We speak of "New Machines" or "Adding a New Machine" | ||
1012 | in YP. Are "Machines" restricted to architectures? In poky/meta/conf/machine we have .conf | ||
1013 | files for the five architectures. What exactly does the term "Machine" mean? | ||
1014 | |||
1015 | RP: no, each architecture has multiple different machines. A "machine" can correspond | ||
1016 | to a particular reference board or hardware product | ||
1017 | we just have one reference machine per architecture | ||
1018 | We're a little vague sometimes as "machine" can refer to either an individual platform, | ||
1019 | or in some cases a set of different platforms with common structure | ||
1020 | (e.g. netbooks) | ||
1021 | |||
1022 | scottrif: So our reference machines we supply are the five qemu* machines? | ||
1023 | |||
1024 | RP: in oe-core, plus one "real" target in meta-yocto | ||
1025 | (per arch) | ||
1026 | |||
1027 | scottrif: I see four in meta-yocto/conf/machine. Shouldn't there be five if there is one | ||
1028 | "real" target per architecture? | ||
1029 | |||
1030 | RP: yes, we don't have one for x86_64 :/ | ||
1031 | |||
1032 | scottrif: I think it is a bit difficult to map our four poky/meta-yocto/conf/machines to one of our | ||
1033 | five architectures. Some have key words in there that identify the architecture but | ||
1034 | beagleboard and atom-pc don't. | ||
1035 | We have a section that describes adding a Machine Configuration file to Yocto and | ||
1036 | it states that TARGET_ARCH is one of the most important variables that need to be | ||
1037 | set in the .conf file. The four I am looking at don't have that variable. | ||
1038 | |||
1039 | RP: That has changed a little now. You need to include the appropriate tune file | ||
1040 | which will set it for you | ||
1041 | People had a tendency not to set all the right pieces so it got abstracted | ||
1042 | |||
1043 | scottrif: Got it. I see them in poky/meta/conf/machine/include. | ||
1044 | |||
1045 | SOME CONCLUSIONS: | ||
1046 | |||
1047 | I need to define the term machine. It is confusing. Then, this section needs to be cleared up | ||
1048 | so that there are some definite steps on how to do this. I need more detail here. | ||
1049 | |||
1050 | --> | ||
1051 | 1004 | ||
1052 | <para> | 1005 | <para> |
1053 | Adding a new machine to the Yocto Project is a straightforward process. | 1006 | Adding a new machine to the Yocto Project is a straightforward process. |
@@ -1060,7 +1013,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1060 | </para> | 1013 | </para> |
1061 | 1014 | ||
1062 | <para> | 1015 | <para> |
1063 | For a complete example that shows how to add a new machine to the Yocto Project, | 1016 | For a complete example that shows how to add a new machine, |
1064 | see the | 1017 | see the |
1065 | "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-bsp-appendix'>BSP Development Example</ulink>" | 1018 | "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-bsp-appendix'>BSP Development Example</ulink>" |
1066 | in Appendix A. | 1019 | in Appendix A. |
@@ -1072,7 +1025,8 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1072 | <para> | 1025 | <para> |
1073 | To add a machine configuration you need to add a <filename>.conf</filename> file | 1026 | To add a machine configuration you need to add a <filename>.conf</filename> file |
1074 | with details of the device being added to the <filename>conf/machine/</filename> file. | 1027 | with details of the device being added to the <filename>conf/machine/</filename> file. |
1075 | The name of the file determines the name the Yocto Project uses to reference the new machine. | 1028 | The name of the file determines the name the OpenEmbedded build system |
1029 | uses to reference the new machine. | ||
1076 | </para> | 1030 | </para> |
1077 | 1031 | ||
1078 | <para> | 1032 | <para> |
@@ -1110,12 +1064,12 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1110 | <title>Adding a Kernel for the Machine</title> | 1064 | <title>Adding a Kernel for the Machine</title> |
1111 | 1065 | ||
1112 | <para> | 1066 | <para> |
1113 | The Yocto Project needs to be able to build a kernel for the machine. | 1067 | The OpenEmbedded build system needs to be able to build a kernel for the machine. |
1114 | You need to either create a new kernel recipe for this machine, or extend an | 1068 | You need to either create a new kernel recipe for this machine, or extend an |
1115 | existing recipe. | 1069 | existing recipe. |
1116 | You can find several kernel examples in the | 1070 | You can find several kernel examples in the |
1117 | Yocto Project file's <filename>meta/recipes-kernel/linux</filename> | 1071 | source directory at <filename>meta/recipes-kernel/linux</filename> |
1118 | directory that you can use as references. | 1072 | that you can use as references. |
1119 | </para> | 1073 | </para> |
1120 | 1074 | ||
1121 | <para> | 1075 | <para> |
@@ -1153,8 +1107,8 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1153 | 1107 | ||
1154 | <para> | 1108 | <para> |
1155 | A formfactor configuration file provides information about the | 1109 | A formfactor configuration file provides information about the |
1156 | target hardware for which the Yocto Project is building and information that | 1110 | target hardware for which the image is being built and information that |
1157 | the Yocto Project cannot obtain from other sources such as the kernel. | 1111 | the build system cannot obtain from other sources such as the kernel. |
1158 | Some examples of information contained in a formfactor configuration file include | 1112 | Some examples of information contained in a formfactor configuration file include |
1159 | framebuffer orientation, whether or not the system has a keyboard, | 1113 | framebuffer orientation, whether or not the system has a keyboard, |
1160 | the positioning of the keyboard in relation to the screen, and | 1114 | the positioning of the keyboard in relation to the screen, and |
@@ -1162,9 +1116,9 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1162 | </para> | 1116 | </para> |
1163 | 1117 | ||
1164 | <para> | 1118 | <para> |
1165 | The Yocto Project uses reasonable defaults in most cases, but if customization is | 1119 | The build system uses reasonable defaults in most cases, but if customization is |
1166 | necessary you need to create a <filename>machconfig</filename> file | 1120 | necessary you need to create a <filename>machconfig</filename> file |
1167 | in the Yocto Project file's <filename>meta/recipes-bsp/formfactor/files</filename> | 1121 | in the <filename>meta/recipes-bsp/formfactor/files</filename> |
1168 | directory. | 1122 | directory. |
1169 | This directory contains directories for specific machines such as | 1123 | This directory contains directories for specific machines such as |
1170 | <filename>qemuarm</filename> and <filename>qemux86</filename>. | 1124 | <filename>qemuarm</filename> and <filename>qemux86</filename>. |
@@ -1237,7 +1191,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1237 | extended to support multiple libraries. | 1191 | extended to support multiple libraries. |
1238 | Many standard recipes are already extended and support multiple libraries. | 1192 | Many standard recipes are already extended and support multiple libraries. |
1239 | You can check in the <filename>meta/conf/multilib.conf</filename> | 1193 | You can check in the <filename>meta/conf/multilib.conf</filename> |
1240 | configuration file in the Yocto Project files directory to see how this is | 1194 | configuration file in the source directory to see how this is |
1241 | done using the <filename>BBCLASSEXTEND</filename> variable. | 1195 | done using the <filename>BBCLASSEXTEND</filename> variable. |
1242 | Eventually, all recipes will be covered and this list will be unneeded. | 1196 | Eventually, all recipes will be covered and this list will be unneeded. |
1243 | </para> | 1197 | </para> |
@@ -1266,7 +1220,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1266 | combination of multiple libraries you want to build. | 1220 | combination of multiple libraries you want to build. |
1267 | You accomplish this through your <filename>local.conf</filename> | 1221 | You accomplish this through your <filename>local.conf</filename> |
1268 | configuration file in the | 1222 | configuration file in the |
1269 | <link linkend='yocto-project-build-directory'>Yocto Project Build Directory</link>. | 1223 | <link linkend='build-directory'>build directory</link>. |
1270 | An example configuration would be as follows: | 1224 | An example configuration would be as follows: |
1271 | <literallayout class='monospaced'> | 1225 | <literallayout class='monospaced'> |
1272 | MACHINE = "qemux86-64" | 1226 | MACHINE = "qemux86-64" |
@@ -1311,7 +1265,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1311 | <listitem><para>A unique architecture is defined for the Multilib packages, | 1265 | <listitem><para>A unique architecture is defined for the Multilib packages, |
1312 | along with creating a unique deploy folder under | 1266 | along with creating a unique deploy folder under |
1313 | <filename>tmp/deploy/rpm</filename> in the | 1267 | <filename>tmp/deploy/rpm</filename> in the |
1314 | <link linkend='yocto-project-build-directory'>Yocto Project Build Directory</link>. | 1268 | <link linkend='build-directory'>build directory</link>. |
1315 | For example, consider <filename>lib32</filename> in a | 1269 | For example, consider <filename>lib32</filename> in a |
1316 | <filename>qemux86-64</filename> image. | 1270 | <filename>qemux86-64</filename> image. |
1317 | The possible architectures in the system are "all", "qemux86_64", | 1271 | The possible architectures in the system are "all", "qemux86_64", |
@@ -1386,7 +1340,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1386 | To use the <filename>menuconfig</filename> tool in the Yocto Project development | 1340 | To use the <filename>menuconfig</filename> tool in the Yocto Project development |
1387 | environment, you must build the tool using BitBake. | 1341 | environment, you must build the tool using BitBake. |
1388 | The following commands build and invoke <filename>menuconfig</filename> assuming the | 1342 | The following commands build and invoke <filename>menuconfig</filename> assuming the |
1389 | Yocto Project files top-level directory is <filename>~/poky</filename>: | 1343 | source directory top-level folder is <filename>~/poky</filename>: |
1390 | <literallayout class='monospaced'> | 1344 | <literallayout class='monospaced'> |
1391 | $ cd ~/poky | 1345 | $ cd ~/poky |
1392 | $ source oe-init-build-env | 1346 | $ source oe-init-build-env |
@@ -1426,7 +1380,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1426 | Where do you put your configuration files? | 1380 | Where do you put your configuration files? |
1427 | You can place these configuration files in the same area pointed to by | 1381 | You can place these configuration files in the same area pointed to by |
1428 | <filename>SRC_URI</filename>. | 1382 | <filename>SRC_URI</filename>. |
1429 | The Yocto Project build process will pick up the configuration and add it to the | 1383 | The OpenEmbedded build system will pick up the configuration and add it to the |
1430 | kernel's configuration. | 1384 | kernel's configuration. |
1431 | For example, assume you add the following to your | 1385 | For example, assume you add the following to your |
1432 | <filename>linux-yocto_3.0.bbappend</filename> file: | 1386 | <filename>linux-yocto_3.0.bbappend</filename> file: |
@@ -1608,7 +1562,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1608 | <para> | 1562 | <para> |
1609 | Sometimes a package name you are using might exist under an alias or as a similarly named | 1563 | Sometimes a package name you are using might exist under an alias or as a similarly named |
1610 | package in a different distribution. | 1564 | package in a different distribution. |
1611 | The Yocto Project implements a <filename>distro_check</filename> | 1565 | The OpenEmbedded build system implements a <filename>distro_check</filename> |
1612 | task that automatically connects to major distributions | 1566 | task that automatically connects to major distributions |
1613 | and checks for these situations. | 1567 | and checks for these situations. |
1614 | If the package exists under a different name in a different distribution, you get a | 1568 | If the package exists under a different name in a different distribution, you get a |
@@ -1631,17 +1585,17 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1631 | 1585 | ||
1632 | <para> | 1586 | <para> |
1633 | If you have more than one distribution alias, separate them with a space. | 1587 | If you have more than one distribution alias, separate them with a space. |
1634 | Note that the Yocto Project currently automatically checks the | 1588 | Note that the build system currently automatically checks the |
1635 | Fedora, OpenSuSE, Debian, Ubuntu, | 1589 | Fedora, OpenSuSE, Debian, Ubuntu, |
1636 | and Mandriva distributions for source package recipes without having to specify them | 1590 | and Mandriva distributions for source package recipes without having to specify them |
1637 | using the <filename>DISTRO_PN_ALIAS</filename> variable. | 1591 | using the <filename>DISTRO_PN_ALIAS</filename> variable. |
1638 | For example, the following command generates a report that lists the Linux distributions | 1592 | For example, the following command generates a report that lists the Linux distributions |
1639 | that include the sources for each of the Yocto Project recipes. | 1593 | that include the sources for each of the recipes. |
1640 | <literallayout class='monospaced'> | 1594 | <literallayout class='monospaced'> |
1641 | $ bitbake world -f -c distro_check | 1595 | $ bitbake world -f -c distro_check |
1642 | </literallayout> | 1596 | </literallayout> |
1643 | The results are stored in the <filename>build/tmp/log/distro_check-${DATETIME}.results</filename> | 1597 | The results are stored in the <filename>build/tmp/log/distro_check-${DATETIME}.results</filename> |
1644 | file found in the Yocto Project files area. | 1598 | file found in the source directory. |
1645 | </para> | 1599 | </para> |
1646 | </section> | 1600 | </section> |
1647 | 1601 | ||
@@ -1649,18 +1603,18 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1649 | <title>Building Software from an External Source</title> | 1603 | <title>Building Software from an External Source</title> |
1650 | 1604 | ||
1651 | <para> | 1605 | <para> |
1652 | By default, the Yocto Project build system does its work from within the | 1606 | By default, the OpenEmbedded build system does its work from within the |
1653 | <link linkend='yocto-project-build-directory'>Yocto Project Build Directory</link>. | 1607 | <link linkend='build-directory'>build directory</link>. |
1654 | The build process involves fetching the source files, unpacking them, and then patching them | 1608 | The build process involves fetching the source files, unpacking them, and then patching them |
1655 | if necessary before the build takes place. | 1609 | if necessary before the build takes place. |
1656 | </para> | 1610 | </para> |
1657 | 1611 | ||
1658 | <para> | 1612 | <para> |
1659 | Situations exist where you might want to build software from source files that are external to | 1613 | Situations exist where you might want to build software from source files that are external to |
1660 | and thus outside of the <link linkend='yocto-project-files'>Yocto Project Files</link>. | 1614 | and thus outside of the <link linkend='source-directory'>source directory</link>. |
1661 | For example, suppose you have a project that includes a new BSP with a heavily customized | 1615 | For example, suppose you have a project that includes a new BSP with a heavily customized |
1662 | kernel, a very minimal image, and some new user-space recipes. | 1616 | kernel, a very minimal image, and some new user-space recipes. |
1663 | And, you want to minimize the exposure to the Yocto Project build system to the | 1617 | And, you want to minimize the exposure to the build system to the |
1664 | development team so that they can focus on their project and maintain everyone's workflow | 1618 | development team so that they can focus on their project and maintain everyone's workflow |
1665 | as much as possible. | 1619 | as much as possible. |
1666 | In this case, you want a kernel source directory on the development machine where the | 1620 | In this case, you want a kernel source directory on the development machine where the |
@@ -1829,7 +1783,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1829 | <para> | 1783 | <para> |
1830 | A suitable GDB cross-binary is required that runs on your host computer but | 1784 | A suitable GDB cross-binary is required that runs on your host computer but |
1831 | also knows about the the ABI of the remote target. | 1785 | also knows about the the ABI of the remote target. |
1832 | You can get this binary from the the Yocto Project meta-toolchain. | 1786 | You can get this binary from the meta-toolchain. |
1833 | Here is an example: | 1787 | Here is an example: |
1834 | <literallayout class='monospaced'> | 1788 | <literallayout class='monospaced'> |
1835 | /usr/local/poky/eabi-glibc/arm/bin/arm-poky-linux-gnueabi-gdb | 1789 | /usr/local/poky/eabi-glibc/arm/bin/arm-poky-linux-gnueabi-gdb |
@@ -1839,7 +1793,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1839 | </para> | 1793 | </para> |
1840 | 1794 | ||
1841 | <para> | 1795 | <para> |
1842 | Alternatively, the Yocto Project can build the <filename>gdb-cross</filename> binary. | 1796 | Alternatively, you can use BitBake to build the <filename>gdb-cross</filename> binary. |
1843 | Here is an example: | 1797 | Here is an example: |
1844 | <literallayout class='monospaced'> | 1798 | <literallayout class='monospaced'> |
1845 | $ bitbake gdb-cross | 1799 | $ bitbake gdb-cross |
@@ -1871,13 +1825,14 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1871 | </para> | 1825 | </para> |
1872 | 1826 | ||
1873 | <para> | 1827 | <para> |
1874 | Alternatively, Yocto Project can build a custom directory of files for a specific | 1828 | Alternatively, the OpenEmbedded build system can build a custom directory of files |
1829 | for a specific | ||
1875 | debugging purpose by reusing its <filename>tmp/rootfs</filename> directory. | 1830 | debugging purpose by reusing its <filename>tmp/rootfs</filename> directory. |
1876 | This directory contains the contents of the last built image. | 1831 | This directory contains the contents of the last built image. |
1877 | This process assumes two things: | 1832 | This process assumes two things: |
1878 | <itemizedlist> | 1833 | <itemizedlist> |
1879 | <listitem><para>The image running on the target was the last image to | 1834 | <listitem><para>The image running on the target was the last image to |
1880 | be built by the Yocto Project.</para></listitem> | 1835 | be built.</para></listitem> |
1881 | <listitem><para>The package (<filename>foo</filename> in the following | 1836 | <listitem><para>The package (<filename>foo</filename> in the following |
1882 | example) that contains the inferior binary to be debugged has been built | 1837 | example) that contains the inferior binary to be debugged has been built |
1883 | without optimization and has debugging information available.</para></listitem> | 1838 | without optimization and has debugging information available.</para></listitem> |
@@ -1975,8 +1930,8 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1975 | bottlenecks in both userspace software and in the kernel. | 1930 | bottlenecks in both userspace software and in the kernel. |
1976 | This profiler provides answers to questions like "Which functions does my application spend | 1931 | This profiler provides answers to questions like "Which functions does my application spend |
1977 | the most time in when doing X?" | 1932 | the most time in when doing X?" |
1978 | Because the Yocto Project is well integrated with OProfile, it makes profiling applications on target | 1933 | Because the OpenEmbedded build system is well integrated with OProfile, it makes profiling |
1979 | hardware straightforward. | 1934 | applications on target hardware straightforward. |
1980 | </para> | 1935 | </para> |
1981 | 1936 | ||
1982 | <para> | 1937 | <para> |
@@ -1994,7 +1949,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
1994 | For successful call graph analysis, the binaries must preserve the frame | 1949 | For successful call graph analysis, the binaries must preserve the frame |
1995 | pointer register and should also be compiled with the | 1950 | pointer register and should also be compiled with the |
1996 | <filename>-fno-omit-framepointer</filename> flag. | 1951 | <filename>-fno-omit-framepointer</filename> flag. |
1997 | In the Yocto Project you can achieve this by setting the | 1952 | You can achieve this by setting the |
1998 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-SELECTED_OPTIMIZATION'>SELECTED_OPTIMIZATION</ulink></filename> | 1953 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-SELECTED_OPTIMIZATION'>SELECTED_OPTIMIZATION</ulink></filename> |
1999 | variable to | 1954 | variable to |
2000 | <filename>-fexpensive-optimizations -fno-omit-framepointer -frename-registers -O2</filename>. | 1955 | <filename>-fexpensive-optimizations -fno-omit-framepointer -frename-registers -O2</filename>. |
@@ -2036,7 +1991,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
2036 | <note> | 1991 | <note> |
2037 | To profile the kernel, you would specify the | 1992 | To profile the kernel, you would specify the |
2038 | <filename>--vmlinux=/path/to/vmlinux</filename> option. | 1993 | <filename>--vmlinux=/path/to/vmlinux</filename> option. |
2039 | The <filename>vmlinux</filename> file is usually in the Yocto Project file's | 1994 | The <filename>vmlinux</filename> file is usually in the source directory in the |
2040 | <filename>/boot/</filename> directory and must match the running kernel. | 1995 | <filename>/boot/</filename> directory and must match the running kernel. |
2041 | </note> | 1996 | </note> |
2042 | </para> | 1997 | </para> |
@@ -2079,7 +2034,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
2079 | </para> | 2034 | </para> |
2080 | 2035 | ||
2081 | <para> | 2036 | <para> |
2082 | Even though the Yocto Project usually includes all needed patches on the target device, you | 2037 | Even though the source directory usually includes all needed patches on the target device, you |
2083 | might find you need other OProfile patches for recent OProfileUI features. | 2038 | might find you need other OProfile patches for recent OProfileUI features. |
2084 | If so, see the <ulink url='&YOCTO_GIT_URL;/cgit.cgi/oprofileui/tree/README'> | 2039 | If so, see the <ulink url='&YOCTO_GIT_URL;/cgit.cgi/oprofileui/tree/README'> |
2085 | OProfileUI README</ulink> for the most recent information. | 2040 | OProfileUI README</ulink> for the most recent information. |
@@ -2142,18 +2097,18 @@ so that there are some definite steps on how to do this. I need more detail her | |||
2142 | </para> | 2097 | </para> |
2143 | 2098 | ||
2144 | <para> | 2099 | <para> |
2145 | Downloaded archives reside in the Yocto Project's build directory in | 2100 | Downloaded archives reside in the build directory in |
2146 | <filename>/tmp</filename> and are cleared up when they are no longer in use. | 2101 | <filename>/tmp</filename> and are cleared up when they are no longer in use. |
2147 | </para> | 2102 | </para> |
2148 | 2103 | ||
2149 | <para> | 2104 | <para> |
2150 | If you wish to perform kernel profiling, you need to be sure | 2105 | If you wish to perform kernel profiling, you need to be sure |
2151 | a <filename>vmlinux</filename> file that matches the running kernel is available. | 2106 | a <filename>vmlinux</filename> file that matches the running kernel is available. |
2152 | In the Yocto Project, that file is usually located in | 2107 | In the source directory, that file is usually located in |
2153 | <filename>/boot/vmlinux-KERNELVERSION</filename>, where | 2108 | <filename>/boot/vmlinux-KERNELVERSION</filename>, where |
2154 | <filename>KERNEL-version</filename> is the version of the kernel. | 2109 | <filename>KERNEL-version</filename> is the version of the kernel. |
2155 | The Yocto Project generates separate <filename>vmlinux</filename> packages for each kernel | 2110 | The OpenEmbedded build system generates separate <filename>vmlinux</filename> |
2156 | it builds. | 2111 | packages for each kernel it builds. |
2157 | Thus, it should just be a question of making sure a matching package is | 2112 | Thus, it should just be a question of making sure a matching package is |
2158 | installed (e.g. <filename>opkg install kernel-vmlinux</filename>. | 2113 | installed (e.g. <filename>opkg install kernel-vmlinux</filename>. |
2159 | The files are automatically installed into development and profiling images | 2114 | The files are automatically installed into development and profiling images |
@@ -2169,7 +2124,7 @@ so that there are some definite steps on how to do this. I need more detail her | |||
2169 | on the viewer system. | 2124 | on the viewer system. |
2170 | The "<link linkend='platdev-gdb-remotedebug-launch-gdb'>Launching GDB on the Host Computer</link>" | 2125 | The "<link linkend='platdev-gdb-remotedebug-launch-gdb'>Launching GDB on the Host Computer</link>" |
2171 | section covers how to create such a directory with | 2126 | section covers how to create such a directory with |
2172 | the Yocto Project and how to use the OProfileUI Settings dialog to specify the location. | 2127 | the source directory and how to use the OProfileUI Settings dialog to specify the location. |
2173 | If you specify the directory, it will be used when the file checksums | 2128 | If you specify the directory, it will be used when the file checksums |
2174 | match those on the system you are profiling. | 2129 | match those on the system you are profiling. |
2175 | </para> | 2130 | </para> |
diff --git a/documentation/dev-manual/dev-manual-intro.xml b/documentation/dev-manual/dev-manual-intro.xml index fd35e283c2..7caa6eb720 100644 --- a/documentation/dev-manual/dev-manual-intro.xml +++ b/documentation/dev-manual/dev-manual-intro.xml | |||
@@ -18,7 +18,8 @@ | |||
18 | sources where you can find more detail. | 18 | sources where you can find more detail. |
19 | For example, detailed information on Git, repositories and open source in general | 19 | For example, detailed information on Git, repositories and open source in general |
20 | can be found in many places. | 20 | can be found in many places. |
21 | Another example is how to get set up to use the Yocto Project, which our Yocto Project Quick Start covers. | 21 | Another example is how to get set up to use the Yocto Project, which our Yocto Project |
22 | Quick Start covers. | ||
22 | </para> | 23 | </para> |
23 | 24 | ||
24 | <para> | 25 | <para> |
@@ -44,13 +45,7 @@ | |||
44 | applications.</para></listitem> | 45 | applications.</para></listitem> |
45 | <listitem><para>An overview and understanding of the emulation environment used with | 46 | <listitem><para>An overview and understanding of the emulation environment used with |
46 | the Yocto Project (QEMU).</para></listitem> | 47 | the Yocto Project (QEMU).</para></listitem> |
47 | <!-- <listitem><para>A discussion of target-level analysis techniques, tools, tips, | 48 | <listitem><para>An understanding of basic kernel architecture and concepts.</para></listitem> |
48 | and tricks.</para></listitem> | ||
49 | <listitem><para>Considerations for deploying your final product.</para></listitem> --> | ||
50 | <listitem><para>An understanding of basic kernel architecture and | ||
51 | concepts.</para></listitem> | ||
52 | <!-- <listitem><para>Information that will help you migrate an existing project to the | ||
53 | Yocto Project development environment.</para></listitem> --> | ||
54 | <listitem><para>Many references to other sources of related information.</para></listitem> | 49 | <listitem><para>Many references to other sources of related information.</para></listitem> |
55 | </itemizedlist> | 50 | </itemizedlist> |
56 | </para> | 51 | </para> |
@@ -97,7 +92,7 @@ | |||
97 | <listitem><para><emphasis> | 92 | <listitem><para><emphasis> |
98 | <ulink url='&YOCTO_DOCS_REF_URL;'> | 93 | <ulink url='&YOCTO_DOCS_REF_URL;'> |
99 | The Yocto Project Reference Manual</ulink>:</emphasis> This manual is a reference | 94 | The Yocto Project Reference Manual</ulink>:</emphasis> This manual is a reference |
100 | guide to the Yocto Project build component known as "Poky." | 95 | guide to the OpenEmbedded build system known as "Poky." |
101 | The manual also contains a reference chapter on Board Support Package (BSP) | 96 | The manual also contains a reference chapter on Board Support Package (BSP) |
102 | layout.</para></listitem> | 97 | layout.</para></listitem> |
103 | <listitem><para><emphasis> | 98 | <listitem><para><emphasis> |
@@ -117,7 +112,7 @@ | |||
117 | some work flow examples.</para></listitem> | 112 | some work flow examples.</para></listitem> |
118 | <listitem><para><emphasis> | 113 | <listitem><para><emphasis> |
119 | <ulink url='http://www.youtube.com/watch?v=3ZlOu-gLsh0'> | 114 | <ulink url='http://www.youtube.com/watch?v=3ZlOu-gLsh0'> |
120 | Yocto Eclipse Plug-in</ulink>:</emphasis> A step-by-step instructional video that | 115 | Eclipse IDE Yocto Plug-in</ulink>:</emphasis> A step-by-step instructional video that |
121 | demonstrates how an application developer uses Yocto Plug-in features within | 116 | demonstrates how an application developer uses Yocto Plug-in features within |
122 | the Eclipse IDE.</para></listitem> | 117 | the Eclipse IDE.</para></listitem> |
123 | <listitem><para><emphasis> | 118 | <listitem><para><emphasis> |
@@ -158,22 +153,26 @@ | |||
158 | <listitem><para><emphasis>Internet Relay Chat (IRC):</emphasis> | 153 | <listitem><para><emphasis>Internet Relay Chat (IRC):</emphasis> |
159 | Two IRC channels on freenode are available | 154 | Two IRC channels on freenode are available |
160 | for Yocto Project and Poky discussions: <filename>#yocto</filename> and | 155 | for Yocto Project and Poky discussions: <filename>#yocto</filename> and |
161 | <filename>#poky</filename>.</para></listitem> | 156 | <filename>#poky</filename>, respectively.</para></listitem> |
162 | <listitem><para><emphasis> | 157 | <listitem><para><emphasis> |
163 | <ulink url='&OH_HOME_URL;'>OpenedHand</ulink>:</emphasis> | 158 | <ulink url='&OH_HOME_URL;'>OpenedHand</ulink>:</emphasis> |
164 | The company where the Yocto Project build system Poky was first developed. | 159 | The company that initially developed the Poky project, which is the basis |
165 | OpenedHand has since been acquired by Intel Corporation.</para></listitem> | 160 | for the OpenEmbedded build system used by the Yocto Project. |
161 | OpenedHand was acquired by Intel Corporation in 2008.</para></listitem> | ||
166 | <listitem><para><emphasis> | 162 | <listitem><para><emphasis> |
167 | <ulink url='http://www.intel.com/'>Intel Corporation</ulink>:</emphasis> | 163 | <ulink url='http://www.intel.com/'>Intel Corporation</ulink>:</emphasis> |
168 | The company that acquired OpenedHand in 2008 and continues development on the | 164 | A multinational semiconductor chip manufacturer company whose Software and |
169 | Yocto Project.</para></listitem> | 165 | Services Group created and supports the Yocto Project. |
166 | Intel acquired OpenedHand in 2008.</para></listitem> | ||
170 | <listitem><para><emphasis> | 167 | <listitem><para><emphasis> |
171 | <ulink url='&OE_HOME_URL;'>OpenEmbedded</ulink>:</emphasis> | 168 | <ulink url='&OE_HOME_URL;'>OpenEmbedded</ulink>:</emphasis> |
172 | The upstream, generic, embedded distribution the Yocto Project build system (Poky) derives | 169 | The build system used by the Yocto Project. |
173 | from and to which it contributes.</para></listitem> | 170 | This project is the upstream, generic, embedded distribution from which the Yocto |
171 | Project derives its build system (Poky) from and to which it contributes.</para></listitem> | ||
174 | <listitem><para><emphasis> | 172 | <listitem><para><emphasis> |
175 | <ulink url='http://developer.berlios.de/projects/bitbake/'> | 173 | <ulink url='http://developer.berlios.de/projects/bitbake/'> |
176 | BitBake</ulink>:</emphasis> The tool used to process Yocto Project metadata.</para></listitem> | 174 | BitBake</ulink>:</emphasis> The tool used by the OpenEmbedded build systm |
175 | to process project metadata.</para></listitem> | ||
177 | <listitem><para><emphasis> | 176 | <listitem><para><emphasis> |
178 | <ulink url='http://bitbake.berlios.de/manual/'> | 177 | <ulink url='http://bitbake.berlios.de/manual/'> |
179 | BitBake User Manual</ulink>:</emphasis> A comprehensive guide to the BitBake tool. | 178 | BitBake User Manual</ulink>:</emphasis> A comprehensive guide to the BitBake tool. |
diff --git a/documentation/dev-manual/dev-manual-kernel-appendix.xml b/documentation/dev-manual/dev-manual-kernel-appendix.xml index 0f69ef1067..04db02a7a6 100644 --- a/documentation/dev-manual/dev-manual-kernel-appendix.xml +++ b/documentation/dev-manual/dev-manual-kernel-appendix.xml | |||
@@ -12,17 +12,6 @@ | |||
12 | or even altering the source code itself. | 12 | or even altering the source code itself. |
13 | This appendix presents simple examples that modify the kernel source code, | 13 | This appendix presents simple examples that modify the kernel source code, |
14 | change the kernel configuration, and add a kernel source recipe. | 14 | change the kernel configuration, and add a kernel source recipe. |
15 | <!-- [WRITER'S NOTE: I might want to work in information about applying a local | ||
16 | change to a kernel layer and also pushing a change upstream into the tree] | ||
17 | <orderedlist> | ||
18 | <listitem><para>Iteratively determine and set kernel configurations and make | ||
19 | kernel recipe changes.</para></listitem> | ||
20 | <listitem><para>Apply your configuration changes to your local kernel layer. | ||
21 | </para></listitem> | ||
22 | <listitem><para>Push your configuration and recipe changes upstream into the | ||
23 | Yocto Project source repositories to make them available to the community. | ||
24 | </para></listitem> | ||
25 | </orderedlist> --> | ||
26 | </para> | 15 | </para> |
27 | 16 | ||
28 | <section id='modifying-the-kernel-source-code'> | 17 | <section id='modifying-the-kernel-source-code'> |
@@ -45,18 +34,17 @@ | |||
45 | Briefly, you need the following: | 34 | Briefly, you need the following: |
46 | <itemizedlist> | 35 | <itemizedlist> |
47 | <listitem><para>A local | 36 | <listitem><para>A local |
48 | <link linkend='yocto-project-files'>Yocto Project Files</link> | 37 | <link linkend='source-directory'>source directory</link> for the |
49 | Git repository</para></listitem> | 38 | poky Git repository</para></listitem> |
50 | <listitem><para>The | 39 | <listitem><para>Local copies of the |
51 | <link linkend='poky-extras-repo'><filename>poky-extras</filename></link> | 40 | <link linkend='poky-extras-repo'><filename>poky-extras</filename></link> |
52 | Git repository placed within the local Yocto Project files Git | 41 | Git repository placed within the source directory.</para></listitem> |
53 | repository</para></listitem> | ||
54 | <listitem><para>A bare clone of the | 42 | <listitem><para>A bare clone of the |
55 | <link linkend='local-kernel-files'>Linux Yocto Kernel</link> upstream Git | 43 | <link linkend='local-kernel-files'>Linux Yocto Kernel</link> upstream Git |
56 | repository to which you want to push your modifications. | 44 | repository to which you want to push your modifications. |
57 | </para></listitem> | 45 | </para></listitem> |
58 | <listitem><para>A copy of that bare clone in which you make your source | 46 | <listitem><para>A copy of that bare clone in which you make your source |
59 | modifcations</para></listitem> | 47 | modifications</para></listitem> |
60 | </itemizedlist> | 48 | </itemizedlist> |
61 | </para> | 49 | </para> |
62 | 50 | ||
@@ -78,18 +66,19 @@ | |||
78 | <para> | 66 | <para> |
79 | Here is a brief description of the four areas: | 67 | Here is a brief description of the four areas: |
80 | <itemizedlist> | 68 | <itemizedlist> |
81 | <listitem><para><emphasis>Local Yocto Project Files Git Repository:</emphasis> | 69 | <listitem><para><emphasis>Local Source Directory:</emphasis> |
82 | This area contains all the metadata that supports building images in the | 70 | This area contains all the metadata that supports building images |
83 | Yocto Project build environment - the local Yocto Project files. | 71 | using the OpenEmbedded build system. |
84 | In this example, the local Yocto Project files Git repository also | 72 | In this example, the source directory also |
85 | contains the build directory, which contains the configuration directory | 73 | contains the build directory, which contains the configuration directory |
86 | that lets you control the build. | 74 | that lets you control the build. |
87 | In this example, the repository also contains the | 75 | Also in this example, the source directory contains local copies of the |
88 | <filename>poky-extras</filename> Git repository.</para> | 76 | <filename>poky-extras</filename> Git repository.</para> |
89 | <para>See the bulleted item | 77 | <para>See the bulleted item |
90 | "<link linkend='local-yp-release'>Yocto Project Release</link>" | 78 | "<link linkend='local-yp-release'>Yocto Project Release</link>" |
91 | for information on how to get these files.</para></listitem> | 79 | for information on how to get these files on your local system.</para></listitem> |
92 | <listitem><para><emphasis><filename>poky-extras</filename> Git Repository:</emphasis> | 80 | <listitem><para><emphasis>Local copies of the<filename>poky-extras</filename> |
81 | Git Repository:</emphasis> | ||
93 | This area contains the <filename>meta-kernel-dev</filename> layer, | 82 | This area contains the <filename>meta-kernel-dev</filename> layer, |
94 | which is where you make changes that append the kernel build recipes. | 83 | which is where you make changes that append the kernel build recipes. |
95 | You edit <filename>.bbappend</filename> files to locate your | 84 | You edit <filename>.bbappend</filename> files to locate your |
@@ -133,23 +122,23 @@ | |||
133 | </section> | 122 | </section> |
134 | 123 | ||
135 | <section id='setting-up-the-local-yocto-project-files-git-repository'> | 124 | <section id='setting-up-the-local-yocto-project-files-git-repository'> |
136 | <title>Setting Up the Local Yocto Project Files Git Repository</title> | 125 | <title>Setting Up the Local Source Directory</title> |
137 | 126 | ||
138 | <para> | 127 | <para> |
139 | You can get the local Yocto Project files through tarball extraction or by | 128 | You can set up the source directory through tarball extraction or by |
140 | cloning the <filename>poky</filename> Git repository. | 129 | cloning the <filename>poky</filename> Git repository. |
141 | This example uses <filename>poky</filename> as the root directory of the | 130 | This example uses <filename>poky</filename> as the root directory of the |
142 | local Yocto Project files Git repository. | 131 | local source directory. |
143 | See the bulleted item | 132 | See the bulleted item |
144 | "<link linkend='local-yp-release'>Yocto Project Release</link>" | 133 | "<link linkend='local-yp-release'>Yocto Project Release</link>" |
145 | for information on how to get these files. | 134 | for information on how to get these files. |
146 | </para> | 135 | </para> |
147 | 136 | ||
148 | <para> | 137 | <para> |
149 | Once you have the repository set up, | 138 | Once you have source directory set up, |
150 | you have many development branches from which you can work. | 139 | you have many development branches from which you can work. |
151 | From inside the repository you can see the branch names and the tag names used | 140 | From inside the local repository you can see the branch names and the tag names used |
152 | in the Git repository using either of the following two commands: | 141 | in the upstream Git repository by using either of the following commands: |
153 | <literallayout class='monospaced'> | 142 | <literallayout class='monospaced'> |
154 | $ cd poky | 143 | $ cd poky |
155 | $ git branch -a | 144 | $ git branch -a |
@@ -168,15 +157,15 @@ | |||
168 | </section> | 157 | </section> |
169 | 158 | ||
170 | <section id='setting-up-the-poky-extras-git-repository'> | 159 | <section id='setting-up-the-poky-extras-git-repository'> |
171 | <title>Setting Up the poky-extras Git Repository</title> | 160 | <title>Setting Up the Local poky-extras Git Repository</title> |
172 | 161 | ||
173 | <para> | 162 | <para> |
174 | This example places the <filename>poky-extras</filename> Git repository inside | 163 | This example creates a local copy of the <filename>poky-extras</filename> Git |
175 | of <filename>poky</filename>. | 164 | repository inside the <filename>poky</filename> source directory. |
176 | See the bulleted item | 165 | See the bulleted item "<link linkend='poky-extras-repo'>The |
177 | "<link linkend='poky-extras-repo'>The | ||
178 | <filename>poky-extras</filename> Git Repository</link>" | 166 | <filename>poky-extras</filename> Git Repository</link>" |
179 | for information on how to get the <filename>poky-extras</filename> repository. | 167 | for information on how to set up a local copy of the |
168 | <filename>poky-extras</filename> repository. | ||
180 | </para> | 169 | </para> |
181 | 170 | ||
182 | <para> | 171 | <para> |
@@ -369,7 +358,7 @@ | |||
369 | <para> | 358 | <para> |
370 | Once the source code has been modified, you need to use Git to push the changes to | 359 | Once the source code has been modified, you need to use Git to push the changes to |
371 | the bare clone. | 360 | the bare clone. |
372 | If you do not push the changes, then the Yocto Project build system will not pick | 361 | If you do not push the changes, then the OpenEmbedded build system will not pick |
373 | up the changed source files. | 362 | up the changed source files. |
374 | </para> | 363 | </para> |
375 | 364 | ||
@@ -386,7 +375,7 @@ | |||
386 | 375 | ||
387 | <para> | 376 | <para> |
388 | At this point, the source has been changed and pushed. | 377 | At this point, the source has been changed and pushed. |
389 | The example now defines some variables used by the Yocto Project build system | 378 | The example now defines some variables used by the OpenEmbedded build system |
390 | to locate your kernel source. | 379 | to locate your kernel source. |
391 | You essentially need to identify where to find the kernel recipe and the changed source code. | 380 | You essentially need to identify where to find the kernel recipe and the changed source code. |
392 | You also need to be sure some basic configurations are in place that identify the | 381 | You also need to be sure some basic configurations are in place that identify the |
@@ -447,12 +436,6 @@ | |||
447 | <literallayout class='monospaced'> | 436 | <literallayout class='monospaced'> |
448 | KSRC_linux_yocto_3_2 ?= "/home/scottrif/linux-yocto-3.2.git" | 437 | KSRC_linux_yocto_3_2 ?= "/home/scottrif/linux-yocto-3.2.git" |
449 | </literallayout></para></listitem> | 438 | </literallayout></para></listitem> |
450 | <!-- <listitem><para><emphasis>Specify the Kernel Machine:</emphasis> Also in the | ||
451 | <filename>linux-yocto_3.2.bbappend</filename> file, you need to specify | ||
452 | the kernel machine with the following statement: | ||
453 | <literallayout class='monospaced'> | ||
454 | KMACHINE_qemux86 = "standard/default/common-pc/base" | ||
455 | </literallayout></para></listitem> --> | ||
456 | </itemizedlist> | 439 | </itemizedlist> |
457 | </para> | 440 | </para> |
458 | 441 | ||
@@ -494,7 +477,7 @@ | |||
494 | $ bitbake -c cleanall linux-yocto | 477 | $ bitbake -c cleanall linux-yocto |
495 | </literallayout></para> | 478 | </literallayout></para> |
496 | <para><note>Never remove any files by hand from the <filename>tmp/deploy</filename> | 479 | <para><note>Never remove any files by hand from the <filename>tmp/deploy</filename> |
497 | directory insided the local Yocto Project files build directory. | 480 | directory insided the build directory. |
498 | Always use the BitBake <filename>cleanall</filename> task to clear | 481 | Always use the BitBake <filename>cleanall</filename> task to clear |
499 | out previous builds.</note></para></listitem> | 482 | out previous builds.</note></para></listitem> |
500 | <listitem><para>Next, build the kernel image using this command: | 483 | <listitem><para>Next, build the kernel image using this command: |
@@ -539,7 +522,7 @@ | |||
539 | <para> | 522 | <para> |
540 | If you took the time to work through the example that modifies the kernel source code | 523 | If you took the time to work through the example that modifies the kernel source code |
541 | in "<link linkend='modifying-the-kernel-source-code'>Modifying the Kernel Source | 524 | in "<link linkend='modifying-the-kernel-source-code'>Modifying the Kernel Source |
542 | Code</link>" you should already have the Yocto Project files set up on your | 525 | Code</link>" you should already have the source directory set up on your |
543 | host machine. | 526 | host machine. |
544 | If this is the case, go to the next section, which is titled | 527 | If this is the case, go to the next section, which is titled |
545 | "<link linkend='examining-the-default-config-smp-behavior'>Examining the Default | 528 | "<link linkend='examining-the-default-config-smp-behavior'>Examining the Default |
@@ -548,21 +531,21 @@ | |||
548 | </para> | 531 | </para> |
549 | 532 | ||
550 | <para> | 533 | <para> |
551 | If you don't have the Yocto Project files established on your system, | 534 | If you don't have the source directory established on your system, |
552 | you can get them through tarball extraction or by | 535 | you can get them through tarball extraction or by |
553 | cloning the <filename>poky</filename> Git repository. | 536 | cloning the <filename>poky</filename> Git repository. |
554 | This example uses <filename>poky</filename> as the root directory of the | 537 | This example uses <filename>poky</filename> as the root directory of the |
555 | local <link linkend='yocto-project-files'>Yocto Project Files</link> Git repository. | 538 | <link linkend='source-directory'>source directory</link>. |
556 | See the bulleted item | 539 | See the bulleted item |
557 | "<link linkend='local-yp-release'>Yocto Project Release</link>" | 540 | "<link linkend='local-yp-release'>Yocto Project Release</link>" |
558 | for information on how to get these files. | 541 | for information on how to get these files. |
559 | </para> | 542 | </para> |
560 | 543 | ||
561 | <para> | 544 | <para> |
562 | Once you have the repository set up, | 545 | Once you have the local copy of the repository set up, |
563 | you have many development branches from which you can work. | 546 | you have many development branches from which you can work. |
564 | From inside the repository you can see the branch names and the tag names used | 547 | From inside the repository you can see the branch names and the tag names used |
565 | in the Git repository using either of the following two commands: | 548 | in the upstream Git repository using either of the following commands: |
566 | <literallayout class='monospaced'> | 549 | <literallayout class='monospaced'> |
567 | $ cd poky | 550 | $ cd poky |
568 | $ git branch -a | 551 | $ git branch -a |
@@ -680,7 +663,7 @@ | |||
680 | to set kernel configurations. | 663 | to set kernel configurations. |
681 | You need to run <filename>menuconfig</filename> inside the Yocto BitBake environment. | 664 | You need to run <filename>menuconfig</filename> inside the Yocto BitBake environment. |
682 | Thus, the environment must be set up using the <filename>oe-init-build-env</filename> | 665 | Thus, the environment must be set up using the <filename>oe-init-build-env</filename> |
683 | script found in the Yocto Project files Git repository build directory. | 666 | script found in the build directory. |
684 | If you have not sourced this script do so with the following commands: | 667 | If you have not sourced this script do so with the following commands: |
685 | <literallayout class='monospaced'> | 668 | <literallayout class='monospaced'> |
686 | $ cd ~/poky | 669 | $ cd ~/poky |
@@ -693,7 +676,7 @@ | |||
693 | to use the tool to interactively change the kernel configuration. | 676 | to use the tool to interactively change the kernel configuration. |
694 | In this example, we are basing our changes on the <filename>linux-yocto-3.2</filename> | 677 | In this example, we are basing our changes on the <filename>linux-yocto-3.2</filename> |
695 | kernel. | 678 | kernel. |
696 | The Yocto Project build environment recognizes this kernel as | 679 | The OpenEmbedded build system recognizes this kernel as |
697 | <filename>linux-yocto</filename>. | 680 | <filename>linux-yocto</filename>. |
698 | Thus, the following commands from the shell in which you previously sourced the | 681 | Thus, the following commands from the shell in which you previously sourced the |
699 | environment initialization script cleans the shared state memory and the | 682 | environment initialization script cleans the shared state memory and the |
@@ -727,8 +710,7 @@ | |||
727 | is updated. | 710 | is updated. |
728 | This is the file that the build system uses to configure the Linux Yocto kernel | 711 | This is the file that the build system uses to configure the Linux Yocto kernel |
729 | when it is built. | 712 | when it is built. |
730 | You can find and examine this file in the Yocto Project Files Git repository in | 713 | You can find and examine this file in the build directory. |
731 | the build directory. | ||
732 | This example uses the following: | 714 | This example uses the following: |
733 | <literallayout class='monospaced'> | 715 | <literallayout class='monospaced'> |
734 | ~/poky/build/tmp/work/qemux86-poky-linux/linux-yocto-3.2.11+git1+84f... | 716 | ~/poky/build/tmp/work/qemux86-poky-linux/linux-yocto-3.2.11+git1+84f... |
@@ -762,7 +744,7 @@ | |||
762 | <note> | 744 | <note> |
763 | Be sure to make a copy of the <filename>.config</filename> and don't just | 745 | Be sure to make a copy of the <filename>.config</filename> and don't just |
764 | rename it. | 746 | rename it. |
765 | The Yocto Project build system needs an existing <filename>.config</filename> | 747 | The build system needs an existing <filename>.config</filename> |
766 | from which to work. | 748 | from which to work. |
767 | </note> | 749 | </note> |
768 | </para> | 750 | </para> |
diff --git a/documentation/dev-manual/dev-manual-model.xml b/documentation/dev-manual/dev-manual-model.xml index 69e09e6466..a4120f84db 100644 --- a/documentation/dev-manual/dev-manual-model.xml +++ b/documentation/dev-manual/dev-manual-model.xml | |||
@@ -34,8 +34,8 @@ | |||
34 | get the changes upstream and applied in the affected recipes.</para></listitem> | 34 | get the changes upstream and applied in the affected recipes.</para></listitem> |
35 | <listitem><para><emphasis>Image Development using Hob:</emphasis> | 35 | <listitem><para><emphasis>Image Development using Hob:</emphasis> |
36 | You can use the <ulink url='&YOCTO_HOME_URL;/projects/hob'>Hob</ulink> to build | 36 | You can use the <ulink url='&YOCTO_HOME_URL;/projects/hob'>Hob</ulink> to build |
37 | custom operating system images within the Yocto Project build environment. | 37 | custom operating system images within the build environment. |
38 | Hob provides an efficient interface to the Yocto Project build system.</para></listitem> | 38 | Hob provides an efficient interface to the OpenEmbedded build system.</para></listitem> |
39 | </itemizedlist> | 39 | </itemizedlist> |
40 | </para> | 40 | </para> |
41 | 41 | ||
@@ -94,18 +94,20 @@ | |||
94 | and the | 94 | and the |
95 | "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Packages</ulink>" sections both | 95 | "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Packages</ulink>" sections both |
96 | in the Yocto Project Quick Start for requirements.</para></listitem> | 96 | in the Yocto Project Quick Start for requirements.</para></listitem> |
97 | <listitem><para><emphasis>Establish a local copy of the Yocto Project files on your | 97 | <listitem><para><emphasis>Establish a local copy of the project files on your |
98 | system</emphasis>: You need to have the Yocto Project files available on your host system. | 98 | system</emphasis>: You need this <link linkend='source-directory'>source |
99 | Having the Yocto Project files on your system gives you access to the build | 99 | directory</link> available on your host system. |
100 | Having these files on your system gives you access to the build | ||
100 | process and to the tools you need. | 101 | process and to the tools you need. |
101 | For information on how to get these files, see the | 102 | For information on how to set up the source directory, see the |
102 | "<link linkend='getting-setup'>Getting Setup</link>" section.</para></listitem> | 103 | "<link linkend='getting-setup'>Getting Setup</link>" section.</para></listitem> |
103 | <listitem><para><emphasis>Establish a local copy of the base BSP files</emphasis>: Having | 104 | <listitem><para><emphasis>Establish a local copy of the base BSP files</emphasis>: Having |
104 | the BSP files on your system gives you access to the build | 105 | the BSP files on your system gives you access to the build |
105 | process and to the tools you need for creating a BSP. | 106 | process and to the tools you need for creating a BSP. |
106 | For information on how to get these files, see the | 107 | For information on how to get these files, see the |
107 | "<link linkend='getting-setup'>Getting Setup</link>" section.</para></listitem> | 108 | "<link linkend='getting-setup'>Getting Setup</link>" section.</para></listitem> |
108 | <listitem><para><emphasis>Choose a Yocto Project-supported BSP as your base BSP</emphasis>: | 109 | <listitem><para><emphasis>Choose a BSP that is supported by the Yocto Project |
110 | as your base BSP</emphasis>: | ||
109 | The Yocto Project ships with several BSPs that support various hardware. | 111 | The Yocto Project ships with several BSPs that support various hardware. |
110 | It is best to base your new BSP on an existing BSP rather than create all the | 112 | It is best to base your new BSP on an existing BSP rather than create all the |
111 | recipes and configuration files from scratch. | 113 | recipes and configuration files from scratch. |
@@ -138,7 +140,7 @@ | |||
138 | The layer, in this case, would be where all the recipes that define those dependencies | 140 | The layer, in this case, would be where all the recipes that define those dependencies |
139 | are kept. | 141 | are kept. |
140 | The key point for a layer is that it is an isolated area that contains | 142 | The key point for a layer is that it is an isolated area that contains |
141 | all the relevant information for the project that the Yocto Project build | 143 | all the relevant information for the project that the OpenEmbedded build |
142 | system knows about. | 144 | system knows about. |
143 | For more information on layers, see the | 145 | For more information on layers, see the |
144 | "<link linkend='understanding-and-creating-layers'>Understanding and Creating Layers</link>" | 146 | "<link linkend='understanding-and-creating-layers'>Understanding and Creating Layers</link>" |
@@ -146,11 +148,11 @@ | |||
146 | For more information on BSP layers, see the | 148 | For more information on BSP layers, see the |
147 | "<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-layers'>BSP Layers</ulink>" section in the | 149 | "<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-layers'>BSP Layers</ulink>" section in the |
148 | Yocto Project Board Support Package (BSP) Developer's Guide.</para> | 150 | Yocto Project Board Support Package (BSP) Developer's Guide.</para> |
149 | <note>The Yocto Project supports four BSPs that are part of the | 151 | <note>Four BSPs exist that are part of the |
150 | Yocto Project release: <filename>atom-pc</filename>, <filename>beagleboard</filename>, | 152 | Yocto Project release: <filename>atom-pc</filename>, <filename>beagleboard</filename>, |
151 | <filename>mpc8315e</filename>, and <filename>routerstationpro</filename>. | 153 | <filename>mpc8315e</filename>, and <filename>routerstationpro</filename>. |
152 | The recipes and configurations for these four BSPs are located and dispersed | 154 | The recipes and configurations for these four BSPs are located and dispersed |
153 | within the <link linkend='yocto-project-files'>Yocto Project Files</link>. | 155 | within the <link linkend='source-directory'>source directory</link>. |
154 | On the other hand, BSP layers for Crown Bay, Emenlow, Jasper Forest, | 156 | On the other hand, BSP layers for Crown Bay, Emenlow, Jasper Forest, |
155 | N450, Cedar Trail, Fish River, Fish River Island II, Romley, sys940x, tlk, | 157 | N450, Cedar Trail, Fish River, Fish River Island II, Romley, sys940x, tlk, |
156 | and Sugar Bay exist in their own separate layers within the larger | 158 | and Sugar Bay exist in their own separate layers within the larger |
@@ -163,7 +165,7 @@ | |||
163 | configuration information. | 165 | configuration information. |
164 | You can see the standard layout for the Crown Bay BSP in this example by examining the | 166 | You can see the standard layout for the Crown Bay BSP in this example by examining the |
165 | directory structure of the <filename>meta-crownbay</filename> layer inside the | 167 | directory structure of the <filename>meta-crownbay</filename> layer inside the |
166 | local Yocto Project files.</para></listitem> | 168 | source directory.</para></listitem> |
167 | <listitem><para><emphasis>Make configuration changes to your new BSP | 169 | <listitem><para><emphasis>Make configuration changes to your new BSP |
168 | layer</emphasis>: The standard BSP layer structure organizes the files you need | 170 | layer</emphasis>: The standard BSP layer structure organizes the files you need |
169 | to edit in <filename>conf</filename> and several <filename>recipes-*</filename> | 171 | to edit in <filename>conf</filename> and several <filename>recipes-*</filename> |
@@ -177,15 +179,15 @@ | |||
177 | </para></listitem> | 179 | </para></listitem> |
178 | <listitem><para><emphasis>Prepare for the build</emphasis>: Once you have made all the | 180 | <listitem><para><emphasis>Prepare for the build</emphasis>: Once you have made all the |
179 | changes to your BSP layer, there remains a few things | 181 | changes to your BSP layer, there remains a few things |
180 | you need to do for the Yocto Project build system in order for it to create your image. | 182 | you need to do for the OpenEmbedded build system in order for it to create your image. |
181 | You need to get the build environment ready by sourcing an environment setup script | 183 | You need to get the build environment ready by sourcing an environment setup script |
182 | and you need to be sure two key configuration files are configured appropriately.</para> | 184 | and you need to be sure two key configuration files are configured appropriately.</para> |
183 | <para>The entire process for building an image is overviewed in the section | 185 | <para>The entire process for building an image is overviewed in the section |
184 | "<ulink url='&YOCTO_DOCS_QS_URL;#building-image'>Building an Image</ulink>" section | 186 | "<ulink url='&YOCTO_DOCS_QS_URL;#building-image'>Building an Image</ulink>" section |
185 | of the Yocto Project Quick Start. | 187 | of the Yocto Project Quick Start. |
186 | You might want to reference this information.</para></listitem> | 188 | You might want to reference this information.</para></listitem> |
187 | <listitem><para><emphasis>Build the image</emphasis>: The Yocto Project uses the BitBake | 189 | <listitem><para><emphasis>Build the image</emphasis>: The OpenEmbedded build system |
188 | tool to build images based on the type of image you want to create. | 190 | uses the BitBake tool to build images based on the type of image you want to create. |
189 | You can find more information on BitBake | 191 | You can find more information on BitBake |
190 | <ulink url='http://bitbake.berlios.de/manual/'>here</ulink>.</para> | 192 | <ulink url='http://bitbake.berlios.de/manual/'>here</ulink>.</para> |
191 | <para>The build process supports several types of images to satisfy different needs. | 193 | <para>The build process supports several types of images to satisfy different needs. |
@@ -295,7 +297,7 @@ | |||
295 | 297 | ||
296 | <para> | 298 | <para> |
297 | The overall result is a Git-maintained repository from which all the supported | 299 | The overall result is a Git-maintained repository from which all the supported |
298 | Yocto Project kernel types can be derived for all the supported Yocto Project devices. | 300 | kernel types can be derived for all the supported devices. |
299 | A big advantage to this scheme is the sharing of common features by keeping them in | 301 | A big advantage to this scheme is the sharing of common features by keeping them in |
300 | "larger" branches within the tree. | 302 | "larger" branches within the tree. |
301 | This practice eliminates redundant storage of similar features shared among kernels. | 303 | This practice eliminates redundant storage of similar features shared among kernels. |
@@ -313,7 +315,7 @@ | |||
313 | <para> | 315 | <para> |
314 | Storage of all the available kernel source code is one thing, while representing the | 316 | Storage of all the available kernel source code is one thing, while representing the |
315 | code on your host development system is another. | 317 | code on your host development system is another. |
316 | Conceptually, you can think of the Yocto Project kernel source repositories as all the | 318 | Conceptually, you can think of the kernel source repositories as all the |
317 | source files necessary for all the supported kernels. | 319 | source files necessary for all the supported kernels. |
318 | As a developer, you are just interested in the source files for the kernel on | 320 | As a developer, you are just interested in the source files for the kernel on |
319 | on which you are working. | 321 | on which you are working. |
@@ -358,7 +360,7 @@ | |||
358 | <para> | 360 | <para> |
359 | What happens during the build? | 361 | What happens during the build? |
360 | When you build the kernel on your development system all files needed for the build | 362 | When you build the kernel on your development system all files needed for the build |
361 | are taken from the Yocto Project source repositories pointed to by the | 363 | are taken from the source repositories pointed to by the |
362 | <filename>SRC_URI</filename> variable and gathered in a temporary work area | 364 | <filename>SRC_URI</filename> variable and gathered in a temporary work area |
363 | where they are subsequently used to create the unique kernel. | 365 | where they are subsequently used to create the unique kernel. |
364 | Thus, in a sense, the process constructs a local source tree specific to your | 366 | Thus, in a sense, the process constructs a local source tree specific to your |
@@ -375,7 +377,7 @@ | |||
375 | </para> | 377 | </para> |
376 | 378 | ||
377 | <para> | 379 | <para> |
378 | Again, for a complete discussion of the Yocto Project kernel's architcture and its | 380 | Again, for a complete discussion of the Yocto Project kernel's architecture and its |
379 | branching strategy, | 381 | branching strategy, |
380 | see <ulink url='&YOCTO_DOCS_KERNEL_URL;'> | 382 | see <ulink url='&YOCTO_DOCS_KERNEL_URL;'> |
381 | The Yocto Project Kernel Architecture and Use Manual</ulink>. | 383 | The Yocto Project Kernel Architecture and Use Manual</ulink>. |
@@ -404,18 +406,19 @@ | |||
404 | "<ulink url='&YOCTO_DOCS_QS_URL;#the-linux-distro'>The Linux Distributions</ulink>" and | 406 | "<ulink url='&YOCTO_DOCS_QS_URL;#the-linux-distro'>The Linux Distributions</ulink>" and |
405 | "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Packages</ulink>" sections both | 407 | "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Packages</ulink>" sections both |
406 | in the Yocto Project Quick Start for requirements.</para></listitem> | 408 | in the Yocto Project Quick Start for requirements.</para></listitem> |
407 | <listitem><para><emphasis>Establish a local copy of the Yocto Project files on your | 409 | <listitem><para><emphasis>Establish a local copy of project files on your |
408 | system</emphasis>: Having the Yocto Project files on your system gives you access to | 410 | system</emphasis>: Having the <link linkend='source-directory'>source |
409 | the build process and tools you need. | 411 | directory</link> on your system gives you access to the build process and tools |
412 | you need. | ||
410 | For information on how to get these files, see the bulleted item | 413 | For information on how to get these files, see the bulleted item |
411 | "<link linkend='local-yp-release'>Yocto Project Release</link>" earlier in this manual. | 414 | "<link linkend='local-yp-release'>Yocto Project Release</link>" earlier in this manual. |
412 | </para></listitem> | 415 | </para></listitem> |
413 | <listitem><para><emphasis>Set up the <filename>poky-extras</filename> Git | 416 | <listitem><para><emphasis>Set up a local copy of the <filename>poky-extras</filename> Git |
414 | repository</emphasis>: This repository is the area for your configuration | 417 | repository</emphasis>: This local repository is the area for your configuration |
415 | fragments, new kernel recipes, and the kernel <filename>.bbappend</filename> | 418 | fragments, new kernel recipes, and the kernel <filename>.bbappend</filename> |
416 | file used during the build. | 419 | file used during the build. |
417 | It is good practice to set this repository up inside the local Yocto | 420 | It is good practice to set this repository up inside your local |
418 | Project files Git repository. | 421 | source directory. |
419 | For information on how to get these files, see the bulleted item | 422 | For information on how to get these files, see the bulleted item |
420 | "<link linkend='poky-extras-repo'>The <filename>poky-extras</filename> Git Repository</link>" | 423 | "<link linkend='poky-extras-repo'>The <filename>poky-extras</filename> Git Repository</link>" |
421 | earlier in this manual. | 424 | earlier in this manual. |
@@ -453,9 +456,9 @@ | |||
453 | <filename>.config</filename>. | 456 | <filename>.config</filename>. |
454 | Try to resist the temptation of directly editing the <filename>.config</filename> | 457 | Try to resist the temptation of directly editing the <filename>.config</filename> |
455 | file found in the | 458 | file found in the |
456 | <link linkend='yocto-project-build-directory'>Yocto Project Build Directory</link> at | 459 | <link linkend='build-directory'>build directory</link> at |
457 | <filename>tmp/sysroots/<machine-name>/kernel</filename>. | 460 | <filename>tmp/sysroots/<machine-name>/kernel</filename>. |
458 | Doing so, can produce unexpected results when the Yocto Project build system | 461 | Doing so, can produce unexpected results when the OpenEmbedded build system |
459 | regenerates the configuration file.</para> | 462 | regenerates the configuration file.</para> |
460 | <para>Once you are satisfied with the configuration changes made using | 463 | <para>Once you are satisfied with the configuration changes made using |
461 | <filename>menuconfig</filename>, you can directly examine the | 464 | <filename>menuconfig</filename>, you can directly examine the |
@@ -465,7 +468,7 @@ | |||
465 | <listitem><para><emphasis>Add or extend kernel recipes if applicable</emphasis>: | 468 | <listitem><para><emphasis>Add or extend kernel recipes if applicable</emphasis>: |
466 | The standard | 469 | The standard |
467 | layer structure organizes recipe files inside the | 470 | layer structure organizes recipe files inside the |
468 | <filename>meta-kernel-dev</filename> layer that is within the | 471 | <filename>meta-kernel-dev</filename> layer that is within the local |
469 | <filename>poky-extras</filename> Git repository. | 472 | <filename>poky-extras</filename> Git repository. |
470 | If you need to add new kernel recipes, you add them within this layer. | 473 | If you need to add new kernel recipes, you add them within this layer. |
471 | Also within this area, you will find the <filename>.bbappend</filename> | 474 | Also within this area, you will find the <filename>.bbappend</filename> |
@@ -475,7 +478,7 @@ | |||
475 | <listitem><para><emphasis>Prepare for the build</emphasis>: Once you have made all the | 478 | <listitem><para><emphasis>Prepare for the build</emphasis>: Once you have made all the |
476 | changes to your kernel (configurations, source code changes, recipe additions, | 479 | changes to your kernel (configurations, source code changes, recipe additions, |
477 | or recipe changes), there remains a few things | 480 | or recipe changes), there remains a few things |
478 | you need to do in order for the Yocto Project build system (BitBake) to create your image. | 481 | you need to do in order for the build system to create your image. |
479 | If you have not done so, you need to get the build environment ready by sourcing | 482 | If you have not done so, you need to get the build environment ready by sourcing |
480 | the environment setup script described earlier. | 483 | the environment setup script described earlier. |
481 | You also need to be sure two key configuration files | 484 | You also need to be sure two key configuration files |
@@ -487,8 +490,8 @@ | |||
487 | You might want to reference this information. | 490 | You might want to reference this information. |
488 | Also, you should look at the detailed examples found in the appendices at | 491 | Also, you should look at the detailed examples found in the appendices at |
489 | at the end of this manual.</para></listitem> | 492 | at the end of this manual.</para></listitem> |
490 | <listitem><para><emphasis>Build the image</emphasis>: The Yocto Project | 493 | <listitem><para><emphasis>Build the image</emphasis>: The OpenEmbedded |
491 | build system Poky uses the BitBake | 494 | build system uses the BitBake |
492 | tool to build images based on the type of image you want to create. | 495 | tool to build images based on the type of image you want to create. |
493 | You can find more information on BitBake | 496 | You can find more information on BitBake |
494 | <ulink url='http://bitbake.berlios.de/manual/'>here</ulink>.</para> | 497 | <ulink url='http://bitbake.berlios.de/manual/'>here</ulink>.</para> |
@@ -514,7 +517,7 @@ | |||
514 | </section> | 517 | </section> |
515 | </section> | 518 | </section> |
516 | 519 | ||
517 | <section id='place-holder-section-two'> | 520 | <section id='application-development-workflow'> |
518 | <title>Application Development Workflow</title> | 521 | <title>Application Development Workflow</title> |
519 | 522 | ||
520 | <para> | 523 | <para> |
@@ -530,7 +533,7 @@ | |||
530 | </para> | 533 | </para> |
531 | 534 | ||
532 | <para> | 535 | <para> |
533 | While we strongly suggest using the Yocto Project ADT to develop your application, you might | 536 | While we strongly suggest using the ADT to develop your application, you might |
534 | not want to. | 537 | not want to. |
535 | If this is the case, you can still use pieces of the Yocto Project for your development process. | 538 | If this is the case, you can still use pieces of the Yocto Project for your development process. |
536 | However, because the process can vary greatly, this manual does not provide detail on the process. | 539 | However, because the process can vary greatly, this manual does not provide detail on the process. |
@@ -540,8 +543,7 @@ | |||
540 | <title>Workflow Using the ADT and <trademark class='trade'>Eclipse</trademark></title> | 543 | <title>Workflow Using the ADT and <trademark class='trade'>Eclipse</trademark></title> |
541 | 544 | ||
542 | <para> | 545 | <para> |
543 | To help you understand how application development works in the Yocto Project ADT | 546 | To help you understand how application development works using the ADT, this section |
544 | environment, this section | ||
545 | provides an overview of the general development process. | 547 | provides an overview of the general development process. |
546 | If you want to see a detailed example of the process as it is used from within the Eclipse | 548 | If you want to see a detailed example of the process as it is used from within the Eclipse |
547 | IDE, see | 549 | IDE, see |
@@ -550,7 +552,7 @@ | |||
550 | </para> | 552 | </para> |
551 | 553 | ||
552 | <para> | 554 | <para> |
553 | This illustration and the following list summarizes the application development general workflow. | 555 | The following illustration and list summarize the application development general workflow. |
554 | </para> | 556 | </para> |
555 | 557 | ||
556 | <para> | 558 | <para> |
@@ -565,27 +567,9 @@ | |||
565 | "<ulink url='&YOCTO_DOCS_QS_URL;#the-linux-distro'>The Linux Distributions</ulink>" and | 567 | "<ulink url='&YOCTO_DOCS_QS_URL;#the-linux-distro'>The Linux Distributions</ulink>" and |
566 | "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Packages</ulink>" sections both | 568 | "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Packages</ulink>" sections both |
567 | in the Yocto Project Quick Start for requirements.</para></listitem> | 569 | in the Yocto Project Quick Start for requirements.</para></listitem> |
568 | |||
569 | <!-- | ||
570 | WRITER NOTE: The areas to get the kernel and root filesystem are located in the Index of | ||
571 | downloads. There are many forms of each. The files that have "rootfs" are just the | ||
572 | target root filesystems. The file that is very small and starts with bzImage is just | ||
573 | the kernel image isolated so that it can be written to a special on-board area of | ||
574 | flash memory. Some systems require this. In the machines directory there are | ||
575 | files that combine the kernel image and the root filesystem. These files are the ISO | ||
576 | and HDDIMG files. ISO images are designed to be deployed on a DVD or CD. The ISO | ||
577 | images are designed to be deployed on a USB stick. There might be some relics in | ||
578 | the machine directory. For example, there is the "emenlow-bernard-5.0.0.tar.bz2" | ||
579 | file. Nobody seems to know what this is. If a developer needs the image and the | ||
580 | root filesystem I think that they want the small kernel image and a matching root | ||
581 | filesystem. Although, Paul Eggleton says that the HDDIMG types could be used to | ||
582 | develop on. I am not sure that we can use one of those in the ADT though as they | ||
583 | want you to point to the kernel image and the target root filesystem. Maybe you | ||
584 | could just point to the same spot. I am not sure. | ||
585 | --> | ||
586 | |||
587 | <listitem><para><emphasis>Secure the Linux Yocto Kernel Target Image</emphasis>: | 570 | <listitem><para><emphasis>Secure the Linux Yocto Kernel Target Image</emphasis>: |
588 | You must have a target kernel image that has been built using the Yocto Project.</para> | 571 | You must have a target kernel image that has been built using the OpenEmbeded |
572 | build system.</para> | ||
589 | <para>Depending on whether the Yocto Project has a pre-built image that matches your target | 573 | <para>Depending on whether the Yocto Project has a pre-built image that matches your target |
590 | architecture and where you are going to run the image while you develop your application | 574 | architecture and where you are going to run the image while you develop your application |
591 | (QEMU or real hardware), the area from which you get the image differs. | 575 | (QEMU or real hardware), the area from which you get the image differs. |
@@ -616,7 +600,7 @@ WRITER NOTE: The areas to get the kernel and root filesystem are located in the | |||
616 | <listitem><para><emphasis>Install the ADT</emphasis>: | 600 | <listitem><para><emphasis>Install the ADT</emphasis>: |
617 | The ADT provides a target-specific cross-development toolchain, the root filesystem, | 601 | The ADT provides a target-specific cross-development toolchain, the root filesystem, |
618 | the QEMU emulator, and other tools that can help you develop your application. | 602 | the QEMU emulator, and other tools that can help you develop your application. |
619 | While it is possible to get these pieces separately, the Yocto Project provides an | 603 | While it is possible to get these pieces separately, the ADT Installer provides an |
620 | easy method. | 604 | easy method. |
621 | You can get these pieces by running an ADT installer script, which is configurable. | 605 | You can get these pieces by running an ADT installer script, which is configurable. |
622 | For information on how to install the ADT, see the | 606 | For information on how to install the ADT, see the |
@@ -707,14 +691,14 @@ WRITER NOTE: The areas to get the kernel and root filesystem are located in the | |||
707 | <title>Modifying Temporary Source Code</title> | 691 | <title>Modifying Temporary Source Code</title> |
708 | 692 | ||
709 | <para> | 693 | <para> |
710 | Although the Yocto Project is typically used to build software, you might | 694 | You might |
711 | find it helpful during development to modify the temporary source code used by recipes | 695 | find it helpful during development to modify the temporary source code used by recipes |
712 | to build packages. | 696 | to build packages. |
713 | For example, suppose you are developing a patch and you need to experiment a bit | 697 | For example, suppose you are developing a patch and you need to experiment a bit |
714 | to figure out your solution. | 698 | to figure out your solution. |
715 | After you have initially built the package, you can iteratively tweak the | 699 | After you have initially built the package, you can iteratively tweak the |
716 | source code, which is located in the | 700 | source code, which is located in the |
717 | <link linkend='yocto-project-build-directory'>Yocto Project's Build Directory</link>, and then | 701 | <link linkend='build-directory'>build directory</link>, and then |
718 | you can force a re-compile and quickly test your altered code. | 702 | you can force a re-compile and quickly test your altered code. |
719 | Once you settle on a solution, you can then preserve your changes in the form of | 703 | Once you settle on a solution, you can then preserve your changes in the form of |
720 | patches. | 704 | patches. |
@@ -728,12 +712,12 @@ WRITER NOTE: The areas to get the kernel and root filesystem are located in the | |||
728 | 712 | ||
729 | <para> | 713 | <para> |
730 | During a build, the unpacked temporary source code used by recipes | 714 | During a build, the unpacked temporary source code used by recipes |
731 | to build packages is available in the Yocto Project Build Directory as | 715 | to build packages is available in the build directory as |
732 | defined by the | 716 | defined by the |
733 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-S'>S</ulink></filename> variable. | 717 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-S'>S</ulink></filename> variable. |
734 | Below is the default value for the <filename>S</filename> variable as defined in the | 718 | Below is the default value for the <filename>S</filename> variable as defined in the |
735 | <filename>meta/conf/bitbake.conf</filename> configuration file in the | 719 | <filename>meta/conf/bitbake.conf</filename> configuration file in the |
736 | <link linkend='yocto-project-files'>Yocto Project Files</link>: | 720 | <link linkend='source-directory'>source directory</link>: |
737 | <literallayout class='monospaced'> | 721 | <literallayout class='monospaced'> |
738 | S = ${WORKDIR}/${BP} | 722 | S = ${WORKDIR}/${BP} |
739 | </literallayout> | 723 | </literallayout> |
@@ -758,8 +742,8 @@ WRITER NOTE: The areas to get the kernel and root filesystem are located in the | |||
758 | ${TMPDIR}/work/${PACKAGE_ARCH}-poky-${TARGET_OS}/${PN}-${PV}-${PR} | 742 | ${TMPDIR}/work/${PACKAGE_ARCH}-poky-${TARGET_OS}/${PN}-${PV}-${PR} |
759 | </literallayout> | 743 | </literallayout> |
760 | Let's look at an example without variables. | 744 | Let's look at an example without variables. |
761 | Assuming a Yocto Project Files top-level directory named <filename>poky</filename> | 745 | Assuming a top-level source directory named <filename>poky</filename> |
762 | and a default Yocto Project Build Directory of <filename>poky/build</filename>, | 746 | and a default build directory of <filename>poky/build</filename>, |
763 | the following is the work directory for the <filename>acl</filename> package: | 747 | the following is the work directory for the <filename>acl</filename> package: |
764 | <literallayout class='monospaced'> | 748 | <literallayout class='monospaced'> |
765 | ~/poky/build/tmp/work/i586-poky-linux/acl-2.2.51-r3 | 749 | ~/poky/build/tmp/work/i586-poky-linux/acl-2.2.51-r3 |
@@ -771,8 +755,8 @@ WRITER NOTE: The areas to get the kernel and root filesystem are located in the | |||
771 | <literallayout class='monospaced'> | 755 | <literallayout class='monospaced'> |
772 | ${TMPDIR}/work/${MACHINE}-poky-${TARGET_OS}/${PN}-${PV}-${PR} | 756 | ${TMPDIR}/work/${MACHINE}-poky-${TARGET_OS}/${PN}-${PV}-${PR} |
773 | </literallayout> | 757 | </literallayout> |
774 | Again, assuming a Yocto Project Files top-level directory named <filename>poky</filename> | 758 | Again, assuming top-level source directory named <filename>poky</filename> |
775 | and a default Yocto Project Build Directory of <filename>poky/build</filename>, the | 759 | and a default build directory of <filename>poky/build</filename>, the |
776 | following is the work directory for the <filename>acl</filename> package that is being | 760 | following is the work directory for the <filename>acl</filename> package that is being |
777 | built for a MIPS-based device: | 761 | built for a MIPS-based device: |
778 | <literallayout class='monospaced'> | 762 | <literallayout class='monospaced'> |
@@ -781,7 +765,7 @@ WRITER NOTE: The areas to get the kernel and root filesystem are located in the | |||
781 | </para> | 765 | </para> |
782 | 766 | ||
783 | <note> | 767 | <note> |
784 | To better understand how the Yocto Project build system resolves directories during the | 768 | To better understand how the OpenEmbedded build system resolves directories during the |
785 | build process, see the glossary entries for the | 769 | build process, see the glossary entries for the |
786 | <ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink>, | 770 | <ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink>, |
787 | <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>, | 771 | <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>, |
@@ -817,8 +801,8 @@ WRITER NOTE: The areas to get the kernel and root filesystem are located in the | |||
817 | Follow these general steps: | 801 | Follow these general steps: |
818 | <orderedlist> | 802 | <orderedlist> |
819 | <listitem><para><emphasis>Find the Source Code:</emphasis> | 803 | <listitem><para><emphasis>Find the Source Code:</emphasis> |
820 | The temporary source code used by the Yocto Project build system is kept in the | 804 | The temporary source code used by the OpenEmbedded build system is kept in the |
821 | Yocto Project Build Directory. | 805 | build directory. |
822 | See the | 806 | See the |
823 | "<link linkend='finding-the-temporary-source-code'>Finding the Temporary Source Code</link>" | 807 | "<link linkend='finding-the-temporary-source-code'>Finding the Temporary Source Code</link>" |
824 | section to learn how to locate the directory that has the temporary source code for a | 808 | section to learn how to locate the directory that has the temporary source code for a |
@@ -875,7 +859,7 @@ WRITER NOTE: The areas to get the kernel and root filesystem are located in the | |||
875 | <listitem><para><emphasis>Copy the Patch File:</emphasis> | 859 | <listitem><para><emphasis>Copy the Patch File:</emphasis> |
876 | For simplicity, copy the patch file into a directory named <filename>files</filename>, | 860 | For simplicity, copy the patch file into a directory named <filename>files</filename>, |
877 | which you can create in the same directory as the recipe. | 861 | which you can create in the same directory as the recipe. |
878 | Placing the patch here guarantees that the Yocto Project build system will find | 862 | Placing the patch here guarantees that the OpenEmbedded build system will find |
879 | the patch. | 863 | the patch. |
880 | Next, add the patch into the | 864 | Next, add the patch into the |
881 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'>SRC_URI</ulink></filename> | 865 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'>SRC_URI</ulink></filename> |
@@ -904,16 +888,15 @@ WRITER NOTE: The areas to get the kernel and root filesystem are located in the | |||
904 | 888 | ||
905 | <note> | 889 | <note> |
906 | This workflow uses Git only for its ability to manage local changes to the source code | 890 | This workflow uses Git only for its ability to manage local changes to the source code |
907 | and produce patches independent of any version control used on the Yocto Project | 891 | and produce patches independent of any version control system used with the Yocto Project. |
908 | Files. | ||
909 | </note> | 892 | </note> |
910 | 893 | ||
911 | <para> | 894 | <para> |
912 | Follow these general steps: | 895 | Follow these general steps: |
913 | <orderedlist> | 896 | <orderedlist> |
914 | <listitem><para><emphasis>Find the Source Code:</emphasis> | 897 | <listitem><para><emphasis>Find the Source Code:</emphasis> |
915 | The temporary source code used by the Yocto Project build system is kept in the | 898 | The temporary source code used by the OpenEmbedded build system is kept in the |
916 | Yocto Project Build Directory. | 899 | build directory. |
917 | See the | 900 | See the |
918 | "<link linkend='finding-the-temporary-source-code'>Finding the Temporary Source Code</link>" | 901 | "<link linkend='finding-the-temporary-source-code'>Finding the Temporary Source Code</link>" |
919 | section to learn how to locate the directory that has the temporary source code for a | 902 | section to learn how to locate the directory that has the temporary source code for a |
@@ -1002,7 +985,7 @@ WRITER NOTE: The areas to get the kernel and root filesystem are located in the | |||
1002 | <listitem><para><emphasis>Copy the Patch File:</emphasis> | 985 | <listitem><para><emphasis>Copy the Patch File:</emphasis> |
1003 | For simplicity, copy the patch file into a directory named <filename>files</filename>, | 986 | For simplicity, copy the patch file into a directory named <filename>files</filename>, |
1004 | which you can create in the same directory as the recipe. | 987 | which you can create in the same directory as the recipe. |
1005 | Placing the patch here guarantees that the Yocto Project build system will find | 988 | Placing the patch here guarantees that the OpenEmbedded build system will find |
1006 | the patch. | 989 | the patch. |
1007 | Next, add the patch into the | 990 | Next, add the patch into the |
1008 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'>SRC_URI</ulink></filename> | 991 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'>SRC_URI</ulink></filename> |
@@ -1024,11 +1007,11 @@ WRITER NOTE: The areas to get the kernel and root filesystem are located in the | |||
1024 | <title>Image Development Using Hob</title> | 1007 | <title>Image Development Using Hob</title> |
1025 | 1008 | ||
1026 | <para> | 1009 | <para> |
1027 | The <ulink url='&YOCTO_HOME_URL;/projects/hob'>Hob</ulink> is a graphical user interface for the Yocto | 1010 | The <ulink url='&YOCTO_HOME_URL;/projects/hob'>Hob</ulink> is a graphical user interface for the |
1028 | Project build system based on BitBake. | 1011 | OpenEmbedded build system, which is based on BitBake. |
1029 | You can use the Hob to build custom operating system images within the Yocto Project build environment. | 1012 | You can use the Hob to build custom operating system images within the Yocto Project build environment. |
1030 | Hob simply provides a friendly interface over the build system used during system development. | 1013 | Hob simply provides a friendly interface over the build system used during system development. |
1031 | In other words, building images with the Hob lets you take care of common Yocto Project build tasks more easily. | 1014 | In other words, building images with the Hob lets you take care of common build tasks more easily. |
1032 | </para> | 1015 | </para> |
1033 | 1016 | ||
1034 | <para> | 1017 | <para> |
diff --git a/documentation/dev-manual/dev-manual-newbie.xml b/documentation/dev-manual/dev-manual-newbie.xml index 6a8d39caae..94f3471f13 100644 --- a/documentation/dev-manual/dev-manual-newbie.xml +++ b/documentation/dev-manual/dev-manual-newbie.xml | |||
@@ -55,7 +55,7 @@ | |||
55 | </section> | 55 | </section> |
56 | 56 | ||
57 | <section id="usingpoky-changes-collaborate"> | 57 | <section id="usingpoky-changes-collaborate"> |
58 | <title>Using The Yocto Project in a Team Environment</title> | 58 | <title>Using the Yocto Project in a Team Environment</title> |
59 | 59 | ||
60 | <para> | 60 | <para> |
61 | It might not be immediately clear how you can use the Yocto Project in a team environment, | 61 | It might not be immediately clear how you can use the Yocto Project in a team environment, |
@@ -97,19 +97,20 @@ | |||
97 | <para> | 97 | <para> |
98 | Most teams have many pieces of software undergoing active development at any given time. | 98 | Most teams have many pieces of software undergoing active development at any given time. |
99 | You can derive large benefits by putting these pieces under the control of a source | 99 | You can derive large benefits by putting these pieces under the control of a source |
100 | control system that is compatible with the Yocto Project (i.e. Git or Subversion (SVN)). | 100 | control system that is compatible (i.e. Git or Subversion (SVN)) with the OpenEmbeded |
101 | build system that the Yocto Project uses. | ||
101 | You can then set the autobuilder to pull the latest revisions of the packages | 102 | You can then set the autobuilder to pull the latest revisions of the packages |
102 | and test the latest commits by the builds. | 103 | and test the latest commits by the builds. |
103 | This practice quickly highlights issues. | 104 | This practice quickly highlights issues. |
104 | The Yocto Project easily supports testing configurations that use both a | 105 | The build system easily supports testing configurations that use both a |
105 | stable known good revision and a floating revision. | 106 | stable known good revision and a floating revision. |
106 | The Yocto Project can also take just the changes from specific source control branches. | 107 | The build system can also take just the changes from specific source control branches. |
107 | This capability allows you to track and test specific changes. | 108 | This capability allows you to track and test specific changes. |
108 | </para> | 109 | </para> |
109 | 110 | ||
110 | <para> | 111 | <para> |
111 | Perhaps the hardest part of setting this up is defining the software project or | 112 | Perhaps the hardest part of setting this up is defining the software project or |
112 | the Yocto Project metadata policies that surround the different source control systems. | 113 | the metadata policies that surround the different source control systems. |
113 | Of course circumstances will be different in each case. | 114 | Of course circumstances will be different in each case. |
114 | However, this situation reveals one of the Yocto Project's advantages - | 115 | However, this situation reveals one of the Yocto Project's advantages - |
115 | the system itself does not | 116 | the system itself does not |
@@ -129,7 +130,7 @@ | |||
129 | From the interface, you can click on any particular item in the "Name" column and | 130 | From the interface, you can click on any particular item in the "Name" column and |
130 | see the URL at the bottom of the page that you need to set up a Git repository for | 131 | see the URL at the bottom of the page that you need to set up a Git repository for |
131 | that particular item. | 132 | that particular item. |
132 | Having a local Git repository of the Yocto Project files allows you to | 133 | Having a local Git repository of the source directory (poky) allows you to |
133 | make changes, contribute to the history, and ultimately enhance the Yocto Project's | 134 | make changes, contribute to the history, and ultimately enhance the Yocto Project's |
134 | tools, Board Support Packages, and so forth. | 135 | tools, Board Support Packages, and so forth. |
135 | </para> | 136 | </para> |
@@ -147,8 +148,8 @@ | |||
147 | <ulink url='&YOCTO_HOME_URL;/download'>download page</ulink> and get a | 148 | <ulink url='&YOCTO_HOME_URL;/download'>download page</ulink> and get a |
148 | tarball of the release. | 149 | tarball of the release. |
149 | You can also go to this site to download any supported BSP tarballs. | 150 | You can also go to this site to download any supported BSP tarballs. |
150 | Unpacking the tarball gives you a hierarchical directory structure of Yocto Project | 151 | Unpacking the tarball gives you a hierarchical source directory that lets you develop |
151 | files that lets you develop using the Yocto Project. | 152 | using the Yocto Project. |
152 | </para> | 153 | </para> |
153 | 154 | ||
154 | <para> | 155 | <para> |
@@ -157,22 +158,22 @@ | |||
157 | </para> | 158 | </para> |
158 | 159 | ||
159 | <para> | 160 | <para> |
160 | In summary, here is where you can get the Yocto Project files needed for development: | 161 | In summary, here is where you can get the project files needed for development: |
161 | <itemizedlist> | 162 | <itemizedlist> |
162 | <listitem><para id='source-repositories'><emphasis><ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi'>Source Repositories:</ulink></emphasis> | 163 | <listitem><para id='source-repositories'><emphasis><ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi'>Source Repositories:</ulink></emphasis> |
163 | This area contains IDE Plugins, Matchbox, Poky, Poky Support, Tools, Yocto Linux Kernel, and Yocto | 164 | This area contains IDE Plugins, Matchbox, Poky, Poky Support, Tools, Yocto Linux Kernel, and Yocto |
164 | Metadata Layers. | 165 | Metadata Layers. |
165 | You can create Git repositories for each of these areas.</para> | 166 | You can create local copies of Git repositories for each of these areas.</para> |
166 | <para> | 167 | <para> |
167 | <imagedata fileref="figures/source-repos.png" align="center" width="6in" depth="4in" /> | 168 | <imagedata fileref="figures/source-repos.png" align="center" width="6in" depth="4in" /> |
168 | </para></listitem> | 169 | </para></listitem> |
169 | <listitem><para><anchor id='index-downloads' /><emphasis><ulink url='&YOCTO_DL_URL;/releases/'>Index of /releases:</ulink></emphasis> | 170 | <listitem><para><anchor id='index-downloads' /><emphasis><ulink url='&YOCTO_DL_URL;/releases/'>Index of /releases:</ulink></emphasis> |
170 | This area contains index releases such as | 171 | This area contains index releases such as |
171 | the <trademark class='trade'>Eclipse</trademark> | 172 | the <trademark class='trade'>Eclipse</trademark> |
172 | Yocto Plug-in, miscellaneous support, Poky, pseudo, cross-development toolchains, | 173 | Yocto Plug-in, miscellaneous support, poky, pseudo, cross-development toolchains, |
173 | and all released versions of Yocto Project in the form of images or tarballs. | 174 | and all released versions of Yocto Project in the form of images or tarballs. |
174 | Downloading and extracting these files does not produce a Git repository but rather | 175 | Downloading and extracting these files does not produce a local copy of the |
175 | a snapshot of a particular release or image.</para> | 176 | Git repository but rather a snapshot of a particular release or image.</para> |
176 | <para> | 177 | <para> |
177 | <imagedata fileref="figures/index-downloads.png" align="center" width="6in" depth="4in" /> | 178 | <imagedata fileref="figures/index-downloads.png" align="center" width="6in" depth="4in" /> |
178 | </para></listitem> | 179 | </para></listitem> |
@@ -199,7 +200,7 @@ | |||
199 | <listitem><para><emphasis>Append Files:</emphasis> Files that append build information to | 200 | <listitem><para><emphasis>Append Files:</emphasis> Files that append build information to |
200 | a recipe file. | 201 | a recipe file. |
201 | Append files are known as BitBake append files and <filename>.bbappend</filename> files. | 202 | Append files are known as BitBake append files and <filename>.bbappend</filename> files. |
202 | The Yocto Project build system expects every append file to have a corresponding and | 203 | The OpenEmbedded build system expects every append file to have a corresponding and |
203 | underlying recipe (<filename>.bb</filename>) file. | 204 | underlying recipe (<filename>.bb</filename>) file. |
204 | Furthermore, the append file and the underlying recipe must have the same root filename. | 205 | Furthermore, the append file and the underlying recipe must have the same root filename. |
205 | The filenames can differ only in the file type suffix used (e.g. | 206 | The filenames can differ only in the file type suffix used (e.g. |
@@ -211,9 +212,49 @@ | |||
211 | "<link linkend='changing-recipes-kernel'>Changing <filename>recipes-kernel</filename></link>" | 212 | "<link linkend='changing-recipes-kernel'>Changing <filename>recipes-kernel</filename></link>" |
212 | sections.</para></listitem> | 213 | sections.</para></listitem> |
213 | <listitem><para><emphasis>BitBake:</emphasis> The task executor and scheduler used by | 214 | <listitem><para><emphasis>BitBake:</emphasis> The task executor and scheduler used by |
214 | the Yocto Project to build images. | 215 | the OpenEmbedded build system to build images. |
215 | For more information on BitBake, see the <ulink url='http://bitbake.berlios.de/manual/'> | 216 | For more information on BitBake, see the <ulink url='http://bitbake.berlios.de/manual/'> |
216 | BitBake documentation</ulink>.</para></listitem> | 217 | BitBake documentation</ulink>.</para></listitem> |
218 | <listitem> | ||
219 | <para id='build-directory'><emphasis>Build Directory:</emphasis> | ||
220 | This term refers to the area used by the OpenEmbedded build system for builds. | ||
221 | The area is created when you <filename>source</filename> the setup | ||
222 | environment script that is found in the source directory | ||
223 | (i.e. <filename>oe-init-build-env</filename>). | ||
224 | The <ulink url='&YOCTO_DOCS_REF_URL;#var-TOPDIR'><filename>TOPDIR</filename></ulink> | ||
225 | variable points to the build directory.</para> | ||
226 | |||
227 | <para>You have a lot of flexibility when creating the build directory. | ||
228 | Following are some examples that show how to create the directory: | ||
229 | <itemizedlist> | ||
230 | <listitem><para>Create the build directory in your current working directory | ||
231 | and name it <filename>build</filename>. | ||
232 | This is the default behavior. | ||
233 | <literallayout class='monospaced'> | ||
234 | $ source oe-init-build-env | ||
235 | </literallayout></para></listitem> | ||
236 | <listitem><para>Provide a directory path and specifically name the build | ||
237 | directory. | ||
238 | This next example creates a build directory named <filename>YP-&POKYVERSION;</filename> | ||
239 | in your home directory within the directory <filename>mybuilds</filename>. | ||
240 | If <filename>mybuilds</filename> does not exist, the directory is created for you: | ||
241 | <literallayout class='monospaced'> | ||
242 | $ source &OE_INIT_PATH; $HOME/mybuilds/YP-&POKYVERSION; | ||
243 | </literallayout></para></listitem> | ||
244 | <listitem><para>Provide an existing directory to use as the build directory. | ||
245 | This example uses the existing <filename>mybuilds</filename> directory | ||
246 | as the build directory. | ||
247 | <literallayout class='monospaced'> | ||
248 | $ source &OE_INIT_PATH; $HOME/mybuilds/ | ||
249 | </literallayout></para></listitem> | ||
250 | </itemizedlist> | ||
251 | </para></listitem> | ||
252 | <listitem><para><emphasis>Build System:</emphasis> In the context of the Yocto Project | ||
253 | this term refers to the OpenEmbedded build system used by the project. | ||
254 | This build system is based on the project known as "Poky." | ||
255 | For some historical information about Poky, see the | ||
256 | <link linkend='poky'>poky</link> term further along in this section. | ||
257 | </para></listitem> | ||
217 | <listitem><para><emphasis>Classes:</emphasis> Files that provide for logic encapsulation | 258 | <listitem><para><emphasis>Classes:</emphasis> Files that provide for logic encapsulation |
218 | and inheritance allowing commonly used patterns to be defined once and easily used | 259 | and inheritance allowing commonly used patterns to be defined once and easily used |
219 | in multiple recipes. | 260 | in multiple recipes. |
@@ -222,13 +263,14 @@ | |||
222 | <listitem><para><emphasis>Configuration File:</emphasis> Configuration information in various | 263 | <listitem><para><emphasis>Configuration File:</emphasis> Configuration information in various |
223 | <filename>.conf</filename> files provides global definitions of variables. | 264 | <filename>.conf</filename> files provides global definitions of variables. |
224 | The <filename>conf/local.conf</filename> configuration file in the | 265 | The <filename>conf/local.conf</filename> configuration file in the |
225 | <link linkend='yocto-project-build-directory'>Yocto Project Build Directory</link> | 266 | <link linkend='build-directory'>build directory</link> |
226 | contains user-defined variables that affect each build. | 267 | contains user-defined variables that affect each build. |
227 | The <filename>meta-yocto/conf/distro/poky.conf</filename> configuration file | 268 | The <filename>meta-yocto/conf/distro/poky.conf</filename> configuration file |
228 | defines Yocto ‘distro’ configuration | 269 | defines Yocto ‘distro’ configuration |
229 | variables used only when building with this policy. | 270 | variables used only when building with this policy. |
230 | Machine configuration files, which | 271 | Machine configuration files, which |
231 | are located throughout the Yocto Project file structure, define | 272 | are located throughout the |
273 | <link linkend='source-directory'>source directory</link>, define | ||
232 | variables for specific hardware and are only used when building for that target | 274 | variables for specific hardware and are only used when building for that target |
233 | (e.g. the <filename>machine/beagleboard.conf</filename> configuration file defines | 275 | (e.g. the <filename>machine/beagleboard.conf</filename> configuration file defines |
234 | variables for the Texas Instruments ARM Cortex-A8 development board). | 276 | variables for the Texas Instruments ARM Cortex-A8 development board). |
@@ -239,7 +281,8 @@ | |||
239 | tools and utilities that allow you to develop software for targeted architectures. | 281 | tools and utilities that allow you to develop software for targeted architectures. |
240 | This toolchain contains cross-compilers, linkers, and debuggers that are specific to | 282 | This toolchain contains cross-compilers, linkers, and debuggers that are specific to |
241 | an architecture. | 283 | an architecture. |
242 | You can use the Yocto Project to build cross-development toolchains in tarball form that, when | 284 | You can use the OpenEmbedded build system to build cross-development toolchains in tarball |
285 | form that, when | ||
243 | unpacked, contain the development tools you need to cross-compile and test your software. | 286 | unpacked, contain the development tools you need to cross-compile and test your software. |
244 | The Yocto Project ships with images that contain toolchains for supported architectures | 287 | The Yocto Project ships with images that contain toolchains for supported architectures |
245 | as well. | 288 | as well. |
@@ -261,64 +304,63 @@ | |||
261 | Metadata includes recipes, classes, and configuration files.</para></listitem> | 304 | Metadata includes recipes, classes, and configuration files.</para></listitem> |
262 | <listitem><para><emphasis>OE-Core:</emphasis> A core set of metadata originating | 305 | <listitem><para><emphasis>OE-Core:</emphasis> A core set of metadata originating |
263 | with OpenEmbedded (OE) that is shared between OE and the Yocto Project. | 306 | with OpenEmbedded (OE) that is shared between OE and the Yocto Project. |
264 | This metadata is found in the <filename>meta</filename> directory of the Yocto Project | 307 | This metadata is found in the <filename>meta</filename> directory of the source |
265 | files.</para></listitem> | 308 | directory.</para></listitem> |
266 | <listitem><para><emphasis>Package:</emphasis> The packaged output from a baked recipe. | 309 | <listitem><para><emphasis>Package:</emphasis> The packaged output from a baked recipe. |
267 | A package is generally the compiled binaries produced from the recipe's sources. | 310 | A package is generally the compiled binaries produced from the recipe's sources. |
268 | You ‘bake’ something by running it through BitBake.</para></listitem> | 311 | You ‘bake’ something by running it through BitBake.</para></listitem> |
269 | <listitem><para><emphasis>Poky:</emphasis> The build tool that the Yocto Project | 312 | <listitem><para id='poky'><emphasis>Poky:</emphasis> The term "poky" can mean several things. |
270 | uses to create images.</para></listitem> | 313 | In its most general sence, it is an open-source project that was initially developed |
314 | by OpenedHand. With OpenedHand, poky was developed off of the existing OpenEmbedded | ||
315 | build system becoming a build system for embedded images. | ||
316 | After Intel Corporation aquired OpenedHand, the project poky became the basis for | ||
317 | the Yocto Project's build system. | ||
318 | Within the Yocto Project source repositories, poky exists as a separate Git repository | ||
319 | that can be cloned to yield a local copy on the host system. | ||
320 | Thus, "poky" can refer to the local copy of the source directory used to develop within | ||
321 | the Yocto Project.</para></listitem> | ||
271 | <listitem><para><emphasis>Recipe:</emphasis> A set of instructions for building packages. | 322 | <listitem><para><emphasis>Recipe:</emphasis> A set of instructions for building packages. |
272 | A recipe describes where you get source code and which patches to apply. | 323 | A recipe describes where you get source code and which patches to apply. |
273 | Recipes describe dependencies for libraries or for other recipes, and they | 324 | Recipes describe dependencies for libraries or for other recipes, and they |
274 | also contain configuration and compilation options. | 325 | also contain configuration and compilation options. |
275 | Recipes contain the logical unit of execution, the software/images to build, and | 326 | Recipes contain the logical unit of execution, the software/images to build, and |
276 | use the <filename>.bb</filename> file extension.</para></listitem> | 327 | use the <filename>.bb</filename> file extension.</para></listitem> |
277 | <listitem><para><emphasis>Tasks:</emphasis> Arbitrary groups of software Recipes. | ||
278 | You simply use Tasks to hold recipes that, when built, usually accomplish a single task. | ||
279 | For example, a task could contain the recipes for a company’s proprietary or value-add software. | ||
280 | Or, the task could contain the recipes that enable graphics. | ||
281 | A task is really just another recipe. | ||
282 | Because task files are recipes, they end with the <filename>.bb</filename> filename | ||
283 | extension.</para></listitem> | ||
284 | <listitem><para><emphasis>Upstream:</emphasis> A reference to source code or repositories | ||
285 | that are not local to the development system but located in a master area that is controlled | ||
286 | by the maintainer of the source code. | ||
287 | For example, in order for a developer to work on a particular piece of code, they need to | ||
288 | first get a copy of it from an "upstream" source.</para></listitem> | ||
289 | <listitem> | 328 | <listitem> |
290 | <para id='yocto-project-files'><emphasis>Yocto Project Files:</emphasis> | 329 | <para id='source-directory'><emphasis>Source Directory:</emphasis> |
291 | This term refers to the directory structure created as a result of either downloading | 330 | This term refers to the directory structure created as a result of either downloading |
292 | and unpacking a Yocto Project release tarball or setting up a Git repository | 331 | and unpacking a Yocto Project release tarball or creating a local copy of |
293 | by cloning <filename>git://git.yoctoproject.org/poky</filename>. | 332 | <filename>poky</filename> Git repository <filename>git://git.yoctoproject.org/poky</filename>. |
294 | Sometimes the term "the Yocto Project Files structure" is used as well.</para> | 333 | Sometimes you might here the term "poky directory" used to refer to this |
295 | 334 | directory structure.</para> | |
296 | <para>The Yocto Project Files contain BitBake, Documentation, metadata and | 335 | |
297 | other files that all support the development environment. | 336 | <para>The source directory contains BitBake, Documentation, metadata and |
298 | Consequently, you must have the Yocto Project Files in place on your development | 337 | other files that all support the Yocto Project. |
338 | Consequently, you must have the source directory in place on your development | ||
299 | system in order to do any development using the Yocto Project.</para> | 339 | system in order to do any development using the Yocto Project.</para> |
300 | 340 | ||
301 | <para>The name of the top-level directory of the Yocto Project Files structure | 341 | <para>For tarball expansion, the name of the top-level directory of the source directory |
302 | is derived from the Yocto Project release tarball. | 342 | is derived from the Yocto Project release tarball. |
303 | For example, downloading and unpacking <filename>&YOCTO_POKY_TARBALL;</filename> | 343 | For example, downloading and unpacking <filename>&YOCTO_POKY_TARBALL;</filename> |
304 | results in a Yocto Project file structure whose Yocto Project source directory is named | 344 | results in a source directory whose top-level folder is named |
305 | <filename>&YOCTO_POKY;</filename>. | 345 | <filename>&YOCTO_POKY;</filename>. |
306 | If you create a Git repository, then you can name the repository anything you like. | 346 | If you create a local copy of the Git repository, then you can name the repository |
307 | Throughout much of the documentation, the name of the Git repository is used as the | 347 | anything you like. |
308 | name for the local folder. | 348 | Throughout much of the documentation, <filename>poky</filename> is used as the name of |
349 | the top-level folder of the local copy of the poky Git repository. | ||
309 | So, for example, cloning the <filename>poky</filename> Git repository results in a | 350 | So, for example, cloning the <filename>poky</filename> Git repository results in a |
310 | local Git repository also named <filename>poky</filename>.</para> | 351 | local Git repository whose top-level folder is also named <filename>poky</filename>.</para> |
311 | 352 | ||
312 | <para>It is important to understand the differences between Yocto Project Files created | 353 | <para>It is important to understand the differences between the source directory created |
313 | by unpacking a release tarball as compared to cloning | 354 | by unpacking a released tarball as compared to cloning |
314 | <filename>git://git.yoctoproject.org/poky</filename>. | 355 | <filename>git://git.yoctoproject.org/poky</filename>. |
315 | When you unpack a tarball, you have an exact copy of the files based on the time of | 356 | When you unpack a tarball, you have an exact copy of the files based on the time of |
316 | release - a fixed release point. | 357 | release - a fixed release point. |
317 | Any changes you make to your local Yocto Project Files are on top of the release. | 358 | Any changes you make to your local files in the source directory are on top of the release. |
318 | On the other hand, when you clone the Yocto Project Git repository, you have an | 359 | On the other hand, when you clone the <filename>poky</filename> Git repository, you have an |
319 | active development repository. | 360 | active development repository. |
320 | In this case, any local changes you make to the Yocto Project can be later applied | 361 | In this case, any local changes you make to the source directory can be later applied |
321 | to active development branches of the upstream Yocto Project Git repository.</para> | 362 | to active development branches of the upstream <filename>poky</filename> Git |
363 | repository.</para> | ||
322 | 364 | ||
323 | <para>Finally, if you want to track a set of local changes while starting from the same point | 365 | <para>Finally, if you want to track a set of local changes while starting from the same point |
324 | as a release tarball, you can create a local Git branch that | 366 | as a release tarball, you can create a local Git branch that |
@@ -329,41 +371,18 @@ | |||
329 | see the | 371 | see the |
330 | "<link linkend='repositories-tags-and-branches'>Repositories, Tags, and Branches</link>" | 372 | "<link linkend='repositories-tags-and-branches'>Repositories, Tags, and Branches</link>" |
331 | section.</para></listitem> | 373 | section.</para></listitem> |
332 | <listitem> | 374 | <listitem><para><emphasis>Tasks:</emphasis> Arbitrary groups of software Recipes. |
333 | <para id='yocto-project-build-directory'><emphasis>Yocto Project Build Directory:</emphasis> | 375 | You simply use Tasks to hold recipes that, when built, usually accomplish a single task. |
334 | This term refers to the area used by the Yocto Project for builds. | 376 | For example, a task could contain the recipes for a company’s proprietary or value-add software. |
335 | The area is created when you <filename>source</filename> the Yocto Project setup | 377 | Or, the task could contain the recipes that enable graphics. |
336 | environment script that is found in the Yocto Project files area | 378 | A task is really just another recipe. |
337 | (i.e. <filename>oe-init-build-env</filename>). | 379 | Because task files are recipes, they end with the <filename>.bb</filename> filename |
338 | The <ulink url='&YOCTO_DOCS_REF_URL;#var-TOPDIR'><filename>TOPDIR</filename></ulink> | 380 | extension.</para></listitem> |
339 | variable points to the build directory.</para> | 381 | <listitem><para><emphasis>Upstream:</emphasis> A reference to source code or repositories |
340 | 382 | that are not local to the development system but located in a master area that is controlled | |
341 | <para>You have a lot of flexibility when creating the Yocto Project Build Directory. | 383 | by the maintainer of the source code. |
342 | Following are some examples that show how to create the directory: | 384 | For example, in order for a developer to work on a particular piece of code, they need to |
343 | <itemizedlist> | 385 | first get a copy of it from an "upstream" source.</para></listitem> |
344 | <listitem><para>Create the build directory in your current working directory | ||
345 | and name it <filename>build</filename>. | ||
346 | This is the default behavior. | ||
347 | <literallayout class='monospaced'> | ||
348 | $ cd ~/poky | ||
349 | $ source oe-init-build-env | ||
350 | </literallayout></para></listitem> | ||
351 | <listitem><para>Provide a directory path and specifically name the build | ||
352 | directory. | ||
353 | This next example creates a build directory named <filename>YP-&POKYVERSION;</filename> | ||
354 | in your home directory within the directory <filename>mybuilds</filename>. | ||
355 | If <filename>mybuilds</filename> does not exist, the directory is created for you: | ||
356 | <literallayout class='monospaced'> | ||
357 | $ source &OE_INIT_PATH; $HOME/mybuilds/YP-&POKYVERSION; | ||
358 | </literallayout></para></listitem> | ||
359 | <listitem><para>Provide an existing directory to use as the build directory. | ||
360 | This example uses the existing <filename>mybuilds</filename> directory | ||
361 | as the build directory. | ||
362 | <literallayout class='monospaced'> | ||
363 | $ source &OE_INIT_PATH; $HOME/mybuilds/ | ||
364 | </literallayout></para></listitem> | ||
365 | </itemizedlist> | ||
366 | </para></listitem> | ||
367 | </itemizedlist> | 386 | </itemizedlist> |
368 | </para> | 387 | </para> |
369 | </section> | 388 | </section> |
@@ -403,7 +422,7 @@ | |||
403 | <filename>meta/files/common-licenses</filename>. | 422 | <filename>meta/files/common-licenses</filename>. |
404 | Once the build completes, the list of all licenses found and used during that build are | 423 | Once the build completes, the list of all licenses found and used during that build are |
405 | kept in the | 424 | kept in the |
406 | <link linkend='yocto-project-build-directory'>Yocto Project Build Directory</link> at | 425 | <link linkend='build-directory'>build directory</link> at |
407 | <filename>tmp/deploy/images/licenses</filename>. | 426 | <filename>tmp/deploy/images/licenses</filename>. |
408 | </para> | 427 | </para> |
409 | 428 | ||
diff --git a/documentation/dev-manual/dev-manual-start.xml b/documentation/dev-manual/dev-manual-start.xml index 4dc2cfca00..15748ebfac 100644 --- a/documentation/dev-manual/dev-manual-start.xml +++ b/documentation/dev-manual/dev-manual-start.xml | |||
@@ -24,14 +24,15 @@ | |||
24 | 24 | ||
25 | <para> | 25 | <para> |
26 | The Yocto Project is an open-source collaboration project focused on embedded Linux development. | 26 | The Yocto Project is an open-source collaboration project focused on embedded Linux development. |
27 | The project currently provides a build system, which is sometimes referred to as "Poky", | 27 | The project currently provides a build system, which is |
28 | and provides various ancillary tools suitable for the embedded developer. | 28 | referred to as the OpenEmbedded build system in the Yocto Project documentation. |
29 | The Yocto Project also features the Sato reference User Interface, which is optimized for | 29 | The Yocto Project provides various ancillary tools suitable for the embedded developer |
30 | and also features the Sato reference User Interface, which is optimized for | ||
30 | stylus driven, low-resolution screens. | 31 | stylus driven, low-resolution screens. |
31 | </para> | 32 | </para> |
32 | 33 | ||
33 | <para> | 34 | <para> |
34 | You can use the Yocto Project build system, which uses | 35 | You can use the OpenEmbedded build system, which uses |
35 | <ulink url='http://bitbake.berlios.de/manual/'>BitBake</ulink>, to develop complete Linux | 36 | <ulink url='http://bitbake.berlios.de/manual/'>BitBake</ulink>, to develop complete Linux |
36 | images and associated user-space applications for architectures based on ARM, MIPS, PowerPC, | 37 | images and associated user-space applications for architectures based on ARM, MIPS, PowerPC, |
37 | x86 and x86-64. | 38 | x86 and x86-64. |
@@ -53,56 +54,50 @@ | |||
53 | <listitem><para><emphasis>Host System:</emphasis> You should have a reasonably current | 54 | <listitem><para><emphasis>Host System:</emphasis> You should have a reasonably current |
54 | Linux-based host system. | 55 | Linux-based host system. |
55 | You will have the best results with a recent release of Fedora, | 56 | You will have the best results with a recent release of Fedora, |
56 | OpenSUSE, or Ubuntu as these releases are frequently tested against the Yocto Project | 57 | OpenSUSE, Ubuntu, or CentOS as these releases are frequently tested against the Yocto Project |
57 | and officially supported. | 58 | and officially supported. |
58 | You should also have about 100 gigabytes of free disk space for building images. | 59 | You should also have about 100 gigabytes of free disk space for building images. |
59 | </para></listitem> | 60 | </para></listitem> |
60 | <listitem><para><emphasis>Packages:</emphasis> The Yocto Project requires certain packages | 61 | <listitem><para><emphasis>Packages:</emphasis> The OpenEmbedded build system |
61 | exist on your development system (e.g. Python 2.6 or 2.7). | 62 | requires certain packages exist on your development system (e.g. Python 2.6 or 2.7). |
62 | See "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Packages</ulink>" | 63 | See "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Packages</ulink>" |
63 | section in the Yocto Project Quick Start for the exact package | 64 | section in the Yocto Project Quick Start for the exact package |
64 | requirements and the installation commands to install them | 65 | requirements and the installation commands to install them |
65 | for the supported distributions.</para></listitem> | 66 | for the supported distributions.</para></listitem> |
66 | <listitem id='local-yp-release'><para><emphasis>Yocto Project Release:</emphasis> | 67 | <listitem id='local-yp-release'><para><emphasis>Yocto Project Release:</emphasis> |
67 | You need a release of the Yocto Project. | 68 | You need a release of the Yocto Project. |
68 | You can get set up with local | 69 | You set up a with local <link linkend='source-directory'>source directory</link> |
69 | <link linkend='yocto-project-files'>Yocto Project Files</link> one of two ways | 70 | one of two ways depending on whether you |
70 | depending on whether you | 71 | are going to contribute back into the Yocto Project or not. |
71 | are going to be contributing back into the Yocto Project source repository or not. | ||
72 | <note> | 72 | <note> |
73 | Regardless of the method you use, this manual refers to the resulting | 73 | Regardless of the method you use, this manual refers to the resulting local |
74 | hierarchical set of files as the "Yocto Project Files" or the "Yocto Project File | 74 | hierarchical set of files as the "source directory." |
75 | Structure." | ||
76 | </note> | 75 | </note> |
77 | <itemizedlist> | 76 | <itemizedlist> |
78 | <listitem><para><emphasis>Tarball Extraction:</emphasis> If you are not going to contribute | 77 | <listitem><para><emphasis>Tarball Extraction:</emphasis> If you are not going to contribute |
79 | back into the Yocto Project, you can simply download the Yocto Project release you want | 78 | back into the Yocto Project, you can simply download a Yocto Project release you want |
80 | from the website’s <ulink url='&YOCTO_HOME_URL;/download'>download page</ulink>. | 79 | from the website’s <ulink url='&YOCTO_HOME_URL;/download'>download page</ulink>. |
81 | Once you have the tarball, just extract it into a directory of your choice.</para> | 80 | Once you have the tarball, just extract it into a directory of your choice.</para> |
82 | <para>For example, the following command extracts the Yocto Project &DISTRO; | 81 | <para>For example, the following command extracts the Yocto Project &DISTRO; |
83 | release tarball | 82 | release tarball |
84 | into the current working directory and sets up the Yocto Project file structure | 83 | into the current working directory and sets up the local source directory |
85 | with a top-level directory named <filename>&YOCTO_POKY;</filename>: | 84 | with a top-level folder named <filename>&YOCTO_POKY;</filename>: |
86 | <literallayout class='monospaced'> | 85 | <literallayout class='monospaced'> |
87 | $ tar xfj &YOCTO_POKY_TARBALL; | 86 | $ tar xfj &YOCTO_POKY_TARBALL; |
88 | </literallayout></para> | 87 | </literallayout></para> |
89 | <para>This method does not produce a Git repository. | 88 | <para>This method does not produce a local Git repository. |
90 | Instead, you simply end up with a local snapshot of the | 89 | Instead, you simply end up with a snapshot of the release.</para></listitem> |
91 | Yocto Project files that are based on the particular release in the | ||
92 | tarball.</para></listitem> | ||
93 | <listitem><para><emphasis>Git Repository Method:</emphasis> If you are going to be contributing | 90 | <listitem><para><emphasis>Git Repository Method:</emphasis> If you are going to be contributing |
94 | back into the Yocto Project or you simply want to keep up | 91 | back into the Yocto Project or you simply want to keep up |
95 | with the latest developments, you should use Git commands to set up a local | 92 | with the latest developments, you should use Git commands to set up a local |
96 | Git repository of the Yocto Project Files. | 93 | Git repository of the upstream <filename>poky</filename> source repository. |
97 | Doing so creates a Git repository with a complete history of changes and allows | 94 | Doing so creates a repository with a complete history of changes and allows |
98 | you to easily submit your changes upstream to the project. | 95 | you to easily submit your changes upstream to the project. |
99 | Because you cloned the repository, you have access to all the Yocto Project development | 96 | Because you cloned the repository, you have access to all the Yocto Project development |
100 | branches and tag names used in the upstream repository.</para> | 97 | branches and tag names used in the upstream repository.</para> |
101 | <para>The following transcript shows how to clone the Yocto Project Files' | 98 | <para>The following transcript shows how to clone the <filename>poky</filename> |
102 | Git repository into the current working directory. | 99 | Git repository into the current working directory. |
103 | <note>The name of the Yocto Project Files Git repository in the Yocto Project Files | 100 | <note>You can view the Yocto Project Source Repositories at |
104 | Source Repositories is <filename>poky</filename>. | ||
105 | You can view the Yocto Project Source Repositories at | ||
106 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink></note> | 101 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink></note> |
107 | The command creates the local repository in a directory named <filename>poky</filename>. | 102 | The command creates the local repository in a directory named <filename>poky</filename>. |
108 | For information on Git used within the Yocto Project, see the | 103 | For information on Git used within the Yocto Project, see the |
@@ -131,7 +126,7 @@ | |||
131 | copying that cloned repository. | 126 | copying that cloned repository. |
132 | You can create the bare clone and the copy of the bare clone anywhere you like. | 127 | You can create the bare clone and the copy of the bare clone anywhere you like. |
133 | For simplicity, it is recommended that you create these structures outside of the | 128 | For simplicity, it is recommended that you create these structures outside of the |
134 | Yocto Project Files Git repository.</para> | 129 | source directory (usually <filename>poky</filename>).</para> |
135 | <para>As an example, the following transcript shows how to create the bare clone | 130 | <para>As an example, the following transcript shows how to create the bare clone |
136 | of the <filename>linux-yocto-3.2</filename> kernel and then create a copy of | 131 | of the <filename>linux-yocto-3.2</filename> kernel and then create a copy of |
137 | that clone. | 132 | that clone. |
@@ -166,15 +161,14 @@ | |||
166 | edit to point to your locally modified kernel source files and to build the kernel | 161 | edit to point to your locally modified kernel source files and to build the kernel |
167 | image. | 162 | image. |
168 | Pointing to these local files is much more efficient than requiring a download of the | 163 | Pointing to these local files is much more efficient than requiring a download of the |
169 | source files from upstream each time you make changes to the kernel.</para> | 164 | kernel's source files from upstream each time you make changes to the kernel.</para> |
170 | <para>You can find the <filename>poky-extras</filename> Git Repository in the | 165 | <para>You can find the <filename>poky-extras</filename> Git Repository in the |
171 | "Yocto Metadata Layers" area of the Yocto Project Source Repositories at | 166 | "Yocto Metadata Layers" area of the Yocto Project Source Repositories at |
172 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>. | 167 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>. |
173 | It is good practice to create this Git repository inside the Yocto Project | 168 | It is good practice to create this Git repository inside the source directory.</para> |
174 | files Git repository.</para> | ||
175 | <para>Following is an example that creates the <filename>poky-extras</filename> Git | 169 | <para>Following is an example that creates the <filename>poky-extras</filename> Git |
176 | repository inside the Yocto Project files Git repository, which is named | 170 | repository inside the source directory, which is named <filename>poky</filename> |
177 | <filename>poky</filename> in this case: | 171 | in this case: |
178 | <literallayout class='monospaced'> | 172 | <literallayout class='monospaced'> |
179 | $ git clone git://git.yoctoproject.org/poky-extras poky-extras | 173 | $ git clone git://git.yoctoproject.org/poky-extras poky-extras |
180 | Initialized empty Git repository in /home/scottrif/poky/poky-extras/.git/ | 174 | Initialized empty Git repository in /home/scottrif/poky/poky-extras/.git/ |
@@ -194,7 +188,7 @@ | |||
194 | layer. | 188 | layer. |
195 | You can get set up for BSP development one of two ways: tarball extraction or | 189 | You can get set up for BSP development one of two ways: tarball extraction or |
196 | with a local Git repository. | 190 | with a local Git repository. |
197 | It is a good idea to use the same method used to set up the Yocto Project Files. | 191 | It is a good idea to use the same method that you used to set up the source directory. |
198 | Regardless of the method you use, the Yocto Project uses the following BSP layer | 192 | Regardless of the method you use, the Yocto Project uses the following BSP layer |
199 | naming scheme: | 193 | naming scheme: |
200 | <literallayout class='monospaced'> | 194 | <literallayout class='monospaced'> |
@@ -220,16 +214,16 @@ | |||
220 | Again, this method just produces a snapshot of the BSP layer in the form | 214 | Again, this method just produces a snapshot of the BSP layer in the form |
221 | of a hierarchical directory structure.</para></listitem> | 215 | of a hierarchical directory structure.</para></listitem> |
222 | <listitem><para><emphasis>Git Repository Method:</emphasis> If you are working | 216 | <listitem><para><emphasis>Git Repository Method:</emphasis> If you are working |
223 | with a Yocto Project Files Git repository, you should also use this method | 217 | with a local Git repository for your source directory, you should also use this method |
224 | to set up the <filename>meta-intel</filename> Git repository. | 218 | to set up the <filename>meta-intel</filename> Git repository. |
225 | You can locate the <filename>meta-intel</filename> Git repository in the | 219 | You can locate the <filename>meta-intel</filename> Git repository in the |
226 | "Yocto Metadata Layers" area of the Yocto Project Source Repositories at | 220 | "Yocto Metadata Layers" area of the Yocto Project Source Repositories at |
227 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>.</para> | 221 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>.</para> |
228 | <para>Typically, you set up the <filename>meta-intel</filename> Git repository inside | 222 | <para>Typically, you set up the <filename>meta-intel</filename> Git repository inside |
229 | the Yocto Project Files Git repository. | 223 | the source directory. |
230 | For example, the following transcript shows the steps to clone the | 224 | For example, the following transcript shows the steps to clone the |
231 | <filename>meta-intel</filename> | 225 | <filename>meta-intel</filename> |
232 | Git repository inside the <filename>poky</filename> Git repository. | 226 | Git repository inside the local <filename>poky</filename> Git repository. |
233 | <literallayout class='monospaced'> | 227 | <literallayout class='monospaced'> |
234 | $ git clone git://git.yoctoproject.org/meta-intel.git | 228 | $ git clone git://git.yoctoproject.org/meta-intel.git |
235 | Initialized empty Git repository in /home/scottrif/poky/meta-intel/.git/ | 229 | Initialized empty Git repository in /home/scottrif/poky/meta-intel/.git/ |
@@ -268,13 +262,13 @@ | |||
268 | <para> | 262 | <para> |
269 | The build process is as follows: | 263 | The build process is as follows: |
270 | <orderedlist> | 264 | <orderedlist> |
271 | <listitem><para>Make sure you have the Yocto Project files as described in the | 265 | <listitem><para>Make sure you have set up the source directory described in the |
272 | previous section.</para></listitem> | 266 | previous section.</para></listitem> |
273 | <listitem><para>Initialize the build environment by sourcing a build environment | 267 | <listitem><para>Initialize the build environment by sourcing a build environment |
274 | script.</para></listitem> | 268 | script.</para></listitem> |
275 | <listitem><para>Optionally ensure the <filename>conf/local.conf</filename> configuration file, | 269 | <listitem><para>Optionally ensure the <filename>conf/local.conf</filename> configuration file, |
276 | which is found in the | 270 | which is found in the |
277 | <link linkend='yocto-project-build-directory'>Yocto Project Build Directory</link>, | 271 | <link linkend='build-directory'>build directory</link>, |
278 | is set up how you want it. | 272 | is set up how you want it. |
279 | This file defines many aspects of the build environment including | 273 | This file defines many aspects of the build environment including |
280 | the target machine architecture through the | 274 | the target machine architecture through the |