diff options
| -rw-r--r-- | documentation/getting-started/getting-started-development-environment.xml | 375 |
1 files changed, 254 insertions, 121 deletions
diff --git a/documentation/getting-started/getting-started-development-environment.xml b/documentation/getting-started/getting-started-development-environment.xml index 54a607f6ab..f7d646c2b7 100644 --- a/documentation/getting-started/getting-started-development-environment.xml +++ b/documentation/getting-started/getting-started-development-environment.xml | |||
| @@ -15,9 +15,8 @@ | |||
| 15 | </para> | 15 | </para> |
| 16 | 16 | ||
| 17 | <para> | 17 | <para> |
| 18 | Specifically, this chapter addresses open source philosophy, workflows, | 18 | Specifically, this chapter addresses open source philosophy, source |
| 19 | Git, source repositories, licensing, and development | 19 | repositories, workflows, Git, and licensing. |
| 20 | syntax. | ||
| 21 | </para> | 20 | </para> |
| 22 | 21 | ||
| 23 | <section id='open-source-philosophy'> | 22 | <section id='open-source-philosophy'> |
| @@ -66,8 +65,256 @@ | |||
| 66 | </para> | 65 | </para> |
| 67 | </section> | 66 | </section> |
| 68 | 67 | ||
| 69 | <section id='workflows'> | 68 | <section id='gs-the-development-host'> |
| 70 | <title>Workflows</title> | 69 | <title>The Development Host</title> |
| 70 | |||
| 71 | <para> | ||
| 72 | A development host or build host is key to using the Yocto Project. | ||
| 73 | Because the goal of the Yocto Project is to develop images or | ||
| 74 | applications that run on embedded hardware, development of those | ||
| 75 | images and applications generally takes place on a system not | ||
| 76 | intended to run the software - the development host. | ||
| 77 | </para> | ||
| 78 | |||
| 79 | <para> | ||
| 80 | You need to set up a development host in order to use it with the | ||
| 81 | Yocto Project. | ||
| 82 | Most find that it is best to have a native Linux machine function as | ||
| 83 | the development host. | ||
| 84 | However, it is possible to use a system that does not run Linux | ||
| 85 | as its operating system as your development host. | ||
| 86 | When you have a Mac or Windows-based system, you can set it up | ||
| 87 | as the development host by using | ||
| 88 | <ulink url='https://git.yoctoproject.org/cgit/cgit.cgi/crops/about/'>CROPS</ulink>, | ||
| 89 | which leverages | ||
| 90 | <ulink url='https://www.docker.com/'>Docker Containers</ulink>. | ||
| 91 | Once you take the steps to set up a CROPS machine, you effectively | ||
| 92 | have access to a shell environment that is similar to what you see | ||
| 93 | when using a Linux-based development host. | ||
| 94 | For the steps needed to set up a system using CROPS, see the | ||
| 95 | "<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-to-use-crops'>Setting Up to Use CROss PlatformS (CROPS)</ulink>" | ||
| 96 | section in the Yocto Project Development Tasks Manual. | ||
| 97 | </para> | ||
| 98 | |||
| 99 | <para> | ||
| 100 | If your development host is going to be a system that runs a Linux | ||
| 101 | distribution, steps still exist that you must take to prepare the | ||
| 102 | system for use with the Yocto Project. | ||
| 103 | You need to be sure that the Linux distribution on the system is | ||
| 104 | one that supports the Yocto Project. | ||
| 105 | You also need to be sure that the correct set of host packages are | ||
| 106 | installed that allow development using the Yocto Project. | ||
| 107 | For the steps needed to set up a development host that runs Linux, | ||
| 108 | see the | ||
| 109 | "<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-a-native-linux-host'>Setting Up a Native Linux Host</ulink>" | ||
| 110 | section in the Yocto Project Development Tasks Manual. | ||
| 111 | </para> | ||
| 112 | |||
| 113 | <para> | ||
| 114 | Once your development host is set up to use the Yocto Project, | ||
| 115 | several methods exist for you to do work in the Yocto Project | ||
| 116 | environment: | ||
| 117 | <itemizedlist> | ||
| 118 | <listitem><para> | ||
| 119 | <emphasis>Command Lines, BitBake, and Shells:</emphasis> | ||
| 120 | Traditional development in the Yocto Project involves using | ||
| 121 | OpenEmbedded build system, which uses BitBake, in a | ||
| 122 | command-line environment from a shell on your development | ||
| 123 | host. | ||
| 124 | You can accomplish this from a host that is a native Linux | ||
| 125 | machine or from a host that has been set up with CROPS. | ||
| 126 | Either way, you create, modify, and build images and | ||
| 127 | applications all within a shell-based environment using | ||
| 128 | components and tools available through your Linux distribution | ||
| 129 | and the Yocto Project.</para> | ||
| 130 | |||
| 131 | <para>For a general flow of the build procedures, see the | ||
| 132 | "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-building-an-image'>Building an Image</ulink>" | ||
| 133 | section in the Yocto Project Development Tasks Manual. | ||
| 134 | </para></listitem> | ||
| 135 | <listitem><para> | ||
| 136 | <emphasis>Board Support Package (BSP) Development:</emphasis> | ||
| 137 | Development of BSPs involves using the Yocto Project to | ||
| 138 | create and test layers that allow easy development of | ||
| 139 | images and applications targeted for specific hardware. | ||
| 140 | To development BSPs, you need to take some additional steps | ||
| 141 | beyond what was described in setting up a development host. | ||
| 142 | </para> | ||
| 143 | |||
| 144 | <para>The | ||
| 145 | <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide'</ulink> | ||
| 146 | provides BSP-related development information. | ||
| 147 | For specifics on development host preparation, see the | ||
| 148 | "<ulink url='&YOCTO_DOCS_BSP_URL;#preparing-your-build-host-to-work-with-bsp-layers'>Preparing Your Build Host to Work With BSP Layers</ulink>" | ||
| 149 | section in the Yocto Project Board Support Package (BSP) | ||
| 150 | Developer's Guide. | ||
| 151 | </para></listitem> | ||
| 152 | <listitem><para> | ||
| 153 | <emphasis>Kernel Development:</emphasis> | ||
| 154 | If you are going to be developing kernels using the Yocto | ||
| 155 | Project you likely will be using <filename>devtool</filename>. | ||
| 156 | A workflow using <filename>devtool</filename> makes kernel | ||
| 157 | development quicker by reducing iteration cycle times.</para> | ||
| 158 | |||
| 159 | <para>The | ||
| 160 | <ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;'>Yocto Project Linux Kernel Development Manual</ulink> | ||
| 161 | provides kernel-related development information. | ||
| 162 | For specifics on development host preparation, see the | ||
| 163 | "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#preparing-the-build-host-to-work-on-the-kernel'>Preparing the Build Host to Work on the Kernel</ulink>" | ||
| 164 | section in the Yocto Project Linux Kernel Development Manual. | ||
| 165 | </para></listitem> | ||
| 166 | <listitem><para> | ||
| 167 | <emphasis>Using the <trademark class='trade'>Eclipse</trademark> IDE:</emphasis> | ||
| 168 | One of two Yocto Project development methods that involves an | ||
| 169 | interface that effectively puts the Yocto Project into the | ||
| 170 | background is the popular Eclipse IDE. | ||
| 171 | This method of development is advantageous if you are already | ||
| 172 | familiar with working within Eclipse. | ||
| 173 | Development is supported through a plugin that you install | ||
| 174 | onto your development host.</para> | ||
| 175 | |||
| 176 | <para>For steps that show you how to set up your development | ||
| 177 | host to use the Eclipse Yocto Project plugin, see the | ||
| 178 | "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-eclipse-project'>Developing Applications Using <trademark class='trade'>Eclipse</trademark></ulink>" | ||
| 179 | Chapter in the Yocto Project Application Development and the | ||
| 180 | Extensible Software Development Kit (eSDK) manual. | ||
| 181 | </para></listitem> | ||
| 182 | <listitem><para> | ||
| 183 | <emphasis>Using the Toaster:</emphasis> | ||
| 184 | The other Yocto Project development method that involves an | ||
| 185 | interface that effectively puts the Yocto Project into the | ||
| 186 | background is Toaster. | ||
| 187 | Toaster provides an interface to the OpenEmbedded build system. | ||
| 188 | The interface enables you to configure and run your builds. | ||
| 189 | Information about builds is collected and stored in a database. | ||
| 190 | You can use Toaster to configure and start builds on multiple | ||
| 191 | remote build servers.</para> | ||
| 192 | |||
| 193 | <para>For steps that show you how to set up your development | ||
| 194 | host to use Toaster and on how to use Toaster in general, | ||
| 195 | see the | ||
| 196 | <ulink url='&YOCTO_DOCS_TOAST_URL;'>Toaster User Manual</ulink>. | ||
| 197 | </para></listitem> | ||
| 198 | </itemizedlist> | ||
| 199 | </para> | ||
| 200 | </section> | ||
| 201 | |||
| 202 | <section id='yocto-project-repositories'> | ||
| 203 | <title>Yocto Project Source Repositories</title> | ||
| 204 | |||
| 205 | <para> | ||
| 206 | The Yocto Project team maintains complete source repositories for all | ||
| 207 | Yocto Project files at | ||
| 208 | <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi'></ulink>. | ||
| 209 | This web-based source code browser is organized into categories by | ||
| 210 | function such as IDE Plugins, Matchbox, Poky, Yocto Linux Kernel, and | ||
| 211 | so forth. | ||
| 212 | From the interface, you can click on any particular item in the "Name" | ||
| 213 | column and see the URL at the bottom of the page that you need to clone | ||
| 214 | a Git repository for that particular item. | ||
| 215 | Having a local Git repository of the | ||
| 216 | <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>, | ||
| 217 | which is usually named "poky", allows | ||
| 218 | you to make changes, contribute to the history, and ultimately enhance | ||
| 219 | the Yocto Project's tools, Board Support Packages, and so forth. | ||
| 220 | </para> | ||
| 221 | |||
| 222 | <para> | ||
| 223 | For any supported release of Yocto Project, you can also go to the | ||
| 224 | <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink> and | ||
| 225 | select the "Downloads" tab and get a released tarball of the | ||
| 226 | <filename>poky</filename> repository or any supported BSP tarballs. | ||
| 227 | Unpacking these tarballs gives you a snapshot of the released | ||
| 228 | files. | ||
| 229 | <note><title>Notes</title> | ||
| 230 | <itemizedlist> | ||
| 231 | <listitem><para> | ||
| 232 | The recommended method for setting up the Yocto Project | ||
| 233 | <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink> | ||
| 234 | and the files for supported BSPs | ||
| 235 | (e.g., <filename>meta-intel</filename>) is to use | ||
| 236 | <link linkend='git'>Git</link> to create a local copy of | ||
| 237 | the upstream repositories. | ||
| 238 | </para></listitem> | ||
| 239 | <listitem><para> | ||
| 240 | Be sure to always work in matching branches for both | ||
| 241 | the selected BSP repository and the | ||
| 242 | <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink> | ||
| 243 | (i.e. <filename>poky</filename>) repository. | ||
| 244 | For example, if you have checked out the "master" branch | ||
| 245 | of <filename>poky</filename> and you are going to use | ||
| 246 | <filename>meta-intel</filename>, be sure to checkout the | ||
| 247 | "master" branch of <filename>meta-intel</filename>. | ||
| 248 | </para></listitem> | ||
| 249 | </itemizedlist> | ||
| 250 | </note> | ||
| 251 | </para> | ||
| 252 | |||
| 253 | <para> | ||
| 254 | In summary, here is where you can get the project files needed for | ||
| 255 | development: | ||
| 256 | <itemizedlist> | ||
| 257 | <listitem><para id='source-repositories'> | ||
| 258 | <emphasis> | ||
| 259 | <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi'>Source Repositories:</ulink> | ||
| 260 | </emphasis> | ||
| 261 | This area contains IDE Plugins, Matchbox, Poky, Poky Support, | ||
| 262 | Tools, Yocto Linux Kernel, and Yocto Metadata Layers. | ||
| 263 | You can create local copies of Git repositories for each of | ||
| 264 | these areas.</para> | ||
| 265 | |||
| 266 | <para> | ||
| 267 | <imagedata fileref="figures/source-repos.png" align="center" width="6in" depth="4in" /> | ||
| 268 | For steps on how to view and access these upstream Git | ||
| 269 | repositories, see the | ||
| 270 | "<ulink url='&YOCTO_DOCS_DEV_URL;#accessing-source-repositories'>Accessing Source Repositories</ulink>" | ||
| 271 | Section in the Yocto Project Development Tasks Manual. | ||
| 272 | </para></listitem> | ||
| 273 | <listitem><para><anchor id='index-downloads' /> | ||
| 274 | <emphasis> | ||
| 275 | <ulink url='&YOCTO_DL_URL;/releases/'>Index of /releases:</ulink> | ||
| 276 | </emphasis> | ||
| 277 | This is an index of releases such as | ||
| 278 | the <trademark class='trade'>Eclipse</trademark> | ||
| 279 | Yocto Plug-in, miscellaneous support, Poky, Pseudo, installers | ||
| 280 | for cross-development toolchains, and all released versions of | ||
| 281 | Yocto Project in the form of images or tarballs. | ||
| 282 | Downloading and extracting these files does not produce a local | ||
| 283 | copy of the Git repository but rather a snapshot of a | ||
| 284 | particular release or image.</para> | ||
| 285 | |||
| 286 | <para> | ||
| 287 | <imagedata fileref="figures/index-downloads.png" align="center" width="6in" depth="3.5in" /> | ||
| 288 | For steps on how to view and access these files, see the | ||
| 289 | "<ulink url='&YOCTO_DOCS_DEV_URL;#accessing-index-of-releases'>Accessing Index of Releases</ulink>" | ||
| 290 | section in the Yocto Project Development Tasks Manual. | ||
| 291 | </para></listitem> | ||
| 292 | <listitem><para id='downloads-page'> | ||
| 293 | <emphasis>"Downloads" page for the | ||
| 294 | <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>: | ||
| 295 | </emphasis></para> | ||
| 296 | |||
| 297 | <para role="writernotes">This section will change due to | ||
| 298 | reworking of the YP Website.</para> | ||
| 299 | |||
| 300 | <para>The Yocto Project website includes a "Downloads" tab | ||
| 301 | that allows you to download any Yocto Project | ||
| 302 | release and Board Support Package (BSP) in tarball form. | ||
| 303 | The tarballs are similar to those found in the | ||
| 304 | <ulink url='&YOCTO_DL_URL;/releases/'>Index of /releases:</ulink> area.</para> | ||
| 305 | |||
| 306 | <para> | ||
| 307 | <imagedata fileref="figures/yp-download.png" align="center" width="6in" depth="4in" /> | ||
| 308 | For steps on how to use the "Downloads" page, see the | ||
| 309 | "<ulink url='&YOCTO_DOCS_DEV_URL;#using-the-downloads-page'>Using the Downloads Page</ulink>" | ||
| 310 | section in the Yocto Project Development Tasks Manual. | ||
| 311 | </para></listitem> | ||
| 312 | </itemizedlist> | ||
| 313 | </para> | ||
| 314 | </section> | ||
| 315 | |||
| 316 | <section id='gs-git-workflows-and-the-yocto-project'> | ||
| 317 | <title>Git Workflows and the Yocto Project</title> | ||
| 71 | 318 | ||
| 72 | <para> | 319 | <para> |
| 73 | This section provides workflow concepts using the Yocto Project and | 320 | This section provides workflow concepts using the Yocto Project and |
| @@ -298,8 +545,8 @@ | |||
| 298 | 545 | ||
| 299 | <para> | 546 | <para> |
| 300 | As mentioned briefly in the previous section and also in the | 547 | As mentioned briefly in the previous section and also in the |
| 301 | "<link linkend='workflows'>Workflows</link>" section, | 548 | "<link linkend='gs-git-workflows-and-the-yocto-project'>Git Workflows and the Yocto Project</link>" |
| 302 | the Yocto Project maintains source repositories at | 549 | section, the Yocto Project maintains source repositories at |
| 303 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>. | 550 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>. |
| 304 | If you look at this web-interface of the repositories, each item | 551 | If you look at this web-interface of the repositories, each item |
| 305 | is a separate Git repository. | 552 | is a separate Git repository. |
| @@ -622,120 +869,6 @@ | |||
| 622 | </section> | 869 | </section> |
| 623 | </section> | 870 | </section> |
| 624 | 871 | ||
| 625 | <section id='yocto-project-repositories'> | ||
| 626 | <title>Yocto Project Source Repositories</title> | ||
| 627 | |||
| 628 | <para> | ||
| 629 | The Yocto Project team maintains complete source repositories for all | ||
| 630 | Yocto Project files at | ||
| 631 | <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi'></ulink>. | ||
| 632 | This web-based source code browser is organized into categories by | ||
| 633 | function such as IDE Plugins, Matchbox, Poky, Yocto Linux Kernel, and | ||
| 634 | so forth. | ||
| 635 | From the interface, you can click on any particular item in the "Name" | ||
| 636 | column and see the URL at the bottom of the page that you need to clone | ||
| 637 | a Git repository for that particular item. | ||
| 638 | Having a local Git repository of the | ||
| 639 | <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>, | ||
| 640 | which is usually named "poky", allows | ||
| 641 | you to make changes, contribute to the history, and ultimately enhance | ||
| 642 | the Yocto Project's tools, Board Support Packages, and so forth. | ||
| 643 | </para> | ||
| 644 | |||
| 645 | <para> | ||
| 646 | For any supported release of Yocto Project, you can also go to the | ||
| 647 | <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink> and | ||
| 648 | select the "Downloads" tab and get a released tarball of the | ||
| 649 | <filename>poky</filename> repository or any supported BSP tarballs. | ||
| 650 | Unpacking these tarballs gives you a snapshot of the released | ||
| 651 | files. | ||
| 652 | <note><title>Notes</title> | ||
| 653 | <itemizedlist> | ||
| 654 | <listitem><para> | ||
| 655 | The recommended method for setting up the Yocto Project | ||
| 656 | <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink> | ||
| 657 | and the files for supported BSPs | ||
| 658 | (e.g., <filename>meta-intel</filename>) is to use | ||
| 659 | <link linkend='git'>Git</link> to create a local copy of | ||
| 660 | the upstream repositories. | ||
| 661 | </para></listitem> | ||
| 662 | <listitem><para> | ||
| 663 | Be sure to always work in matching branches for both | ||
| 664 | the selected BSP repository and the | ||
| 665 | <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink> | ||
| 666 | (i.e. <filename>poky</filename>) repository. | ||
| 667 | For example, if you have checked out the "master" branch | ||
| 668 | of <filename>poky</filename> and you are going to use | ||
| 669 | <filename>meta-intel</filename>, be sure to checkout the | ||
| 670 | "master" branch of <filename>meta-intel</filename>. | ||
| 671 | </para></listitem> | ||
| 672 | </itemizedlist> | ||
| 673 | </note> | ||
| 674 | </para> | ||
| 675 | |||
| 676 | <para> | ||
| 677 | In summary, here is where you can get the project files needed for | ||
| 678 | development: | ||
| 679 | <itemizedlist> | ||
| 680 | <listitem><para id='source-repositories'> | ||
| 681 | <emphasis> | ||
| 682 | <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi'>Source Repositories:</ulink> | ||
| 683 | </emphasis> | ||
| 684 | This area contains IDE Plugins, Matchbox, Poky, Poky Support, | ||
| 685 | Tools, Yocto Linux Kernel, and Yocto Metadata Layers. | ||
| 686 | You can create local copies of Git repositories for each of | ||
| 687 | these areas.</para> | ||
| 688 | |||
| 689 | <para> | ||
| 690 | <imagedata fileref="figures/source-repos.png" align="center" width="6in" depth="4in" /> | ||
| 691 | For steps on how to view and access these upstream Git | ||
| 692 | repositories, see the | ||
| 693 | "<ulink url='&YOCTO_DOCS_DEV_URL;#accessing-source-repositories'>Accessing Source Repositories</ulink>" | ||
| 694 | Section in the Yocto Project Development Tasks Manual. | ||
| 695 | </para></listitem> | ||
| 696 | <listitem><para><anchor id='index-downloads' /> | ||
| 697 | <emphasis> | ||
| 698 | <ulink url='&YOCTO_DL_URL;/releases/'>Index of /releases:</ulink> | ||
| 699 | </emphasis> | ||
| 700 | This is an index of releases such as | ||
| 701 | the <trademark class='trade'>Eclipse</trademark> | ||
| 702 | Yocto Plug-in, miscellaneous support, Poky, Pseudo, installers | ||
| 703 | for cross-development toolchains, and all released versions of | ||
| 704 | Yocto Project in the form of images or tarballs. | ||
| 705 | Downloading and extracting these files does not produce a local | ||
| 706 | copy of the Git repository but rather a snapshot of a | ||
| 707 | particular release or image.</para> | ||
| 708 | |||
| 709 | <para> | ||
| 710 | <imagedata fileref="figures/index-downloads.png" align="center" width="6in" depth="3.5in" /> | ||
| 711 | For steps on how to view and access these files, see the | ||
| 712 | "<ulink url='&YOCTO_DOCS_DEV_URL;#accessing-index-of-releases'>Accessing Index of Releases</ulink>" | ||
| 713 | section in the Yocto Project Development Tasks Manual. | ||
| 714 | </para></listitem> | ||
| 715 | <listitem><para id='downloads-page'> | ||
| 716 | <emphasis>"Downloads" page for the | ||
| 717 | <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>: | ||
| 718 | </emphasis></para> | ||
| 719 | |||
| 720 | <para role="writernotes">This section will change due to | ||
| 721 | reworking of the YP Website.</para> | ||
| 722 | |||
| 723 | <para>The Yocto Project website includes a "Downloads" tab | ||
| 724 | that allows you to download any Yocto Project | ||
| 725 | release and Board Support Package (BSP) in tarball form. | ||
| 726 | The tarballs are similar to those found in the | ||
| 727 | <ulink url='&YOCTO_DL_URL;/releases/'>Index of /releases:</ulink> area.</para> | ||
| 728 | |||
| 729 | <para> | ||
| 730 | <imagedata fileref="figures/yp-download.png" align="center" width="6in" depth="4in" /> | ||
| 731 | For steps on how to use the "Downloads" page, see the | ||
| 732 | "<ulink url='&YOCTO_DOCS_DEV_URL;#using-the-downloads-page'>Using the Downloads Page</ulink>" | ||
| 733 | section in the Yocto Project Development Tasks Manual. | ||
| 734 | </para></listitem> | ||
| 735 | </itemizedlist> | ||
| 736 | </para> | ||
| 737 | </section> | ||
| 738 | |||
| 739 | <section id='licensing'> | 872 | <section id='licensing'> |
| 740 | <title>Licensing</title> | 873 | <title>Licensing</title> |
| 741 | 874 | ||
