blob: 59ffa49bb623cce06d07a726fe569488affcf658 [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
2"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
3[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
4
5<chapter id='dev-manual-start'>
6
Brad Bishop316dfdd2018-06-25 12:45:53 -04007<title>Setting Up to Use the Yocto Project</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008
9<para>
Brad Bishopd7bf8c12018-02-25 22:55:05 -050010 This chapter provides procedures related to getting set up to use the
11 Yocto Project.
Brad Bishop316dfdd2018-06-25 12:45:53 -040012 You can learn about creating a team environment that develops using the
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080013 Yocto Project, how to set up a
14 <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host</ulink>,
15 how to locate Yocto Project source repositories, and how to create local
16 Git repositories.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050017</para>
18
Brad Bishop316dfdd2018-06-25 12:45:53 -040019<section id="usingpoky-changes-collaborate">
20 <title>Creating a Team Development Environment</title>
21
22 <para>
23 It might not be immediately clear how you can use the Yocto
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080024 Project in a team development environment, or how to scale it for a
25 large team of developers.
Brad Bishop79641f22019-09-10 07:20:22 -040026 You can adapt the Yocto Project to many different use cases and
27 scenarios.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080028 However, this flexibility could cause difficulties if you are trying
Brad Bishop316dfdd2018-06-25 12:45:53 -040029 to create a working setup that scales across a large team.
30 </para>
31
32 <para>
33 To help you understand how to set up this type of environment,
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080034 this section presents a procedure that gives you information
35 that can help you get the results you want.
Brad Bishop316dfdd2018-06-25 12:45:53 -040036 The procedure is high-level and presents some of the project's most
37 successful experiences, practices, solutions, and available
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080038 technologies that have proved to work well in the past.
Brad Bishop316dfdd2018-06-25 12:45:53 -040039 Keep in mind, the procedure here is a starting point.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080040 You can build off these steps and customize the procedure to fit any
Brad Bishop316dfdd2018-06-25 12:45:53 -040041 particular working environment and set of practices.
42 <orderedlist>
43 <listitem><para>
44 <emphasis>Determine Who is Going to be Developing:</emphasis>
45 You need to understand who is going to be doing anything
Brad Bishop19323692019-04-05 15:28:33 -040046 related to the Yocto Project and determine their roles.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080047 Making this determination is essential to completing
Brad Bishop316dfdd2018-06-25 12:45:53 -040048 steps two and three, which are to get your equipment together
49 and set up your development environment's hardware topology.
50 </para>
51
52 <para>The following roles exist:
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080053 <itemizedlist>
54 <listitem><para>
55 <emphasis>Application Developer:</emphasis>
56 This type of developer does application level work
57 on top of an existing software stack.
58 </para></listitem>
59 <listitem><para>
60 <emphasis>Core System Developer:</emphasis>
61 This type of developer works on the contents of the
62 operating system image itself.
63 </para></listitem>
64 <listitem><para>
65 <emphasis>Build Engineer:</emphasis>
66 This type of developer manages Autobuilders and
67 releases.
68 Not all environments need a Build Engineer.
69 </para></listitem>
70 <listitem><para>
71 <emphasis>Test Engineer:</emphasis>
72 This type of developer creates and manages automated
73 tests that are used to ensure all application and
74 core system development meets desired quality
75 standards.
76 </para></listitem>
77 </itemizedlist>
Brad Bishop316dfdd2018-06-25 12:45:53 -040078 </para></listitem>
79 <listitem><para>
80 <emphasis>Gather the Hardware:</emphasis>
81 Based on the size and make-up of the team, get the hardware
82 together.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080083 Ideally, any development, build, or test engineer uses
84 a system that runs a supported Linux distribution.
85 These systems, in general, should be high performance
86 (e.g. dual, six-core Xeons with 24 Gbytes of RAM and plenty
87 of disk space).
Brad Bishop316dfdd2018-06-25 12:45:53 -040088 You can help ensure efficiency by having any machines used
89 for testing or that run Autobuilders be as high performance
90 as possible.
91 </para></listitem>
92 <listitem><para>
93 <emphasis>Understand the Hardware Topology of the Environment:</emphasis>
94 Once you understand the hardware involved and the make-up
95 of the team, you can understand the hardware topology of the
96 development environment.
97 You can get a visual idea of the machines and their roles
98 across the development environment.
99
100<!--
101 The following figure shows a moderately sized Yocto Project
102 development environment.
103
104 <para role="writernotes">
105 Need figure.</para>
106-->
107
108 </para></listitem>
109 <listitem><para>
110 <emphasis>Use Git as Your Source Control Manager (SCM):</emphasis>
111 Keeping your
112 <ulink url='&YOCTO_DOCS_REF_URL;#metadata'>Metadata</ulink>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800113 (i.e. recipes, configuration files, classes, and so forth)
114 and any software you are developing under the control of an SCM
115 system that is compatible with the OpenEmbedded build system
116 is advisable.
117 Of the SCMs BitBake supports, the Yocto Project team strongly
118 recommends using
Brad Bishop316dfdd2018-06-25 12:45:53 -0400119 <ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink>.
120 Git is a distributed system that is easy to backup,
121 allows you to work remotely, and then connects back to the
122 infrastructure.
123 <note>
124 For information about BitBake, see the
125 <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>.
126 </note></para>
127
128 <para>It is relatively easy to set up Git services and create
129 infrastructure like
130 <ulink url='&YOCTO_GIT_URL;'>http://git.yoctoproject.org</ulink>,
131 which is based on server software called
132 <filename>gitolite</filename> with <filename>cgit</filename>
133 being used to generate the web interface that lets you view the
134 repositories.
135 The <filename>gitolite</filename> software identifies users
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800136 using SSH keys and allows branch-based access controls to
137 repositories that you can control as little or as much as
138 necessary.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400139 <note>
140 The setup of these services is beyond the scope of this
141 manual.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800142 However, sites such as the following exist that describe
143 how to perform setup:
Brad Bishop316dfdd2018-06-25 12:45:53 -0400144 <itemizedlist>
145 <listitem><para>
146 <ulink url='http://git-scm.com/book/ch4-8.html'>Git documentation</ulink>:
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800147 Describes how to install
148 <filename>gitolite</filename> on the server.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400149 </para></listitem>
150 <listitem><para>
151 <ulink url='http://gitolite.com'>Gitolite</ulink>:
152 Information for <filename>gitolite</filename>.
153 </para></listitem>
154 <listitem><para>
155 <ulink url='https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools'>Interfaces, frontends, and tools</ulink>:
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800156 Documentation on how to create interfaces and
157 frontends for Git.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400158 </para></listitem>
159 </itemizedlist>
160 </note>
161 </para></listitem>
162 <listitem><para>
163 <emphasis>Set up the Application Development Machines:</emphasis>
164 As mentioned earlier, application developers are creating
165 applications on top of existing software stacks.
166 Following are some best practices for setting up machines
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800167 used for application development:
Brad Bishop316dfdd2018-06-25 12:45:53 -0400168 <itemizedlist>
169 <listitem><para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800170 Use a pre-built toolchain that contains the software
171 stack itself.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400172 Then, develop the application code on top of the
173 stack.
174 This method works well for small numbers of relatively
175 isolated applications.
176 </para></listitem>
177 <listitem><para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400178 Keep your cross-development toolchains updated.
179 You can do this through provisioning either as new
180 toolchain downloads or as updates through a package
181 update mechanism using <filename>opkg</filename>
182 to provide updates to an existing toolchain.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800183 The exact mechanics of how and when to do this depend
184 on local policy.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400185 </para></listitem>
186 <listitem><para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800187 Use multiple toolchains installed locally into
188 different locations to allow development across
Brad Bishop316dfdd2018-06-25 12:45:53 -0400189 versions.
190 </para></listitem>
191 </itemizedlist>
192 </para></listitem>
193 <listitem><para>
194 <emphasis>Set up the Core Development Machines:</emphasis>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800195 As mentioned earlier, core developers work on the contents of
196 the operating system itself.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400197 Following are some best practices for setting up machines
198 used for developing images:
199 <itemizedlist>
200 <listitem><para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800201 Have the
202 <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>
203 available on the developer workstations so developers
204 can run their own builds and directly rebuild the
205 software stack.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400206 </para></listitem>
207 <listitem><para>
208 Keep the core system unchanged as much as
209 possible and do your work in layers on top of the
210 core system.
211 Doing so gives you a greater level of portability when
212 upgrading to new versions of the core system or Board
213 Support Packages (BSPs).
214 </para></listitem>
215 <listitem><para>
216 Share layers amongst the developers of a
217 particular project and contain the policy configuration
218 that defines the project.
219 </para></listitem>
220 </itemizedlist>
221 </para></listitem>
222 <listitem><para>
223 <emphasis>Set up an Autobuilder:</emphasis>
224 Autobuilders are often the core of the development
225 environment.
226 It is here that changes from individual developers are brought
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800227 together and centrally tested.
228 Based on this automated build and test environment, subsequent
229 decisions about releases can be made.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400230 Autobuilders also allow for "continuous integration" style
231 testing of software components and regression identification
232 and tracking.</para>
233
234 <para>See "<ulink url='http://autobuilder.yoctoproject.org'>Yocto Project Autobuilder</ulink>"
235 for more information and links to buildbot.
236 The Yocto Project team has found this implementation
237 works well in this role.
238 A public example of this is the Yocto Project
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800239 Autobuilders, which the Yocto Project team uses to test the
240 overall health of the project.</para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400241
242 <para>The features of this system are:
243 <itemizedlist>
244 <listitem><para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800245 Highlights when commits break the build.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400246 </para></listitem>
247 <listitem><para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800248 Populates an
249 <ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>sstate cache</ulink>
250 from which developers can pull rather than requiring
251 local builds.
252 </para></listitem>
253 <listitem><para>
254 Allows commit hook triggers, which trigger builds when
255 commits are made.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400256 </para></listitem>
257 <listitem><para>
258 Allows triggering of automated image booting
259 and testing under the QuickEMUlator (QEMU).
260 </para></listitem>
261 <listitem><para>
262 Supports incremental build testing and
263 from-scratch builds.
264 </para></listitem>
265 <listitem><para>
266 Shares output that allows developer
267 testing and historical regression investigation.
268 </para></listitem>
269 <listitem><para>
270 Creates output that can be used for releases.
271 </para></listitem>
272 <listitem><para>
273 Allows scheduling of builds so that resources
274 can be used efficiently.
275 </para></listitem>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800276 </itemizedlist>
277 </para></listitem>
278 <listitem><para>
279 <emphasis>Set up Test Machines:</emphasis>
280 Use a small number of shared, high performance systems
281 for testing purposes.
282 Developers can use these systems for wider, more
283 extensive testing while they continue to develop
284 locally using their primary development system.
285 </para></listitem>
286 <listitem><para>
287 <emphasis>Document Policies and Change Flow:</emphasis>
288 The Yocto Project uses a hierarchical structure and a
Brad Bishop316dfdd2018-06-25 12:45:53 -0400289 pull model.
290 Scripts exist to create and send pull requests
291 (i.e. <filename>create-pull-request</filename> and
292 <filename>send-pull-request</filename>).
293 This model is in line with other open source projects where
294 maintainers are responsible for specific areas of the project
295 and a single maintainer handles the final "top-of-tree" merges.
296 <note>
297 You can also use a more collective push model.
298 The <filename>gitolite</filename> software supports both the
299 push and pull models quite easily.
300 </note></para>
301
302 <para>As with any development environment, it is important
303 to document the policy used as well as any main project
304 guidelines so they are understood by everyone.
305 It is also a good idea to have well structured
306 commit messages, which are usually a part of a project's
307 guidelines.
308 Good commit messages are essential when looking back in time and
309 trying to understand why changes were made.</para>
310
311 <para>If you discover that changes are needed to the core
312 layer of the project, it is worth sharing those with the
313 community as soon as possible.
314 Chances are if you have discovered the need for changes,
315 someone else in the community needs them also.
316 </para></listitem>
317 <listitem><para>
318 <emphasis>Development Environment Summary:</emphasis>
319 Aside from the previous steps, some best practices exist
320 within the Yocto Project development environment.
321 Consider the following:
322 <itemizedlist>
323 <listitem><para>
324 Use
325 <ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink>
326 as the source control system.
327 </para></listitem>
328 <listitem><para>
329 Maintain your Metadata in layers that make sense
330 for your situation.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800331 See the
332 "<ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
333 section in the Yocto Project Overview and Concepts
334 Manual and the
335 "<link linkend='understanding-and-creating-layers'>Understanding and Creating Layers</link>"
336 section for more information on layers.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400337 </para></listitem>
338 <listitem><para>
339 Separate the project's Metadata and code by using
340 separate Git repositories.
341 See the
342 "<ulink url='&YOCTO_DOCS_OM_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>"
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800343 section in the Yocto Project Overview and Concepts
344 Manual for information on these repositories.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400345 See the
346 "<link linkend='locating-yocto-project-source-files'>Locating Yocto Project Source Files</link>"
347 section for information on how to set up local Git
348 repositories for related upstream Yocto Project
349 Git repositories.
350 </para></listitem>
351 <listitem><para>
352 Set up the directory for the shared state cache
353 (<ulink url='&YOCTO_DOCS_REF_URL;#var-SSTATE_DIR'><filename>SSTATE_DIR</filename></ulink>)
354 where it makes sense.
355 For example, set up the sstate cache on a system used
356 by developers in the same organization and share the
357 same source directories on their machines.
358 </para></listitem>
359 <listitem><para>
360 Set up an Autobuilder and have it populate the
361 sstate cache and source directories.
362 </para></listitem>
363 <listitem><para>
364 The Yocto Project community encourages you
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800365 to send patches to the project to fix bugs or add
366 features.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400367 If you do submit patches, follow the project commit
368 guidelines for writing good commit messages.
369 See the "<link linkend='how-to-submit-a-change'>Submitting a Change to the Yocto Project</link>"
370 section.
371 </para></listitem>
372 <listitem><para>
373 Send changes to the core sooner than later
374 as others are likely to run into the same issues.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800375 For some guidance on mailing lists to use, see the list
376 in the
Brad Bishop316dfdd2018-06-25 12:45:53 -0400377 "<link linkend='how-to-submit-a-change'>Submitting a Change to the Yocto Project</link>"
378 section.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800379 For a description of the available mailing lists, see
380 the
Brad Bishop316dfdd2018-06-25 12:45:53 -0400381 "<ulink url='&YOCTO_DOCS_REF_URL;#resources-mailinglist'>Mailing Lists</ulink>"
382 section in the Yocto Project Reference Manual.
383 </para></listitem>
384 </itemizedlist>
385 </para></listitem>
386 </orderedlist>
387 </para>
388</section>
389
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800390<section id='dev-preparing-the-build-host'>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400391 <title>Preparing the Build Host</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500392
393 <para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800394 This section provides procedures to set up a system to be used as your
395 <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host</ulink>
396 for development using the Yocto Project.
397 Your build host can be a native Linux machine (recommended) or it can
398 be a machine (Linux, Mac, or Windows) that uses
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500399 <ulink url='https://git.yoctoproject.org/cgit/cgit.cgi/crops/about/'>CROPS</ulink>,
400 which leverages
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800401 <ulink url='https://www.docker.com/'>Docker Containers</ulink>.
402 <note>
403 You cannot use a build host that is using the
404 <ulink url='https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux'>Windows Subsystem for Linux</ulink>
405 (WSL).
406 The Yocto Project is not compatible with WSL.
407 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500408 </para>
409
410 <para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800411 Once your build host is set up to use the Yocto Project,
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500412 further steps are necessary depending on what you want to
413 accomplish.
414 See the following references for information on how to prepare for
Brad Bishopc342db32019-05-15 21:57:59 -0400415 Board Support Package (BSP) development and kernel development:
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500416 <itemizedlist>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500417 <listitem><para>
418 <emphasis>BSP Development:</emphasis>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500419 See the
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500420 "<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>"
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500421 section in the Yocto Project Board Support Package (BSP)
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500422 Developer's Guide.
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500423 </para></listitem>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500424 <listitem><para>
425 <emphasis>Kernel Development:</emphasis>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500426 See the
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500427 "<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>"
428 section in the Yocto Project Linux Kernel Development Manual.
429 </para></listitem>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500430 </itemizedlist>
431 </para>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500432
433 <section id='setting-up-a-native-linux-host'>
434 <title>Setting Up a Native Linux Host</title>
435
436 <para>
437 Follow these steps to prepare a native Linux machine as your
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800438 Yocto Project Build Host:
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500439 <orderedlist>
440 <listitem><para>
441 <emphasis>Use a Supported Linux Distribution:</emphasis>
442 You should have a reasonably current Linux-based host
443 system.
444 You will have the best results with a recent release of
445 Fedora, openSUSE, Debian, Ubuntu, or CentOS as these
446 releases are frequently tested against the Yocto Project
447 and officially supported.
448 For a list of the distributions under validation and their
449 status, see the
450 "<ulink url='&YOCTO_DOCS_REF_URL;#detailed-supported-distros'>Supported Linux Distributions</ulink>" section
451 in the Yocto Project Reference Manual and the wiki page at
452 <ulink url='&YOCTO_WIKI_URL;/wiki/Distribution_Support'>Distribution Support</ulink>.
453 </para></listitem>
454 <listitem><para>
455 <emphasis>Have Enough Free Memory:</emphasis>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800456 Your system should have at least 50 Gbytes of free disk
457 space for building images.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500458 </para></listitem>
459 <listitem><para>
460 <emphasis>Meet Minimal Version Requirements:</emphasis>
461 The OpenEmbedded build system should be able to run on any
462 modern distribution that has the following versions for
463 Git, tar, and Python.
464 <itemizedlist>
465 <listitem><para>
466 Git 1.8.3.1 or greater
467 </para></listitem>
468 <listitem><para>
469 tar 1.27 or greater
470 </para></listitem>
471 <listitem><para>
472 Python 3.4.0 or greater.
473 </para></listitem>
474 </itemizedlist>
475 If your build host does not meet any of these three listed
476 version requirements, you can take steps to prepare the
477 system so that you can still use the Yocto Project.
478 See the
479 "<ulink url='&YOCTO_DOCS_REF_URL;#required-git-tar-and-python-versions'>Required Git, tar, and Python Versions</ulink>"
480 section in the Yocto Project Reference Manual for
481 information.
482 </para></listitem>
483 <listitem><para>
484 <emphasis>Install Development Host Packages:</emphasis>
485 Required development host packages vary depending on your
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800486 build host and what you want to do with the Yocto
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500487 Project.
488 Collectively, the number of required packages is large
489 if you want to be able to cover all cases.</para>
490
491 <para>For lists of required packages for all scenarios,
492 see the
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800493 "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-build-host'>Required Packages for the Build Host</ulink>"
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500494 section in the Yocto Project Reference Manual.
495 </para></listitem>
496 </orderedlist>
497 Once you have completed the previous steps, you are ready to
498 continue using a given development path on your native Linux
499 machine.
500 If you are going to use BitBake, see the
501 "<link linkend='cloning-the-poky-repository'>Cloning the <filename>poky</filename> Repository</link>"
502 section.
503 If you are going to use the Extensible SDK, see the
504 "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-extensible'>Using the Extensible SDK</ulink>"
505 Chapter in the Yocto Project Application Development and the
506 Extensible Software Development Kit (eSDK) manual.
507 If you want to work on the kernel, see the
508 <ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;'>Yocto Project Linux Kernel Development Manual</ulink>.
509 If you are going to use Toaster, see the
510 "<ulink url='&YOCTO_DOCS_TOAST_URL;#toaster-manual-setup-and-use'>Setting Up and Using Toaster</ulink>"
511 section in the Toaster User Manual.
512 </para>
513 </section>
514
515 <section id='setting-up-to-use-crops'>
516 <title>Setting Up to Use CROss PlatformS (CROPS)</title>
517
518 <para>
519 With
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800520 <ulink url='https://github.com/crops/crops/blob/master/README.md'>CROPS</ulink>,
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500521 which leverages
522 <ulink url='https://www.docker.com/'>Docker Containers</ulink>,
523 you can create a Yocto Project development environment that
524 is operating system agnostic.
525 You can set up a container in which you can develop using the
526 Yocto Project on a Windows, Mac, or Linux machine.
527 </para>
528
529 <para>
530 Follow these general steps to prepare a Windows, Mac, or Linux
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800531 machine as your Yocto Project build host:
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500532 <orderedlist>
533 <listitem><para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800534 <emphasis>Determine What Your Build Host Needs:</emphasis>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500535 <ulink url='https://www.docker.com/what-docker'>Docker</ulink>
536 is a software container platform that you need to install
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800537 on the build host.
538 Depending on your build host, you might have to install
539 different software to support Docker containers.
540 Go to the Docker installation page and read about the
541 platform requirements in
542 "<ulink url='https://docs.docker.com/install/#supported-platforms'>Supported Platforms</ulink>"
543 your build host needs to run containers.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500544 </para></listitem>
545 <listitem><para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800546 <emphasis>Choose What To Install:</emphasis>
547 Depending on whether or not your build host meets system
548 requirements, you need to install "Docker CE Stable" or
549 the "Docker Toolbox".
550 Most situations call for Docker CE.
551 However, if you have a build host that does not meet
552 requirements (e.g. Pre-Windows 10 or Windows 10 "Home"
553 version), you must install Docker Toolbox instead.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500554 </para></listitem>
555 <listitem><para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400556 <emphasis>Go to the Install Site for Your Platform:</emphasis>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500557 Click the link for the Docker edition associated with
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800558 your build host's native software.
559 For example, if your build host is running Microsoft
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500560 Windows Version 10 and you want the Docker CE Stable
561 edition, click that link under "Supported Platforms".
562 </para></listitem>
563 <listitem><para>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500564 <emphasis>Install the Software:</emphasis>
565 Once you have understood all the pre-requisites, you can
566 download and install the appropriate software.
567 Follow the instructions for your specific machine and
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800568 the type of the software you need to install:
569 <itemizedlist>
570 <listitem><para>
571 Install
572 <ulink url='https://docs.docker.com/docker-for-windows/install/#install-docker-for-windows-desktop-app'>Docker CE for Windows</ulink>
573 for Windows build hosts that meet requirements.
574 </para></listitem>
575 <listitem><para>
576 Install
577 <ulink url='https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac'>Docker CE for Macs</ulink>
578 for Mac build hosts that meet requirements.
579 </para></listitem>
580 <listitem><para>
581 Install
582 <ulink url='https://docs.docker.com/toolbox/toolbox_install_windows/'>Docker Toolbox for Windows</ulink>
583 for Windows build hosts that do not meet Docker
584 requirements.
585 </para></listitem>
586 <listitem><para>
587 Install
588 <ulink url='https://docs.docker.com/toolbox/toolbox_install_mac/'>Docker Toolbox for MacOS</ulink>
589 for Mac build hosts that do not meet Docker
590 requirements.
591 </para></listitem>
592 <listitem><para>
593 Install
594 <ulink url='https://docs.docker.com/install/linux/docker-ce/centos/'>Docker CE for CentOS</ulink>
595 for Linux build hosts running the CentOS
596 distribution.
597 </para></listitem>
598 <listitem><para>
599 Install
600 <ulink url='https://docs.docker.com/install/linux/docker-ce/debian/'>Docker CE for Debian</ulink>
601 for Linux build hosts running the Debian
602 distribution.
603 </para></listitem>
604 <listitem><para>
605 Install
606 <ulink url='https://docs.docker.com/install/linux/docker-ce/fedora/'>Docker CE for Fedora</ulink>
607 for Linux build hosts running the Fedora
608 distribution.
609 </para></listitem>
610 <listitem><para>
611 Install
612 <ulink url='https://docs.docker.com/install/linux/docker-ce/ubuntu/'>Docker CE for Ubuntu</ulink>
613 for Linux build hosts running the Ubuntu
614 distribution.
615 </para></listitem>
616 </itemizedlist>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500617 </para></listitem>
618 <listitem><para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400619 <emphasis>Optionally Orient Yourself With Docker:</emphasis>
620 If you are unfamiliar with Docker and the container
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500621 concept, you can learn more here -
622 <ulink url='https://docs.docker.com/get-started/'></ulink>.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800623 </para></listitem>
624 <listitem><para>
625 <emphasis>Launch Docker or Docker Toolbox:</emphasis>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500626 You should be able to launch Docker or the Docker Toolbox
627 and have a terminal shell on your development host.
628 </para></listitem>
629 <listitem><para>
630 <emphasis>Set Up the Containers to Use the Yocto Project:</emphasis>
631 Go to
632 <ulink url='https://github.com/crops/docker-win-mac-docs/wiki'></ulink>
633 and follow the directions for your particular
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800634 build host (i.e. Linux, Mac, or Windows).</para>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500635
636 <para>Once you complete the setup instructions for your
637 machine, you have the Poky, Extensible SDK, and Toaster
638 containers available.
639 You can click those links from the page and learn more
640 about using each of those containers.
641 </para></listitem>
642 </orderedlist>
643 Once you have a container set up, everything is in place to
644 develop just as if you were running on a native Linux machine.
645 If you are going to use the Poky container, see the
646 "<link linkend='cloning-the-poky-repository'>Cloning the <filename>poky</filename> Repository</link>"
647 section.
648 If you are going to use the Extensible SDK container, see the
649 "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-extensible'>Using the Extensible SDK</ulink>"
650 Chapter in the Yocto Project Application Development and the
651 Extensible Software Development Kit (eSDK) manual.
652 If you are going to use the Toaster container, see the
653 "<ulink url='&YOCTO_DOCS_TOAST_URL;#toaster-manual-setup-and-use'>Setting Up and Using Toaster</ulink>"
654 section in the Toaster User Manual.
655 </para>
656 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500657</section>
658
Brad Bishop316dfdd2018-06-25 12:45:53 -0400659<section id='locating-yocto-project-source-files'>
660 <title>Locating Yocto Project Source Files</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500661
662 <para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800663 This section shows you how to locate and access the
664 source files that ship with the Yocto Project.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500665 You establish and use these local files to work on projects.
666 <note><title>Notes</title>
667 <itemizedlist>
668 <listitem><para>
669 For concepts and introductory information about Git as it
670 is used in the Yocto Project, see the
Brad Bishop316dfdd2018-06-25 12:45:53 -0400671 "<ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink>"
672 section in the Yocto Project Overview and Concepts Manual.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500673 </para></listitem>
674 <listitem><para>
675 For concepts on Yocto Project source repositories, see the
Brad Bishop316dfdd2018-06-25 12:45:53 -0400676 "<ulink url='&YOCTO_DOCS_OM_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>"
677 section in the Yocto Project Overview and Concepts Manual."
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500678 </para></listitem>
679 </itemizedlist>
680 </note>
681 </para>
682
683 <section id='accessing-source-repositories'>
684 <title>Accessing Source Repositories</title>
685
686 <para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400687 Working from a copy of the upstream Yocto Project
688 <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>
689 is the preferred method for obtaining and using a Yocto Project
690 release.
691 You can view the Yocto Project Source Repositories at
692 <ulink url='&YOCTO_GIT_URL;'></ulink>.
693 In particular, you can find the
694 <filename>poky</filename> repository at
695 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/'></ulink>.
696 </para>
697
698 <para>
699 Use the following procedure to locate the latest upstream copy of
700 the <filename>poky</filename> Git repository:
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500701 <orderedlist>
702 <listitem><para>
703 <emphasis>Access Repositories:</emphasis>
704 Open a browser and go to
705 <ulink url='&YOCTO_GIT_URL;'></ulink> to access the
706 GUI-based interface into the Yocto Project source
707 repositories.
708 </para></listitem>
709 <listitem><para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400710 <emphasis>Select the Repository:</emphasis>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800711 Click on the repository in which you are interested (e.g.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500712 <filename>poky</filename>).
713 </para></listitem>
714 <listitem><para>
715 <emphasis>Find the URL Used to Clone the Repository:</emphasis>
716 At the bottom of the page, note the URL used to
Brad Bishop316dfdd2018-06-25 12:45:53 -0400717 <ulink url='&YOCTO_DOCS_OM_URL;#git-commands-clone'>clone</ulink>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500718 that repository (e.g.
719 <filename>&YOCTO_GIT_URL;/poky</filename>).
Brad Bishop316dfdd2018-06-25 12:45:53 -0400720 <note>
721 For information on cloning a repository, see the
722 "<link linkend='cloning-the-poky-repository'>Cloning the <filename>poky</filename> Repository</link>"
723 section.
724 </note>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500725 </para></listitem>
726 </orderedlist>
727 </para>
728 </section>
729
730 <section id='accessing-index-of-releases'>
731 <title>Accessing Index of Releases</title>
732
733 <para>
734 Yocto Project maintains an Index of Releases area that contains
735 related files that contribute to the Yocto Project.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400736 Rather than Git repositories, these files are tarballs that
737 represent snapshots in time of a given component.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500738 <note><title>Tip</title>
739 The recommended method for accessing Yocto Project
Brad Bishop316dfdd2018-06-25 12:45:53 -0400740 components is to use Git to clone the upstream repository and
741 work from within that locally cloned repository.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500742 The procedure in this section exists should you desire a
743 tarball snapshot of any given component.
744 </note>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800745 Follow these steps to locate and download a particular tarball:
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500746 <orderedlist>
747 <listitem><para>
748 <emphasis>Access the Index of Releases:</emphasis>
749 Open a browser and go to
750 <ulink url='&YOCTO_DL_URL;/releases'></ulink> to access the
751 Index of Releases.
752 The list represents released components (e.g.
Brad Bishopc342db32019-05-15 21:57:59 -0400753 <filename>bitbake</filename>,
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500754 <filename>sato</filename>, and so on).
755 <note>
756 The <filename>yocto</filename> directory contains the
757 full array of released Poky tarballs.
758 The <filename>poky</filename> directory in the
759 Index of Releases was historically used for very
Brad Bishop316dfdd2018-06-25 12:45:53 -0400760 early releases and exists now only for retroactive
761 completeness.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500762 </note>
763 </para></listitem>
764 <listitem><para>
765 <emphasis>Select a Component:</emphasis>
766 Click on any released component in which you are interested
767 (e.g. <filename>yocto</filename>).
768 </para></listitem>
769 <listitem><para>
770 <emphasis>Find the Tarball:</emphasis>
771 Drill down to find the associated tarball.
772 For example, click on <filename>yocto-&DISTRO;</filename> to
773 view files associated with the Yocto Project &DISTRO;
774 release (e.g. <filename>poky-&DISTRO_NAME_NO_CAP;-&POKYVERSION;.tar.bz2</filename>,
775 which is the released Poky tarball).
776 </para></listitem>
777 <listitem><para>
778 <emphasis>Download the Tarball:</emphasis>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400779 Click the tarball to download and save a snapshot of the
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500780 given component.
781 </para></listitem>
782 </orderedlist>
783 </para>
784 </section>
785
786 <section id='using-the-downloads-page'>
787 <title>Using the Downloads Page</title>
788
789 <para>
790 The
791 <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400792 uses a "DOWNLOADS" page from which you can locate and download
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500793 tarballs of any Yocto Project release.
794 Rather than Git repositories, these files represent snapshot
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800795 tarballs similar to the tarballs located in the Index of Releases
796 described in the
797 "<link linkend='accessing-index-of-releases'>Accessing Index of Releases</link>"
798 section.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500799 <note><title>Tip</title>
800 The recommended method for accessing Yocto Project
801 components is to use Git to clone a repository and work from
802 within that local repository.
803 The procedure in this section exists should you desire a
804 tarball snapshot of any given component.
805 </note>
806 <orderedlist>
807 <listitem><para>
808 <emphasis>Go to the Yocto Project Website:</emphasis>
809 Open The
810 <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>
811 in your browser.
812 </para></listitem>
813 <listitem><para>
814 <emphasis>Get to the Downloads Area:</emphasis>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400815 Select the "DOWNLOADS" item from the pull-down
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800816 "SOFTWARE" tab menu near the top of the page.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500817 </para></listitem>
818 <listitem><para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400819 <emphasis>Select a Yocto Project Release:</emphasis>
820 Use the menu next to "RELEASE" to display and choose
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800821 a recent or past supported Yocto Project release
822 (e.g. &DISTRO_NAME_NO_CAP;,
823 &DISTRO_NAME_NO_CAP_MINUS_ONE;, and so forth).
824 <note><title>Tip</title>
825 For a "map" of Yocto Project releases to version
826 numbers, see the
827 <ulink url='https://wiki.yoctoproject.org/wiki/Releases'>Releases</ulink>
828 wiki page.
829 </note>
830 You can use the "RELEASE ARCHIVE" link to reveal a menu of
831 all Yocto Project releases.
832 </para></listitem>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500833 <listitem><para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400834 <emphasis>Download Tools or Board Support Packages (BSPs):</emphasis>
835 From the "DOWNLOADS" page, you can download tools or
836 BSPs as well.
837 Just scroll down the page and look for what you need.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500838 </para></listitem>
839 </orderedlist>
840 </para>
841 </section>
842
Brad Bishop316dfdd2018-06-25 12:45:53 -0400843 <section id='accessing-nightly-builds'>
844 <title>Accessing Nightly Builds</title>
845
846 <para>
847 Yocto Project maintains an area for nightly builds that contains
848 tarball releases at <ulink url='&YOCTO_AB_NIGHTLY_URL;'/>.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800849 These builds include Yocto Project releases ("poky"),
Brad Bishopc342db32019-05-15 21:57:59 -0400850 toolchains, and builds for supported machines.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400851 </para>
852
853 <para>
854 Should you ever want to access a nightly build of a particular
855 Yocto Project component, use the following procedure:
856 <orderedlist>
857 <listitem><para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800858 <emphasis>Locate the Index of Nightly Builds:</emphasis>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400859 Open a browser and go to
860 <ulink url='&YOCTO_AB_NIGHTLY_URL;'/> to access the
861 Nightly Builds.
862 </para></listitem>
863 <listitem><para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800864 <emphasis>Select a Date:</emphasis>
865 Click on the date in which you are interested.
866 If you want the latest builds, use "CURRENT".
867 </para></listitem>
868 <listitem><para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400869 <emphasis>Select a Build:</emphasis>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800870 Choose the area in which you are interested.
871 For example, if you are looking for the most recent
872 toolchains, select the "toolchain" link.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400873 </para></listitem>
874 <listitem><para>
875 <emphasis>Find the Tarball:</emphasis>
876 Drill down to find the associated tarball.
877 </para></listitem>
878 <listitem><para>
879 <emphasis>Download the Tarball:</emphasis>
880 Click the tarball to download and save a snapshot of the
881 given component.
882 </para></listitem>
883 </orderedlist>
884 </para>
885 </section>
886</section>
887
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800888<section id='cloning-and-checking-out-branches'>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400889 <title>Cloning and Checking Out Branches</title>
890
891 <para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800892 To use the Yocto Project for development, you need a release locally
893 installed on your development system.
894 This locally installed set of files is referred to as the
Brad Bishop316dfdd2018-06-25 12:45:53 -0400895 <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
896 in the Yocto Project documentation.
897 </para>
898
899 <para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800900 The preferred method of creating your Source Directory is by using
Brad Bishop316dfdd2018-06-25 12:45:53 -0400901 <ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink> to clone a local
902 copy of the upstream <filename>poky</filename> repository.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800903 Working from a cloned copy of the upstream repository allows you
904 to contribute back into the Yocto Project or to simply work with
Brad Bishop316dfdd2018-06-25 12:45:53 -0400905 the latest software on a development branch.
906 Because Git maintains and creates an upstream repository with
907 a complete history of changes and you are working with a local
908 clone of that repository, you have access to all the Yocto
909 Project development branches and tag names used in the upstream
910 repository.
911 </para>
912
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500913 <section id='cloning-the-poky-repository'>
914 <title>Cloning the <filename>poky</filename> Repository</title>
915
916 <para>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500917 Follow these steps to create a local version of the
918 upstream
919 <ulink url='&YOCTO_DOCS_REF_URL;#poky'><filename>poky</filename></ulink>
920 Git repository.
921 <orderedlist>
922 <listitem><para>
923 <emphasis>Set Your Directory:</emphasis>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800924 Change your working directory to where you want to
925 create your local copy of
926 <filename>poky</filename>.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500927 </para></listitem>
928 <listitem><para>
929 <emphasis>Clone the Repository:</emphasis>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800930 The following example command clones the
931 <filename>poky</filename> repository and uses
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500932 the default name "poky" for your local repository:
933 <literallayout class='monospaced'>
934 $ git clone git://git.yoctoproject.org/poky
935 Cloning into 'poky'...
Brad Bishop19323692019-04-05 15:28:33 -0400936 remote: Counting objects: 432160, done.
937 remote: Compressing objects: 100% (102056/102056), done.
938 remote: Total 432160 (delta 323116), reused 432037 (delta 323000)
939 Receiving objects: 100% (432160/432160), 153.81 MiB | 8.54 MiB/s, done.
940 Resolving deltas: 100% (323116/323116), done.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500941 Checking connectivity... done.
942 </literallayout>
943 Unless you specify a specific development branch or
944 tag name, Git clones the "master" branch, which results
945 in a snapshot of the latest development changes for
946 "master".
947 For information on how to check out a specific
948 development branch or on how to check out a local
949 branch based on a tag name, see the
950 "<link linkend='checking-out-by-branch-in-poky'>Checking Out By Branch in Poky</link>"
951 and
Brad Bishop316dfdd2018-06-25 12:45:53 -0400952 <link linkend='checkout-out-by-tag-in-poky'>Checking Out By Tag in Poky</link>"
953 sections, respectively.</para>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500954
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800955 <para>Once the local repository is created, you can
956 change to that directory and check its status.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500957 Here, the single "master" branch exists on your system
958 and by default, it is checked out:
959 <literallayout class='monospaced'>
960 $ cd ~/poky
961 $ git status
962 On branch master
963 Your branch is up-to-date with 'origin/master'.
964 nothing to commit, working directory clean
965 $ git branch
966 * master
967 </literallayout>
968 Your local repository of poky is identical to the
969 upstream poky repository at the time from which it was
970 cloned.
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800971 As you work with the local branch, you can periodically
972 use the <filename>git pull &dash;&dash;rebase</filename>
973 command to be sure you are up-to-date with the upstream
974 branch.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500975 </para></listitem>
976 </orderedlist>
977 </para>
978 </section>
979
980 <section id='checking-out-by-branch-in-poky'>
981 <title>Checking Out by Branch in Poky</title>
982
983 <para>
984 When you clone the upstream poky repository, you have access to
985 all its development branches.
986 Each development branch in a repository is unique as it forks
987 off the "master" branch.
988 To see and use the files of a particular development branch
989 locally, you need to know the branch name and then specifically
990 check out that development branch.
991 <note>
992 Checking out an active development branch by branch name
993 gives you a snapshot of that particular branch at the time
994 you check it out.
995 Further development on top of the branch that occurs after
996 check it out can occur.
997 </note>
998 <orderedlist>
999 <listitem><para>
1000 <emphasis>Switch to the Poky Directory:</emphasis>
1001 If you have a local poky Git repository, switch to that
1002 directory.
1003 If you do not have the local copy of poky, see the
1004 "<link linkend='cloning-the-poky-repository'>Cloning the <filename>poky</filename> Repository</link>"
1005 section.
1006 </para></listitem>
1007 <listitem><para>
1008 <emphasis>Determine Existing Branch Names:</emphasis>
1009 <literallayout class='monospaced'>
1010 $ git branch -a
1011 * master
1012 remotes/origin/1.1_M1
1013 remotes/origin/1.1_M2
1014 remotes/origin/1.1_M3
1015 remotes/origin/1.1_M4
1016 remotes/origin/1.2_M1
1017 remotes/origin/1.2_M2
1018 remotes/origin/1.2_M3
1019 .
1020 .
1021 .
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001022 remotes/origin/pyro
Brad Bishop19323692019-04-05 15:28:33 -04001023 remotes/origin/pyro-next
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001024 remotes/origin/rocko
Brad Bishop19323692019-04-05 15:28:33 -04001025 remotes/origin/rocko-next
1026 remotes/origin/sumo
1027 remotes/origin/sumo-next
1028 remotes/origin/thud
1029 remotes/origin/thud-next
1030 remotes/origin/warrior
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001031 </literallayout>
1032 </para></listitem>
1033 <listitem><para>
1034 <emphasis>Checkout the Branch:</emphasis>
1035 Checkout the development branch in which you want to work.
1036 For example, to access the files for the Yocto Project
1037 &DISTRO; Release (&DISTRO_NAME;), use the following command:
1038 <literallayout class='monospaced'>
1039 $ git checkout -b &DISTRO_NAME_NO_CAP; origin/&DISTRO_NAME_NO_CAP;
1040 Branch &DISTRO_NAME_NO_CAP; set up to track remote branch &DISTRO_NAME_NO_CAP; from origin.
1041 Switched to a new branch '&DISTRO_NAME_NO_CAP;'
1042 </literallayout>
1043 The previous command checks out the "&DISTRO_NAME_NO_CAP;"
1044 development branch and reports that the branch is tracking
1045 the upstream "origin/&DISTRO_NAME_NO_CAP;" branch.</para>
1046
1047 <para>The following command displays the branches
1048 that are now part of your local poky repository.
1049 The asterisk character indicates the branch that is
1050 currently checked out for work:
1051 <literallayout class='monospaced'>
1052 $ git branch
1053 master
1054 * &DISTRO_NAME_NO_CAP;
1055 </literallayout>
1056 </para></listitem>
1057 </orderedlist>
1058 </para>
1059 </section>
1060
1061 <section id='checkout-out-by-tag-in-poky'>
1062 <title>Checking Out by Tag in Poky</title>
1063
1064 <para>
1065 Similar to branches, the upstream repository uses tags
1066 to mark specific commits associated with significant points in
1067 a development branch (i.e. a release point or stage of a
1068 release).
1069 You might want to set up a local branch based on one of those
1070 points in the repository.
1071 The process is similar to checking out by branch name except you
1072 use tag names.
1073 <note>
1074 Checking out a branch based on a tag gives you a
1075 stable set of files not affected by development on the
1076 branch above the tag.
1077 </note>
1078 <orderedlist>
1079 <listitem><para>
1080 <emphasis>Switch to the Poky Directory:</emphasis>
1081 If you have a local poky Git repository, switch to that
1082 directory.
1083 If you do not have the local copy of poky, see the
1084 "<link linkend='cloning-the-poky-repository'>Cloning the <filename>poky</filename> Repository</link>"
1085 section.
1086 </para></listitem>
1087 <listitem><para>
1088 <emphasis>Fetch the Tag Names:</emphasis>
1089 To checkout the branch based on a tag name, you need to
1090 fetch the upstream tags into your local repository:
1091 <literallayout class='monospaced'>
1092 $ git fetch --tags
1093 $
1094 </literallayout>
1095 </para></listitem>
1096 <listitem><para>
1097 <emphasis>List the Tag Names:</emphasis>
1098 You can list the tag names now:
1099 <literallayout class='monospaced'>
1100 $ git tag
1101 1.1_M1.final
1102 1.1_M1.rc1
1103 1.1_M1.rc2
1104 1.1_M2.final
1105 1.1_M2.rc1
1106 .
1107 .
1108 .
Scott Rifenbarkfa4cfe32019-01-11 11:55:06 -08001109 yocto-2.5
1110 yocto-2.5.1
1111 yocto-2.5.2
Brad Bishop19323692019-04-05 15:28:33 -04001112 yocto-2.5.3
Scott Rifenbarkfa4cfe32019-01-11 11:55:06 -08001113 yocto-2.6
Scott Rifenbarkb0466fb2019-01-22 10:21:44 -08001114 yocto-2.6.1
Brad Bishopc342db32019-05-15 21:57:59 -04001115 yocto-2.6.2
Brad Bishop19323692019-04-05 15:28:33 -04001116 yocto-2.7
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001117 yocto_1.5_M5.rc8
1118 </literallayout>
1119 </para></listitem>
1120 <listitem><para>
1121 <emphasis>Checkout the Branch:</emphasis>
1122 <literallayout class='monospaced'>
Brad Bishop316dfdd2018-06-25 12:45:53 -04001123 $ git checkout tags/&DISTRO_REL_TAG; -b my_yocto_&DISTRO;
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001124 Switched to a new branch 'my_yocto_&DISTRO;'
1125 $ git branch
1126 master
1127 * my_yocto_&DISTRO;
1128 </literallayout>
1129 The previous command creates and checks out a local
1130 branch named "my_yocto_&DISTRO;", which is based on
1131 the commit in the upstream poky repository that has
1132 the same tag.
1133 In this example, the files you have available locally
1134 as a result of the <filename>checkout</filename>
1135 command are a snapshot of the
1136 "&DISTRO_NAME_NO_CAP;" development branch at the point
1137 where Yocto Project &DISTRO; was released.
1138 </para></listitem>
1139 </orderedlist>
1140 </para>
1141 </section>
1142</section>
1143
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001144</chapter>
1145<!--
1146vim: expandtab tw=80 ts=4
1147-->