diff options
| -rw-r--r-- | documentation/dev-manual/dev-manual-model.xml | 212 |
1 files changed, 190 insertions, 22 deletions
diff --git a/documentation/dev-manual/dev-manual-model.xml b/documentation/dev-manual/dev-manual-model.xml index d71021da36..ff74063fc3 100644 --- a/documentation/dev-manual/dev-manual-model.xml +++ b/documentation/dev-manual/dev-manual-model.xml | |||
| @@ -6,10 +6,6 @@ | |||
| 6 | 6 | ||
| 7 | <title>Common Development Models</title> | 7 | <title>Common Development Models</title> |
| 8 | 8 | ||
| 9 | <para role='writernotes'> | ||
| 10 | Test paragraph. | ||
| 11 | </para> | ||
| 12 | |||
| 13 | <para> | 9 | <para> |
| 14 | Many development models exist for which you can use the Yocto Project. | 10 | Many development models exist for which you can use the Yocto Project. |
| 15 | This chapter overviews simple methods that use tools provided by the | 11 | This chapter overviews simple methods that use tools provided by the |
| @@ -2219,6 +2215,175 @@ | |||
| 2219 | </orderedlist> | 2215 | </orderedlist> |
| 2220 | </para> | 2216 | </para> |
| 2221 | </section> | 2217 | </section> |
| 2218 | |||
| 2219 | <section id='devtool-use-devtool-upgrade-to-create-a-version-of-the-recipe-that-supports-a-newer-version-of-the-software'> | ||
| 2220 | <title>Use <filename>devtool upgrade</filename> to Create a Version of the Recipe that Supports a Newer Version of the Software</title> | ||
| 2221 | |||
| 2222 | <para> | ||
| 2223 | The <filename>devtool upgrade</filename> command updates | ||
| 2224 | an existing recipe so that you can build it for an updated | ||
| 2225 | set of source files. | ||
| 2226 | The command is flexible enough to allow you to specify | ||
| 2227 | source code revision and versioning schemes, extract code into | ||
| 2228 | or out of the <filename>devtool</filename> workspace, and | ||
| 2229 | work with any source file forms that the fetchers support. | ||
| 2230 | </para> | ||
| 2231 | |||
| 2232 | <para> | ||
| 2233 | Depending on your particular scenario, the arguments and options | ||
| 2234 | you use with <filename>devtool upgrade</filename> form different | ||
| 2235 | combinations. | ||
| 2236 | The following diagram shows a common development flow | ||
| 2237 | you would use with the <filename>devtool modify</filename> | ||
| 2238 | command: | ||
| 2239 | </para> | ||
| 2240 | |||
| 2241 | <para> | ||
| 2242 | <imagedata fileref="figures/devtool-upgrade-flow.png" align="center" /> | ||
| 2243 | </para> | ||
| 2244 | |||
| 2245 | <para> | ||
| 2246 | <orderedlist> | ||
| 2247 | <listitem><para><emphasis>Initiate the Upgrade</emphasis>: | ||
| 2248 | The top part of the flow shows a typical scenario by which | ||
| 2249 | you could use <filename>devtool upgrade</filename>. | ||
| 2250 | The following conditions exist: | ||
| 2251 | <itemizedlist> | ||
| 2252 | <listitem><para>The recipe exists in some layer external | ||
| 2253 | to the <filename>devtool</filename> workspace. | ||
| 2254 | </para></listitem> | ||
| 2255 | <listitem><para>The source files for the new release | ||
| 2256 | exist adjacent to the same location pointed to by | ||
| 2257 | <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink> | ||
| 2258 | in the recipe (e.g. a tarball with the new version | ||
| 2259 | number in the name, or as a different revision in | ||
| 2260 | the upstream Git repository). | ||
| 2261 | </para></listitem> | ||
| 2262 | </itemizedlist> | ||
| 2263 | A common situation is where third-party software has | ||
| 2264 | undergone a revision so that it has been upgraded. | ||
| 2265 | The recipe you have access to is likely in your own layer. | ||
| 2266 | Thus, you need to upgrade the recipe to use the | ||
| 2267 | newer version of the software: | ||
| 2268 | <literallayout class='monospaced'> | ||
| 2269 | $ devtool upgrade -V <replaceable>version recipe</replaceable> | ||
| 2270 | </literallayout> | ||
| 2271 | By default, the <filename>devtool upgrade</filename> command | ||
| 2272 | extracts source code into the <filename>sources</filename> | ||
| 2273 | directory in the workspace. | ||
| 2274 | If you want the code extracted to any other location, you | ||
| 2275 | need to provide the <replaceable>srctree</replaceable> | ||
| 2276 | positional argument with the command as follows: | ||
| 2277 | <literallayout class='monospaced'> | ||
| 2278 | $ devtool upgrade -V <replaceable>version recipe srctree</replaceable> | ||
| 2279 | </literallayout> | ||
| 2280 | Also, in this example, the "-V" option is used to specify | ||
| 2281 | the new version. | ||
| 2282 | If the source files pointed to by the | ||
| 2283 | <filename>SRC_URI</filename> statement in the recipe are | ||
| 2284 | in a Git repository, you must provide the "-S" option and | ||
| 2285 | specify a revision for the software.</para> | ||
| 2286 | |||
| 2287 | <para>Once <filename>devtool</filename> locates the recipe, | ||
| 2288 | it uses the <filename>SRC_URI</filename> variable to locate | ||
| 2289 | the source code and any local patch files from other | ||
| 2290 | developers are located. | ||
| 2291 | The result is that the command sets up the source | ||
| 2292 | code, the new version of the recipe, and an append file | ||
| 2293 | all within the workspace. | ||
| 2294 | </para></listitem> | ||
| 2295 | <listitem><para><emphasis>Resolve any Conflicts created by the Upgrade</emphasis>: | ||
| 2296 | At this point, there could be some conflicts due to the | ||
| 2297 | software being upgraded to a new version. | ||
| 2298 | This would occur if your recipe specifies some patch files in | ||
| 2299 | <filename>SRC_URI</filename> that conflict with changes | ||
| 2300 | made in the new version of the software. | ||
| 2301 | If this is the case, you need to resolve the conflicts | ||
| 2302 | by editing the source and following the normal | ||
| 2303 | <filename>git rebase</filename> conflict resolution | ||
| 2304 | process.</para> | ||
| 2305 | |||
| 2306 | <para>Before moving onto the next step, be sure to resolve any | ||
| 2307 | such conflicts created through use of a newer or different | ||
| 2308 | version of the software. | ||
| 2309 | </para></listitem> | ||
| 2310 | <listitem><para><emphasis>Build the Recipe</emphasis>: | ||
| 2311 | Once you have your recipe in order, you can build it. | ||
| 2312 | You can either use <filename>devtool build</filename> or | ||
| 2313 | <filename>bitbake</filename>. | ||
| 2314 | Either method produces build output that is stored | ||
| 2315 | in | ||
| 2316 | <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>. | ||
| 2317 | </para></listitem> | ||
| 2318 | <listitem><para><emphasis>Deploy the Build Output</emphasis>: | ||
| 2319 | When you use the <filename>devtool build</filename> | ||
| 2320 | command or <filename>bitbake</filename> to build out your | ||
| 2321 | recipe, you probably want to see if the resulting build | ||
| 2322 | output works as expected on target hardware. | ||
| 2323 | <note> | ||
| 2324 | This step assumes you have a previously built | ||
| 2325 | image that is already either running in QEMU or | ||
| 2326 | running on actual hardware. | ||
| 2327 | Also, it is assumed that for deployment of the image | ||
| 2328 | to the target, SSH is installed in the image and if | ||
| 2329 | the image is running on real hardware that you have | ||
| 2330 | network access to and from your development machine. | ||
| 2331 | </note> | ||
| 2332 | You can deploy your build output to that target hardware by | ||
| 2333 | using the <filename>devtool deploy-target</filename> command: | ||
| 2334 | <literallayout class='monospaced'> | ||
| 2335 | $ devtool deploy-target <replaceable>recipe target</replaceable> | ||
| 2336 | </literallayout> | ||
| 2337 | The <replaceable>target</replaceable> is a live target machine | ||
| 2338 | running as an SSH server.</para> | ||
| 2339 | |||
| 2340 | <para>You can, of course, also deploy the image you build | ||
| 2341 | using the <filename>devtool build-image</filename> command | ||
| 2342 | to actual hardware. | ||
| 2343 | However, <filename>devtool</filename> does not provide a | ||
| 2344 | specific command that allows you to do this. | ||
| 2345 | </para></listitem> | ||
| 2346 | <listitem><para><emphasis>Optionally Create Patch Files for Your Changes</emphasis>: | ||
| 2347 | After you have debugged your changes, you can | ||
| 2348 | use <filename>devtool update-recipe</filename> to | ||
| 2349 | generate patch files for all the commits you have | ||
| 2350 | made. | ||
| 2351 | <note> | ||
| 2352 | Patch files are generated only for changes | ||
| 2353 | you have committed. | ||
| 2354 | </note> | ||
| 2355 | <literallayout class='monospaced'> | ||
| 2356 | $ devtool update-recipe <replaceable>recipe</replaceable> | ||
| 2357 | </literallayout> | ||
| 2358 | By default, the | ||
| 2359 | <filename>devtool update-recipe</filename> command | ||
| 2360 | creates the patch files in a folder named the same | ||
| 2361 | as the recipe beneath the folder in which the recipe | ||
| 2362 | resides, and updates the recipe's | ||
| 2363 | <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink> | ||
| 2364 | statement to point to the generated patch files. | ||
| 2365 | </para></listitem> | ||
| 2366 | <listitem><para><emphasis>Move the Recipe to its Permanent Layer</emphasis>: | ||
| 2367 | Before cleaning up the workspace, you need to move the | ||
| 2368 | final recipe to its permanent layer. | ||
| 2369 | You can either overwrite the original recipe or you can | ||
| 2370 | overlay the upgraded recipe into a separate layer. | ||
| 2371 | You must do this before using the | ||
| 2372 | <filename>devtool reset</filename> command if you want to | ||
| 2373 | retain the upgraded recipe. | ||
| 2374 | </para></listitem> | ||
| 2375 | <listitem><para><emphasis>Restore the Workspace</emphasis>: | ||
| 2376 | The <filename>devtool reset</filename> restores the | ||
| 2377 | state so that standard layers and upstream sources are | ||
| 2378 | used to build the recipe rather than what is in the | ||
| 2379 | workspace. | ||
| 2380 | <literallayout class='monospaced'> | ||
| 2381 | $ devtool reset <replaceable>recipe</replaceable> | ||
| 2382 | </literallayout> | ||
| 2383 | </para></listitem> | ||
| 2384 | </orderedlist> | ||
| 2385 | </para> | ||
| 2386 | </section> | ||
| 2222 | </section> | 2387 | </section> |
| 2223 | 2388 | ||
| 2224 | <section id='devtool-quick-reference'> | 2389 | <section id='devtool-quick-reference'> |
| @@ -2256,24 +2421,27 @@ | |||
| 2256 | -h, --help show this help message and exit | 2421 | -h, --help show this help message and exit |
| 2257 | 2422 | ||
| 2258 | subcommands: | 2423 | subcommands: |
| 2259 | <subcommand> | 2424 | Beginning work on a recipe: |
| 2260 | create-workspace Set up workspace in an alternative location | 2425 | add Add a new recipe |
| 2261 | upgrade Upgrade an existing recipe | 2426 | modify Modify the source for an existing recipe |
| 2262 | deploy-target Deploy recipe output files to live target machine | 2427 | upgrade Upgrade an existing recipe |
| 2263 | undeploy-target Undeploy recipe output files in live target machine | 2428 | Getting information: |
| 2264 | search Search available recipes | 2429 | status Show workspace status |
| 2265 | build Build a recipe | 2430 | search Search available recipes |
| 2266 | edit-recipe Edit a recipe file in your workspace | 2431 | Working on a recipe in the workspace: |
| 2267 | configure-help Get help on configure script options | 2432 | build Build a recipe |
| 2268 | add Add a new recipe | 2433 | edit-recipe Edit a recipe file in your workspace |
| 2269 | modify Modify the source for an existing recipe | 2434 | configure-help Get help on configure script options |
| 2270 | extract Extract the source for an existing recipe | 2435 | update-recipe Apply changes from external source tree to recipe |
| 2271 | sync Synchronize the source tree for an existing recipe | 2436 | reset Remove a recipe from your workspace |
| 2272 | update-recipe Apply changes from external source tree to recipe | 2437 | Testing changes on target: |
| 2273 | status Show workspace status | 2438 | deploy-target Deploy recipe output files to live target machine |
| 2274 | reset Remove a recipe from your workspace | 2439 | undeploy-target Undeploy recipe output files in live target machine |
| 2275 | build-image Build image including workspace recipe packages | 2440 | build-image Build image including workspace recipe packages |
| 2276 | 2441 | Advanced: | |
| 2442 | create-workspace Set up workspace in an alternative location | ||
| 2443 | extract Extract the source for an existing recipe | ||
| 2444 | sync Synchronize the source tree for an existing recipe | ||
| 2277 | Use devtool <subcommand> --help to get help on a specific command | 2445 | Use devtool <subcommand> --help to get help on a specific command |
| 2278 | </literallayout> | 2446 | </literallayout> |
| 2279 | </para> | 2447 | </para> |
