diff options
| -rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 186 |
1 files changed, 127 insertions, 59 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index 2968b4d3c0..44fb9ff63a 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
| @@ -1896,6 +1896,16 @@ | |||
| 1896 | subdirectory that is not specified in the patch file, use the | 1896 | subdirectory that is not specified in the patch file, use the |
| 1897 | "patchdir" option in the entry. | 1897 | "patchdir" option in the entry. |
| 1898 | </para> | 1898 | </para> |
| 1899 | |||
| 1900 | <para> | ||
| 1901 | As with all local files referenced in | ||
| 1902 | <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink> | ||
| 1903 | using <filename>file://</filename>, you should place | ||
| 1904 | patch files in a directory next to the recipe either | ||
| 1905 | named the same as the base name of the recipe | ||
| 1906 | (<ulink url='&YOCTO_DOCS_REF_URL;#var-BPN'><filename>BPN</filename></ulink>), | ||
| 1907 | or "files". | ||
| 1908 | </para> | ||
| 1899 | </section> | 1909 | </section> |
| 1900 | 1910 | ||
| 1901 | <section id='new-recipe-licensing'> | 1911 | <section id='new-recipe-licensing'> |
| @@ -2190,9 +2200,23 @@ | |||
| 2190 | In these cases, you need to go back and add additional | 2200 | In these cases, you need to go back and add additional |
| 2191 | options to the configure script as well as possibly | 2201 | options to the configure script as well as possibly |
| 2192 | add additional build-time dependencies to | 2202 | add additional build-time dependencies to |
| 2193 | <filename>DEPENDS</filename>. | 2203 | <filename>DEPENDS</filename>.</para> |
| 2194 | Occasionally, it is necessary to apply a patch to the | 2204 | <para>Occasionally, it is necessary to apply a patch |
| 2195 | source to ensure the correct paths are used. | 2205 | to the source to ensure the correct paths are used. |
| 2206 | If you need to specify paths to find files staged | ||
| 2207 | into the sysroot from other recipes, use the variables | ||
| 2208 | that the OpenEmbedded build system provides | ||
| 2209 | (e.g. | ||
| 2210 | <filename>STAGING_BINDIR</filename>, | ||
| 2211 | <filename>STAGING_INCDIR</filename>, | ||
| 2212 | <filename>STAGING_DATADIR</filename>, and so forth). | ||
| 2213 | <!-- | ||
| 2214 | (e.g. | ||
| 2215 | <ulink url='&YOCTO_DOCS_REF_URL;#var-STAGING_BINDIR'><filename>STAGING_BINDIR</filename></ulink>, | ||
| 2216 | <ulink url='&YOCTO_DOCS_REF_URL;#var-STAGING_INCDIR'><filename>STAGING_INCDIR</filename></ulink>, | ||
| 2217 | <ulink url='&YOCTO_DOCS_REF_URL;#var-STAGING_DATADIR'><filename>STAGING_DATADIR</filename></ulink>, | ||
| 2218 | and so forth). | ||
| 2219 | --> | ||
| 2196 | </para></listitem> | 2220 | </para></listitem> |
| 2197 | </itemizedlist> | 2221 | </itemizedlist> |
| 2198 | </para> | 2222 | </para> |
| @@ -2263,7 +2287,8 @@ | |||
| 2263 | recipe. | 2287 | recipe. |
| 2264 | The function must first use | 2288 | The function must first use |
| 2265 | <filename>install -d</filename> to create the | 2289 | <filename>install -d</filename> to create the |
| 2266 | directories. | 2290 | directories under |
| 2291 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink><filename>}</filename>. | ||
| 2267 | Once the directories exist, your function can use | 2292 | Once the directories exist, your function can use |
| 2268 | <filename>install</filename> to manually install the | 2293 | <filename>install</filename> to manually install the |
| 2269 | built software into the directories.</para> | 2294 | built software into the directories.</para> |
| @@ -2398,56 +2423,100 @@ | |||
| 2398 | <title>Packaging</title> | 2423 | <title>Packaging</title> |
| 2399 | 2424 | ||
| 2400 | <para> | 2425 | <para> |
| 2401 | The <filename>do_package</filename> task splits the files | 2426 | Successful packaging is a combination of automated processes |
| 2402 | produced by the recipe into logical components. | 2427 | performed by the OpenEmbedded build system and some |
| 2403 | Even software that produces a single binary might still have | 2428 | specific steps you need to take. |
| 2404 | debug symbols, documentation, and other logical components | 2429 | The following list describes the process: |
| 2405 | that should be split out. | 2430 | <itemizedlist> |
| 2406 | The <filename>do_package</filename> task ensures that files | 2431 | <listitem><para><emphasis>Splitting Files</emphasis>: |
| 2407 | are split up and packaged correctly. | 2432 | The <filename>do_package</filename> task splits the |
| 2408 | </para> | 2433 | files produced by the recipe into logical components. |
| 2409 | 2434 | Even software that produces a single binary might | |
| 2410 | <para> | 2435 | still have debug symbols, documentation, and other |
| 2411 | The <filename>insane</filename> class adds a step to the | 2436 | logical components that should be split out. |
| 2412 | package generation process so that output quality assurance | 2437 | The <filename>do_package</filename> task ensures |
| 2413 | checks are generated by the OpenEmbedded build system. | 2438 | that files are split up and packaged correctly. |
| 2414 | This step performs a range of checks to be sure the build's | 2439 | </para></listitem> |
| 2415 | output is free of common problems that show up during runtime. | 2440 | <listitem><para><emphasis>Running QA Checks</emphasis>: |
| 2416 | For information on these checks, see the | 2441 | The <filename>insane</filename> class adds a step to |
| 2417 | <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-insane'><filename>insane</filename></ulink> | 2442 | the package generation process so that output quality |
| 2418 | class and the | 2443 | assurance checks are generated by the OpenEmbedded |
| 2419 | "<ulink url='&YOCTO_DOCS_REF_URL;#ref-qa-checks'>QA Error and Warning Messages</ulink>" | 2444 | build system. |
| 2420 | chapter in the Yocto Project Reference Manual. | 2445 | This step performs a range of checks to be sure the |
| 2421 | </para> | 2446 | build's output is free of common problems that show |
| 2422 | 2447 | up during runtime. | |
| 2423 | <para> | 2448 | For information on these checks, see the |
| 2424 | After you build your software, you need to be sure your packages | 2449 | <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-insane'><filename>insane</filename></ulink> |
| 2425 | are correct. | 2450 | class and the |
| 2426 | Examine the | 2451 | "<ulink url='&YOCTO_DOCS_REF_URL;#ref-qa-checks'>QA Error and Warning Messages</ulink>" |
| 2427 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink><filename>}/packages-split</filename> | 2452 | chapter in the Yocto Project Reference Manual. |
| 2428 | directory and make sure files are where you expect them to be. | 2453 | </para></listitem> |
| 2429 | </para> | 2454 | <listitem><para><emphasis>Hand-Checking Your Packages</emphasis>: |
| 2430 | 2455 | After you build your software, you need to be sure | |
| 2431 | <para> | 2456 | your packages are correct. |
| 2432 | If you discover problems, you can set | 2457 | Examine the |
| 2433 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGES'><filename>PACKAGES</filename></ulink>, | 2458 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink><filename>}/packages-split</filename> |
| 2434 | <ulink url='&YOCTO_DOCS_REF_URL;#var-FILES'><filename>FILES</filename></ulink>, | 2459 | directory and make sure files are where you expect |
| 2435 | <filename>do_install(_append)</filename>, and so forth as | 2460 | them to be. |
| 2436 | needed. | 2461 | If you discover problems, you can set |
| 2437 | </para> | 2462 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGES'><filename>PACKAGES</filename></ulink>, |
| 2438 | 2463 | <ulink url='&YOCTO_DOCS_REF_URL;#var-FILES'><filename>FILES</filename></ulink>, | |
| 2439 | <para> | 2464 | <filename>do_install(_append)</filename>, and so forth as |
| 2440 | See the | 2465 | needed. |
| 2441 | "<link linkend='splitting-an-application-into-multiple-packages'>Splitting an Application into Multiple Packages</link>" | 2466 | </para></listitem> |
| 2442 | section for an example that shows how you might split | 2467 | <listitem><para><emphasis>Splitting an Application into Multiple Packages</emphasis>: |
| 2443 | your software into more than one package. | 2468 | If you need to split an application into several |
| 2444 | </para> | 2469 | packages, see the |
| 2445 | 2470 | "<link linkend='splitting-an-application-into-multiple-packages'>Splitting an Application into Multiple Packages</link>" | |
| 2446 | <para> | 2471 | section for an example. |
| 2447 | For an example showing how to install a post-installation | 2472 | </para></listitem> |
| 2448 | script, see the | 2473 | <listitem><para><emphasis>Installing a Post-Installation Script</emphasis>: |
| 2449 | "<link linkend='new-recipe-post-installation-scripts'>Post-Installation Scripts</link>" | 2474 | For an example showing how to install a |
| 2450 | section. | 2475 | post-installation script, see the |
| 2476 | "<link linkend='new-recipe-post-installation-scripts'>Post-Installation Scripts</link>" | ||
| 2477 | section. | ||
| 2478 | </para></listitem> | ||
| 2479 | <listitem><para><emphasis>Marking Package Architecture</emphasis>: | ||
| 2480 | Depending on what your recipe is building and how it | ||
| 2481 | is configured, it might be important to mark the | ||
| 2482 | packages produced as being specific to a particular | ||
| 2483 | machine, or to mark them as not being specific to | ||
| 2484 | a particular machine or architecture at all. | ||
| 2485 | By default, packages produced for the target are | ||
| 2486 | marked as being specific to the architecture of the | ||
| 2487 | target machine because that is usually the desired | ||
| 2488 | result. | ||
| 2489 | However, if the recipe configures the software to be | ||
| 2490 | built specific to the target machine (e.g. the | ||
| 2491 | <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink> | ||
| 2492 | value is passed into the configure script or a patch | ||
| 2493 | is applied only for a particular machine), then you | ||
| 2494 | should mark the packages produced as being | ||
| 2495 | machine-specific by adding the following to the | ||
| 2496 | recipe: | ||
| 2497 | <literallayout class='monospaced'> | ||
| 2498 | PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
| 2499 | </literallayout> | ||
| 2500 | On the other hand, if the recipe produces packages | ||
| 2501 | that do not contain anything specific to the target | ||
| 2502 | machine or architecture at all (e.g. recipes | ||
| 2503 | that simply package script files or configuration | ||
| 2504 | files), you should use the | ||
| 2505 | <ulink url='&YOCTO_DOCS_REF_URL;#allarch'><filename>allarch</filename></ulink> | ||
| 2506 | class to do this for you by adding this to your | ||
| 2507 | recipe: | ||
| 2508 | <literallayout class='monospaced'> | ||
| 2509 | inherit allarch | ||
| 2510 | </literallayout> | ||
| 2511 | Ensuring that the package architecture is correct is | ||
| 2512 | not critical while you are doing the first few builds | ||
| 2513 | of your recipe, but it is important in order to | ||
| 2514 | to ensure that your recipe rebuilds (or does not | ||
| 2515 | rebuild) appropriately in response to changes in | ||
| 2516 | configuration, and to ensure that you get the | ||
| 2517 | appropriate packages installed on the target machine. | ||
| 2518 | </para></listitem> | ||
| 2519 | </itemizedlist> | ||
| 2451 | </para> | 2520 | </para> |
| 2452 | </section> | 2521 | </section> |
| 2453 | 2522 | ||
| @@ -2497,8 +2566,8 @@ | |||
| 2497 | package is included in an image. | 2566 | package is included in an image. |
| 2498 | To add a post-installation script to a package, add a | 2567 | To add a post-installation script to a package, add a |
| 2499 | <filename>pkg_postinst_PACKAGENAME()</filename> function to | 2568 | <filename>pkg_postinst_PACKAGENAME()</filename> function to |
| 2500 | the recipe file (<filename>.bb</filename>) and use | 2569 | the recipe file (<filename>.bb</filename>) and replace |
| 2501 | <filename>PACKAGENAME</filename> as the name of the package | 2570 | <filename>PACKAGENAME</filename> with the name of the package |
| 2502 | you want to attach to the <filename>postinst</filename> | 2571 | you want to attach to the <filename>postinst</filename> |
| 2503 | script. | 2572 | script. |
| 2504 | To apply the post-installation script to the main package | 2573 | To apply the post-installation script to the main package |
| @@ -2546,9 +2615,8 @@ | |||
| 2546 | 2615 | ||
| 2547 | <para> | 2616 | <para> |
| 2548 | The previous example delays execution until the image boots | 2617 | The previous example delays execution until the image boots |
| 2549 | again because the | 2618 | again because the environment variable <filename>D</filename> |
| 2550 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-D'>D</ulink></filename> | 2619 | points to the directory containing the image when |
| 2551 | variable points to the directory containing the image when | ||
| 2552 | the root filesystem is created at build time but is unset | 2620 | the root filesystem is created at build time but is unset |
| 2553 | when executed on the first boot. | 2621 | when executed on the first boot. |
| 2554 | </para> | 2622 | </para> |
