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 +
+ Building Software from an External Source + + + By default, the Yocto Project build system does its work from within the + Yocto Project Build Directory. + The build process involves fetching the source files, unpacking them, and then patching them + if necessary before the build takes place. + + + + Situations exist where you might want to build software from source files that are external to + and thus outside of the Yocto Project Files. + For example, suppose you have a project that includes a new BSP with a heavily customized + kernel, a very minimal image, and some new user-space recipes. + And, you want to minimize the exposure to the Yocto Project build system to the + development team so that they can focus on their project and maintain everyone's workflow + as much as possible. + In this case, you want a kernel source directory on the development machine where the + development occurs. + You want the recipe's + SRC_URI + variable to point to the external directory and use it as is, not copy it. + + + + To build from software that comes from an external source, all you need to do is + change your recipe so that it inherits the + externalsrc.bbclass + class and then sets the + S + variable to point to your external source code. + Here are the statements to put in your recipe: + + inherit externalsrc + S = "/some/path/to/your/package/source" + + + + + It is important to know that the externalsrc.bbclass assumes that the + source directory S and the build directory + B + are different even though by default these directories are the same. + This assumption is important because it supports building different variants of the recipe + by using the + BBCLASSEXTEND + variable. + You could allow the build directory to be the same as the source directory but you would + not be able to build more than one variant of the recipe. + Consequently, if you are building multiple variants of the recipe, you need to establish a + build directory that is different than the source directory. + +
+
Making and Maintaining Changes