summaryrefslogtreecommitdiffstats
path: root/documentation/poky-ref-manual/ref-bitbake.xml
diff options
context:
space:
mode:
authorScott Rifenbark <scott.m.rifenbark@intel.com>2011-08-19 10:11:41 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-08-23 18:47:05 -0700
commit32a860851c849edd44328d608376b3c27889a63e (patch)
tree2070a2c07ba42bd1203f30b7b21b5e3d4fb3154f /documentation/poky-ref-manual/ref-bitbake.xml
parent39de08c1052fc988f1a9ecb51a94cc4ba97f711e (diff)
downloadpoky-32a860851c849edd44328d608376b3c27889a63e.tar.gz
documentation/poky-ref-manual/ref-bitbake.xml: scrubbed for Poky
I swapped the Yocto Project for Poky throughout. Some other general edits were done. I put in a reference to a spot to learn how to best set the BB_NUMBER_THREADS variable. (From yocto-docs rev: 2543a915957014a59e6c49a1cdde270725d47af3) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/poky-ref-manual/ref-bitbake.xml')
-rw-r--r--documentation/poky-ref-manual/ref-bitbake.xml170
1 files changed, 97 insertions, 73 deletions
diff --git a/documentation/poky-ref-manual/ref-bitbake.xml b/documentation/poky-ref-manual/ref-bitbake.xml
index 24e4a068d1..2cf3704214 100644
--- a/documentation/poky-ref-manual/ref-bitbake.xml
+++ b/documentation/poky-ref-manual/ref-bitbake.xml
@@ -6,23 +6,23 @@
6 <title>Reference: BitBake</title> 6 <title>Reference: BitBake</title>
7 7
8 <para> 8 <para>
9 BitBake is a program written in Python that interprets the metadata that makes up Poky. 9 BitBake is a program written in Python that interprets the metadata that makes up the Yocto Project.
10 At some point, people wonder what actually happens when you enter: 10 At some point, developers wonder what actually happens when you enter:
11 <literallayout class='monospaced'> 11 <literallayout class='monospaced'>
12 $ bitbake core-image-sato 12 $ bitbake core-image-sato
13 </literallayout> 13 </literallayout>
14 </para> 14 </para>
15 15
16 <para> 16 <para>
17 This appendix provides an overview of what happens behind the scenes from BitBake's perspective. 17 This appendix provides an overview of what happens behind the scenes from BitBake's perspective.
18 </para> 18 </para>
19 19
20 <note><para> 20 <note>
21 BitBake strives to be a generic "task" executor that is capable of handling complex dependency relationships. 21 BitBake strives to be a generic "task" executor that is capable of handling complex dependency relationships.
22 As such, it has no real knowledge of what the tasks being executed actually do. 22 As such, it has no real knowledge of what the tasks being executed actually do.
23 BitBake just considers a list of tasks with dependencies and handles metadata 23 BitBake just considers a list of tasks with dependencies and handles metadata
24 that consists of variables in a certain format that get passed to the tasks. 24 that consists of variables in a certain format that get passed to the tasks.
25 </para></note> 25 </note>
26 26
27 <section id='ref-bitbake-parsing'> 27 <section id='ref-bitbake-parsing'>
28 <title>Parsing</title> 28 <title>Parsing</title>
@@ -33,61 +33,64 @@
33 33
34 <para> 34 <para>
35 The first thing BitBake does is look for the <filename>bitbake.conf</filename> file. 35 The first thing BitBake does is look for the <filename>bitbake.conf</filename> file.
36 Poky keeps this file in <filename>meta/conf/</filename>. 36 The Yocto Project keeps this file in the Yocto Project file's <filename>meta/conf/</filename>
37 directory.
37 BitBake finds it by examining the <filename>BBPATH</filename> environment 38 BitBake finds it by examining the <filename>BBPATH</filename> environment
38 variable and looking for the <filename>meta/conf/</filename> 39 variable and looking for the <filename>meta/conf/</filename>
39 directory. 40 directory.
40 </para> 41 </para>
41 42
42 <para> 43 <para>
43 In Poky, <filename>bitbake.conf</filename> lists other configuration 44 In the Yocto Project, <filename>bitbake.conf</filename> lists other configuration
44 files to include from a <filename>conf/</filename> 45 files to include from a <filename>conf/</filename>
45 directory below the directories listed in <filename>BBPATH</filename>. 46 directory below the directories listed in <filename>BBPATH</filename>.
46 In general the most important configuration file from a user's perspective 47 In general, the most important configuration file from a user's perspective
47 is <filename>local.conf</filename>, which contains a user's customized 48 is <filename>local.conf</filename>, which contains a user's customized
48 settings for Poky. 49 settings for the Yocto Project build environment.
49 Other notable configuration files are the distribution 50 Other notable configuration files are the distribution
50 configuration file (set by the <glossterm><link linkend='var-DISTRO'> 51 configuration file (set by the
51 DISTRO</link></glossterm> variable) and the machine configuration file 52 <filename><link linkend='var-DISTRO'>DISTRO</link></filename> variable)
52 (set by the <glossterm><link linkend='var-MACHINE'>MACHINE</link> 53 and the machine configuration file
53 </glossterm> variable). 54 (set by the
54 The DISTRO and MACHINE environment variables are both usually set in 55 <filename><link linkend='var-MACHINE'>MACHINE</link></filename> variable).
56 The <filename>DISTRO</filename> and <filename>MACHINE</filename> environment
57 variables are both usually set in
55 the <filename>local.conf</filename> file. 58 the <filename>local.conf</filename> file.
56 Valid distribution 59 Valid distribution
57 configuration files are available in the <filename> 60 configuration files are available in the <filename>meta/conf/distro/</filename> directory
58 meta/conf/distro/</filename> directory and valid machine configuration 61 and valid machine configuration
59 files in the <filename>meta/conf/machine/</filename> 62 files in the <filename>meta/conf/machine/</filename> directory.
60 directory.
61 Within the <filename>meta/conf/machine/include/</filename> 63 Within the <filename>meta/conf/machine/include/</filename>
62 directory are various <filename>tune-*.inc</filename> configuration files that provide common 64 directory are various <filename>tune-*.inc</filename> configuration files that provide common
63 "tuning" settings specific to and shared between particular architectures and machines. 65 "tuning" settings specific to and shared between particular architectures and machines.
64 </para> 66 </para>
65 67
66 <para> 68 <para>
67 After the parsing of the configuration files some standard classes are included. 69 After the parsing of the configuration files, some standard classes are included.
68 The <filename>base.bbclass</filename> file is always included. 70 The <filename>base.bbclass</filename> file is always included.
69 Other classes that are specified in the configuration using the 71 Other classes that are specified in the configuration using the
70 <glossterm><link linkend='var-INHERIT'>INHERIT</link></glossterm> 72 <filename><link linkend='var-INHERIT'>INHERIT</link></filename>
71 variable are also inculded. 73 variable are also inculded.
72 Class files are searched for in a classes subdirectory 74 Class files are searched for in a <filename>classes</filename> subdirectory
73 under the paths in <filename>BBPATH</filename> in the same way as 75 under the paths in <filename>BBPATH</filename> in the same way as
74 configuration files. 76 configuration files.
75 </para> 77 </para>
76 78
77 <para> 79 <para>
78 After classes are included, the 80 After classes are included, the variable
79 variable <glossterm><link linkend='var-BBFILES'>BBFILES</link></glossterm> 81 <filename><link linkend='var-BBFILES'>BBFILES</link></filename>
80 is set, usually in 82 is set, usually in
81 <filename>local.conf</filename>, and defines the list of places to search for 83 <filename>local.conf</filename>, and defines the list of places to search for
82 <filename>.bb</filename> files. 84 <filename>.bb</filename> files.
83 By default, the BBFILES variable specifies the <filename>meta/recipes-*/ 85 By default, the <filename>BBFILES</filename> variable specifies the
84 </filename> directory within Poky. 86 <filename>meta/recipes-*/</filename> directory within Poky.
85 Adding extra content to BBFILES is best achieved through the use of BitBake 87 Adding extra content to <filename>BBFILES</filename> is best achieved through the use of
86 <link linkend='usingpoky-changes-layers'>"layers"</link>. 88 BitBake layers as described in the
89 <link linkend='usingpoky-changes-layers'>BitBake Layers</link> section.
87 </para> 90 </para>
88 91
89 <para> 92 <para>
90 BitBake parses each <filename>.bb</filename> file in BBFILES and 93 BitBake parses each <filename>.bb</filename> file in <filename>BBFILES</filename> and
91 stores the values of various variables. 94 stores the values of various variables.
92 In summary, for each <filename>.bb</filename> 95 In summary, for each <filename>.bb</filename>
93 file the configuration plus the base class of variables are set, followed 96 file the configuration plus the base class of variables are set, followed
@@ -111,13 +114,14 @@
111 114
112 <para> 115 <para>
113 Once all the <filename>.bb</filename> files have been 116 Once all the <filename>.bb</filename> files have been
114 parsed, BitBake starts to build the target (core-image-sato in the previous section's 117 parsed, BitBake starts to build the target (<filename>core-image-sato</filename>
115 example) and looks for providers of that target. 118 in the previous section's example) and looks for providers of that target.
116 Once a provider is selected, BitBake resolves all the dependencies for 119 Once a provider is selected, BitBake resolves all the dependencies for
117 the target. 120 the target.
118 In the case of "core-image-sato", it would lead to <filename>task-base.bb</filename>, 121 In the case of <filename>core-image-sato</filename>, it would lead to
119 which in turn leads to packages like <application>Contacts</application>, 122 <filename>task-base.bb</filename>,
120 <application>Dates</application> and <application>BusyBox</application>. 123 which in turn leads to packages like <filename>Contacts</filename>,
124 <filename>Dates</filename> and <filename>BusyBox</filename>.
121 These packages in turn depend on glibc and the toolchain. 125 These packages in turn depend on glibc and the toolchain.
122 </para> 126 </para>
123 127
@@ -128,12 +132,12 @@
128 following in the machine configuration file: 132 following in the machine configuration file:
129 </para> 133 </para>
130 134
131 <programlisting> 135 <literallayout class='monospaced'>
132PREFERRED_PROVIDER_virtual/kernel = "linux-rp" 136 PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
133 </programlisting> 137 </literallayout>
134 138
135 <para> 139 <para>
136 The default <glossterm><link linkend='var-PREFERRED_PROVIDER'>PREFERRED_PROVIDER</link></glossterm> 140 The default <filename><link linkend='var-PREFERRED_PROVIDER'>PREFERRED_PROVIDER</link></filename>
137 is the provider with the same name as the target. 141 is the provider with the same name as the target.
138 </para> 142 </para>
139 143
@@ -142,17 +146,18 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
142 that multiple versions might exist. 146 that multiple versions might exist.
143 BitBake defaults to the highest version of a provider. 147 BitBake defaults to the highest version of a provider.
144 Version comparisons are made using the same method as Debian. 148 Version comparisons are made using the same method as Debian.
145 You can use the <glossterm><link linkend='var-PREFERRED_VERSION'>PREFERRED_VERSION</link></glossterm> 149 You can use the
150 <filename><link linkend='var-PREFERRED_VERSION'>PREFERRED_VERSION</link></filename>
146 variable to specify a particular version (usually in the distro configuration). 151 variable to specify a particular version (usually in the distro configuration).
147 You can influence the order by using the 152 You can influence the order by using the
148 <glossterm><link linkend='var-DEFAULT_PREFERENCE'>DEFAULT_PREFERENCE</link></glossterm> 153 <filename><link linkend='var-DEFAULT_PREFERENCE'>DEFAULT_PREFERENCE</link></filename>
149 variable. 154 variable.
150 By default, files have a preference of "0". 155 By default, files have a preference of "0".
151 Setting the DEFAULT_PREFERENCE to "-1" makes the package unlikely to be used unless it is 156 Setting the <filename>DEFAULT_PREFERENCE</filename> to "-1" makes the
152 explicitly referenced. 157 package unlikely to be used unless it is explicitly referenced.
153 Setting the DEFAULT_PREFERENCE to "1" makes it likely the package is used. 158 Setting the <filename>DEFAULT_PREFERENCE</filename> to "1" makes it likely the package is used.
154 PREFERRED_VERSION overrides any DEFAULT_PREFERENCE setting. 159 <filename>PREFERRED_VERSION</filename> overrides any <filename>DEFAULT_PREFERENCE</filename> setting.
155 DEFAULT_PREFERENCE is often used to mark newer and more experimental package 160 <filename>DEFAULT_PREFERENCE</filename> is often used to mark newer and more experimental package
156 versions until they have undergone sufficient testing to be considered stable. 161 versions until they have undergone sufficient testing to be considered stable.
157 </para> 162 </para>
158 163
@@ -165,8 +170,10 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
165 <title>Dependencies</title> 170 <title>Dependencies</title>
166 171
167 <para> 172 <para>
168 Each target BitBake builds consists of multiple tasks such as fetch, unpack, patch, configure, 173 Each target BitBake builds consists of multiple tasks such as
169 and compile. 174 <filename>fetch</filename>, <filename>unpack</filename>,
175 <filename>patch</filename>, <filename>configure</filename>,
176 and <filename>compile</filename>.
170 For best performance on multi-core systems, BitBake considers each task as an independent 177 For best performance on multi-core systems, BitBake considers each task as an independent
171 entity with its own set of dependencies. 178 entity with its own set of dependencies.
172 </para> 179 </para>
@@ -175,12 +182,11 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
175 Dependencies are defined through several variables. 182 Dependencies are defined through several variables.
176 You can find information about variables BitBake uses in the 183 You can find information about variables BitBake uses in the
177 <ulink url='http://bitbake.berlios.de/manual/'>BitBake manual</ulink>. 184 <ulink url='http://bitbake.berlios.de/manual/'>BitBake manual</ulink>.
178 At a basic level it is sufficient to know that BitBake uses the 185 At a basic level, it is sufficient to know that BitBake uses the
179 <glossterm><link linkend='var-DEPENDS'>DEPENDS</link></glossterm> and 186 <filename><link linkend='var-DEPENDS'>DEPENDS</link></filename> and
180 <glossterm><link linkend='var-RDEPENDS'>RDEPENDS</link></glossterm> variables when 187 <filename><link linkend='var-RDEPENDS'>RDEPENDS</link></filename> variables when
181 calculating dependencies. 188 calculating dependencies.
182 </para> 189 </para>
183
184 </section> 190 </section>
185 191
186 <section id='ref-bitbake-tasklist'> 192 <section id='ref-bitbake-tasklist'>
@@ -191,39 +197,49 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
191 BitBake can now calculate exactly what tasks it needs to run and in what 197 BitBake can now calculate exactly what tasks it needs to run and in what
192 order it needs to run them. 198 order it needs to run them.
193 The build now starts with BitBake forking off threads up to the limit set in the 199 The build now starts with BitBake forking off threads up to the limit set in the
194 <glossterm><link linkend='var-BB_NUMBER_THREADS'>BB_NUMBER_THREADS</link></glossterm> variable. 200 <filename><link linkend='var-BB_NUMBER_THREADS'>BB_NUMBER_THREADS</link></filename> variable.
195 BitBake continues to fork threads as long as there are tasks ready to run, 201 BitBake continues to fork threads as long as there are tasks ready to run,
196 those tasks have all their dependencies met, and the thread threshold has not been 202 those tasks have all their dependencies met, and the thread threshold has not been
197 exceeded. 203 exceeded.
198 </para> 204 </para>
199 205
200 <para> 206 <para>
207 It is worth noting that you can greatly speed up the build time by properly setting
208 the <filename>BB_NUMBER_THREADS</filename> variable.
209 See the
210 <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#building-image'>
211 Building an Image</ulink> section in the
212 <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html'>
213 Yocto Project Quick Start</ulink> for more information.
214 </para>
215
216 <para>
201 As each task completes, a timestamp is written to the directory specified by the 217 As each task completes, a timestamp is written to the directory specified by the
202 <glossterm><link linkend='var-STAMPS'>STAMPS</link></glossterm> variable (usually 218 <filename><link linkend='var-STAMPS'>STAMPS</link></filename> variable (usually
203 <filename>build/tmp/stamps/*/</filename>). 219 <filename>build/tmp/stamps/*/</filename>).
204 On subsequent runs, BitBake looks at the STAMPS directory and does not rerun 220 On subsequent runs, BitBake looks at the <filename>STAMPS</filename> directory and does not rerun
205 tasks that are already completed unless a timestamp is found to be invalid. 221 tasks that are already completed unless a timestamp is found to be invalid.
206 Currently, invalid timestamps are only considered on a per 222 Currently, invalid timestamps are only considered on a per
207 <filename>.bb</filename> file basis. 223 <filename>.bb</filename> file basis.
208 So, for example, if the configure stamp has a timestamp greater than the 224 So, for example, if the configure stamp has a timestamp greater than the
209 compile timestamp for a given target then the compile task would rerun. 225 compile timestamp for a given target, then the compile task would rerun.
210 Running the compile task again, however, has no effect on other providers 226 Running the compile task again, however, has no effect on other providers
211 that depend on that target. 227 that depend on that target.
212 This behavior could change or become configurable in future versions of BitBake. 228 This behavior could change or become configurable in future versions of BitBake.
213 </para> 229 </para>
214 230
215 <note><para> 231 <note>
216 Some tasks are marked as "nostamp" tasks. 232 Some tasks are marked as "nostamp" tasks.
217 No timestamp file is created when these tasks are run. 233 No timestamp file is created when these tasks are run.
218 Consequently, "nostamp" tasks are always rerun. 234 Consequently, "nostamp" tasks are always rerun.
219 </para></note> 235 </note>
220 </section> 236 </section>
221 237
222 <section id='ref-bitbake-runtask'> 238 <section id='ref-bitbake-runtask'>
223 <title>Running a Task</title> 239 <title>Running a Task</title>
224 240
225 <para> 241 <para>
226 Tasks can either be a shell task or a python task. 242 Tasks can either be a shell task or a Python task.
227 For shell tasks, BitBake writes a shell script to 243 For shell tasks, BitBake writes a shell script to
228 <filename>${WORKDIR}/temp/run.do_taskname.pid</filename> and then executes the script. 244 <filename>${WORKDIR}/temp/run.do_taskname.pid</filename> and then executes the script.
229 The generated shell script contains all the exported variables, and the shell functions 245 The generated shell script contains all the exported variables, and the shell functions
@@ -268,7 +284,8 @@ Options:
268 -h, --help show this help message and exit 284 -h, --help show this help message and exit
269 -b BUILDFILE, --buildfile=BUILDFILE 285 -b BUILDFILE, --buildfile=BUILDFILE
270 execute the task against this .bb file, rather than a 286 execute the task against this .bb file, rather than a
271 package from BBFILES. 287 package from BBFILES. Does not handle any
288 dependencies.
272 -k, --continue continue as much as possible after an error. While the 289 -k, --continue continue as much as possible after an error. While the
273 target that failed, and those that depend on it, 290 target that failed, and those that depend on it,
274 cannot be remade, the other dependencies of these 291 cannot be remade, the other dependencies of these
@@ -276,8 +293,6 @@ Options:
276 -a, --tryaltconfigs continue with builds by trying to use alternative 293 -a, --tryaltconfigs continue with builds by trying to use alternative
277 providers where possible. 294 providers where possible.
278 -f, --force force run of specified cmd, regardless of stamp status 295 -f, --force force run of specified cmd, regardless of stamp status
279 -i, --interactive drop into the interactive mode also called the BitBake
280 shell.
281 -c CMD, --cmd=CMD Specify task to execute. Note that this only executes 296 -c CMD, --cmd=CMD Specify task to execute. Note that this only executes
282 the specified task for the providee and the packages 297 the specified task for the providee and the packages
283 it depends on, i.e. 'compile' does not implicitly call 298 it depends on, i.e. 'compile' does not implicitly call
@@ -285,26 +300,35 @@ Options:
285 what you are doing). Depending on the base.bbclass a 300 what you are doing). Depending on the base.bbclass a
286 listtasks tasks is defined and will show available 301 listtasks tasks is defined and will show available
287 tasks 302 tasks
288 -r FILE, --read=FILE read the specified file before bitbake.conf 303 -r PREFILE, --read=PREFILE
304 read the specified file before bitbake.conf
305 -R POSTFILE, --postread=POSTFILE
306 read the specified file after bitbake.conf
289 -v, --verbose output more chit-chat to the terminal 307 -v, --verbose output more chit-chat to the terminal
290 -D, --debug Increase the debug level. You can specify this more 308 -D, --debug Increase the debug level. You can specify this more
291 than once. 309 than once.
292 -n, --dry-run don't execute, just go through the motions 310 -n, --dry-run don't execute, just go through the motions
311 -S, --dump-signatures
312 don't execute, just dump out the signature
313 construction information
293 -p, --parse-only quit after parsing the BB files (developers only) 314 -p, --parse-only quit after parsing the BB files (developers only)
294 -d, --disable-psyco disable using the psyco just-in-time compiler (not
295 recommended)
296 -s, --show-versions show current and preferred versions of all packages 315 -s, --show-versions show current and preferred versions of all packages
297 -e, --environment show the global or per-package environment (this is 316 -e, --environment show the global or per-package environment (this is
298 what used to be bbread) 317 what used to be bbread)
299 -g, --graphviz emit the dependency trees of the specified packages in 318 -g, --graphviz emit the dependency trees of the specified packages in
300 the dot syntax 319 the dot syntax
301 -I IGNORED_DOT_DEPS, --ignore-deps=IGNORED_DOT_DEPS 320 -I EXTRA_ASSUME_PROVIDED, --ignore-deps=EXTRA_ASSUME_PROVIDED
302 Stop processing at the given list of dependencies when 321 Assume these dependencies don't exist and are already
303 generating dependency graphs. This can help to make 322 provided (equivalent to ASSUME_PROVIDED). Useful to
304 the graph more appealing 323 make dependency graphs more appealing
305 -l DEBUG_DOMAINS, --log-domains=DEBUG_DOMAINS 324 -l DEBUG_DOMAINS, --log-domains=DEBUG_DOMAINS
306 Show debug logging for the specified logging domains 325 Show debug logging for the specified logging domains
307 -P, --profile profile the command and print a report 326 -P, --profile profile the command and print a report
327 -u UI, --ui=UI userinterface to use
328 -t SERVERTYPE, --servertype=SERVERTYPE
329 Choose which server to use, none, process or xmlrpc
330 --revisions-changed Set the exit code depending on whether upstream
331 floating revisions have changed or not
308 </screen> 332 </screen>
309 </section> 333 </section>
310 334
@@ -321,22 +345,22 @@ Options:
321 345
322 <para> 346 <para>
323 Fetchers are usually triggered by entries in 347 Fetchers are usually triggered by entries in
324 <glossterm><link linkend='var-SRC_URI'>SRC_URI</link></glossterm>. 348 <filename><link linkend='var-SRC_URI'>SRC_URI</link></filename>.
325 You can find information about the options and formats of entries for specific 349 You can find information about the options and formats of entries for specific
326 fetchers in the <ulink url='http://bitbake.berlios.de/manual/'>BitBake manual</ulink>. 350 fetchers in the <ulink url='http://bitbake.berlios.de/manual/'>BitBake manual</ulink>.
327 </para> 351 </para>
328 352
329 <para> 353 <para>
330 One useful feature for certain SCM fetchers is the ability to 354 One useful feature for certain Source Code Manager (SCM) fetchers is the ability to
331 "auto-update" when the upstream SCM changes version. 355 "auto-update" when the upstream SCM changes version.
332 Since this ability requires certain functionality from the SCM, not all 356 Since this ability requires certain functionality from the SCM, not all
333 systems support it. 357 systems support it.
334 Currently Subversion, Bazaar and to a limited extent, Git support the ability to "auto-update". 358 Currently Subversion, Bazaar and to a limited extent, Git support the ability to "auto-update".
335 This feature works using the <glossterm><link linkend='var-SRCREV'>SRCREV</link></glossterm> 359 This feature works using the <filename><link linkend='var-SRCREV'>SRCREV</link></filename>
336 variable. 360 variable.
337 See the 361 See the
338 <link linkend='platdev-appdev-srcrev'>Developing within Poky with an External SCM-based Package</link> 362 <link linkend='platdev-appdev-srcrev'>Development Within Yocto Project for a Package that Uses
339 section for more information. 363 an External SCM</link> section for more information.
340 </para> 364 </para>
341 365
342 </section> 366 </section>