diff options
| -rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index f631f98e18..80c47b0f64 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
| @@ -1436,6 +1436,61 @@ so that there are some definite steps on how to do this. I need more detail her | |||
| 1436 | </para> | 1436 | </para> |
| 1437 | </section> | 1437 | </section> |
| 1438 | 1438 | ||
| 1439 | <section id="building-software-from-an-external-source"> | ||
| 1440 | <title>Building Software from an External Source</title> | ||
| 1441 | |||
| 1442 | <para> | ||
| 1443 | By default, the Yocto Project build system does its work from within the | ||
| 1444 | <link linkend='yocto-project-build-directory'>Yocto Project Build Directory</link>. | ||
| 1445 | The build process involves fetching the source files, unpacking them, and then patching them | ||
| 1446 | if necessary before the build takes place. | ||
| 1447 | </para> | ||
| 1448 | |||
| 1449 | <para> | ||
| 1450 | Situations exist where you might want to build software from source files that are external to | ||
| 1451 | and thus outside of the <link linkend='yocto-project-files'>Yocto Project Files</link>. | ||
| 1452 | For example, suppose you have a project that includes a new BSP with a heavily customized | ||
| 1453 | kernel, a very minimal image, and some new user-space recipes. | ||
| 1454 | And, you want to minimize the exposure to the Yocto Project build system to the | ||
| 1455 | development team so that they can focus on their project and maintain everyone's workflow | ||
| 1456 | as much as possible. | ||
| 1457 | In this case, you want a kernel source directory on the development machine where the | ||
| 1458 | development occurs. | ||
| 1459 | You want the recipe's | ||
| 1460 | <ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual.html#var-SRC_URI'><filename>SRC_URI</filename></ulink> | ||
| 1461 | variable to point to the external directory and use it as is, not copy it. | ||
| 1462 | </para> | ||
| 1463 | |||
| 1464 | <para> | ||
| 1465 | To build from software that comes from an external source, all you need to do is | ||
| 1466 | change your recipe so that it inherits the | ||
| 1467 | <ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual.html#ref-classes-externalsrc'><filename>externalsrc.bbclass</filename></ulink> | ||
| 1468 | class and then sets the | ||
| 1469 | <ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual.html#var-S'><filename>S</filename></ulink> | ||
| 1470 | variable to point to your external source code. | ||
| 1471 | Here are the statements to put in your recipe: | ||
| 1472 | <literallayout class='monospaced'> | ||
| 1473 | inherit externalsrc | ||
| 1474 | S = "/some/path/to/your/package/source" | ||
| 1475 | </literallayout> | ||
| 1476 | </para> | ||
| 1477 | |||
| 1478 | <para> | ||
| 1479 | It is important to know that the <filename>externalsrc.bbclass</filename> assumes that the | ||
| 1480 | source directory <filename>S</filename> and the build directory | ||
| 1481 | <ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual.html#var-B'><filename>B</filename></ulink> | ||
| 1482 | are different even though by default these directories are the same. | ||
| 1483 | This assumption is important because it supports building different variants of the recipe | ||
| 1484 | by using the | ||
| 1485 | <ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual#var-BBCLASSEXTEND'><filename>BBCLASSEXTEND</filename></ulink> | ||
| 1486 | variable. | ||
| 1487 | You could allow the build directory to be the same as the source directory but you would | ||
| 1488 | not be able to build more than one variant of the recipe. | ||
| 1489 | Consequently, if you are building multiple variants of the recipe, you need to establish a | ||
| 1490 | build directory that is different than the source directory. | ||
| 1491 | </para> | ||
| 1492 | </section> | ||
| 1493 | |||
| 1439 | <section id="usingpoky-changes"> | 1494 | <section id="usingpoky-changes"> |
| 1440 | <title>Making and Maintaining Changes</title> | 1495 | <title>Making and Maintaining Changes</title> |
| 1441 | <para> | 1496 | <para> |
