From c88f25ddb43f4b0596720cbee4f07ac4a192b219 Mon Sep 17 00:00:00 2001 From: Scott Rifenbark Date: Tue, 5 Jun 2012 10:03:06 -0700 Subject: documentation/bsp-guide/bsp.xml: BSP recommendations section added Added the "Requirements and Recommendations for Released BSPs" section. This section was requested by Dave Stewart based on community input for direction on how to create a BSP that was compliant with the Yocto Project. The input for the section came from Tom Zanussi. A spell-check was performed also prior to this commit that addressed a few spelling issues across the file. (From yocto-docs rev: 6357eb7a26abb3dca14daf5d9b9a4e245dd0827b) Signed-off-by: Scott Rifenbark Signed-off-by: Richard Purdie --- documentation/bsp-guide/bsp.xml | 206 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 201 insertions(+), 5 deletions(-) (limited to 'documentation') diff --git a/documentation/bsp-guide/bsp.xml b/documentation/bsp-guide/bsp.xml index a2453326d9..1b5f0f5b2a 100644 --- a/documentation/bsp-guide/bsp.xml +++ b/documentation/bsp-guide/bsp.xml @@ -75,7 +75,7 @@ Some layers function as a layer to hold other BSP layers. - An example of this type of layers is the meta-intel layer. + An example of this type of layer is the meta-intel layer. The meta-intel layer contains over 10 individual BSP layers. @@ -121,6 +121,15 @@ are separate components that happen to be combined in certain end products. + + Before looking at the common form for the file structure inside a BSP Layer, + you should be aware that some requirements do exist in order for a BSP to + be considered compliant with the Yocto Project. + For that list of requirements, see the + "Released BSP Requirements" + section. + + Below is the common form for the file structure inside a BSP Layer. While you can use this basic form for the standard, realize that the actual structures @@ -644,6 +653,193 @@ +
+ Requirements and Recommendations for Released BSPs + + + Certain requirements exist for a released BSP to be considered + compliant with the Yocto Project. + Additionally, a single recommendation also exists. + This section describes the requirements and recommendation for + released BSPs. + + +
+ Released BSP Requirements + + + Before looking at BSP requirements, you should consider the following: + + The requirements here assume the base Yocto Project requirements + for the BSP layer are already met. + For example, requirements for working with the + oe-core and standard toolchain layers. + The requirements in this section apply regardless of how you + ultimately package a BSP. + You should consult the packaging and distribution guidelines for your + specific release process. + For an example of packaging and distribution requirements, see the + Third + Party BSP Release Process wiki page. + The requirements for the BSP as it is made available to a developer + are completely independent of the released form of the BSP. + For example, the BSP metadata can be contained within a Git repository + and could have a directory structure completely different from what appears + in the officially released BSP layer. + No requirement stipulates that specific packages or package + modifications exist in the BSP layer, beyond the requirements for general + compliance with the Yocto Project. + For example, no requirement exists dictating that a specific kernel or + kernel version be used in a given BSP. + + + + + Following are the requirements for a released BSP that conforms to the + Yocto Project: + + Layer Name: + The BSP must have a layer name that follows the Yocto + Project standards. + For information on BSP layer names, see the + "BSP Layers" section. + + File System Layout: + In general, the filesystem layout for the BSP layer + should use the same directory names + as listed in recipes.txt. + You can find recipes.txt in the + meta directory of the + Yocto + Project Files, or in the OpenEmbedded Core Layer + (openembedded-core) found at + . + + In particular, you should place recipes + (.bb files) and recipe + modifications (.bbappend files) into + recipes-* subdirectories by functional area + as outlined in recipes.txt. + If none of the categories fits a particular recipe, you can + make up your own recipe-* subdirectory. + Within any particular recipes-* category, the layout + should match what is found in the OpenEmbedded Core + Git repository (openembedded-core) + or the Yocto Project Files (poky). + In other words, make sure you place related files in appropriately + related recipes-* subdirectories specific to the + recipe's function, or within a subdirectory containing a set of closely-related + recipes. + The recipes themselves should follow the general guidelines + for recipes used in the Yocto Project found in the + Yocto + Recipe and Patch Style Guide. + License File: + You must include a license file in the + meta-<bsp_name> directory. + This license covers the BSP metadata as a whole. + You must specify which license to use since there is no + default license if one is not specified. + README File: + You must include a README file in the + meta-<bsp_name> directory. + At a minimum, the README file should + contain the following: + + A brief description about the hardware the BSP + targets. + A list of all the dependencies a + on which a BSP layer depends. + These dependencies are typically a list of required layers needed + to build the BSP. + However, the dependencies should also contain information regarding + any other dependencies the BSP might have. + Any required special licensing information. + For example, this information includes information on + special variables needed to satisfy a EULA, + or instructions on information needed to build or distribute + binaries built from the BSP metadata. + The name and contact information for the + BSP layer maintainer. + This is the person to whom patches and questions should + be sent. + Instructions on how to build the BSP using the BSP + layer. + Instructions on how to boot the BSP build from + the BSP layer. + Instructions on how to boot the binary images + contained in the /binary directory, + if present. + Information on any known bugs or issues that users + should know about when either building or booting the BSP + binaries. + + README.sources File: + You must include a README.sources in the + meta-<bsp_name> directory. + This file specifies exactly where you can find the sources used to + generate the binary images contained in the + /binary directory, if present. + Layer Configuration File: + You must include a conf/layer.conf in the + meta-<bsp_name> directory. + This file identifies the meta-<bsp_name> + BSP layer as a layer to the build system. + Machine Configuration File: + You must include a conf/machine/<bsp_name>.conf + in the meta-<bsp_name> directory. + This configuration file defines a machine target that can be built + using the BSP layer. + Multiple machine configuration files define variations of machine + configurations that are supported by the BSP. + If a BSP supports more multiple machine variations, you need to + adequately describe each variation in the BSP + README file. + Do not use multiple machine configuration files to describe disparate + hardware. + Multiple machine configuration files should describe very similar targets. + If you do have very different targets, you should create a separate + BSP. + It is completely possible for a developer to structure the + working repository as a conglomeration of unrelated BSP + files, and to possibly generate specifically targeted 'release' BSPs + from that directory using scripts or some other mechanism. + Such considerations are outside the scope of this document. + + + +
+ +
+ Released BSP Recommendations + + + One recommendation for BSP releases is that they contain + one or more bootable images. + Including bootable images allows users to easily try out the BSP + on their own hardware. + + + + In some cases, it might not be convenient to include a + bootable image. + In this case, you might want to make two versions of the + BSP available: one that contains binary images, and one + that does not. + The version that does not contain bootable images avoids + unnecessary download times for users not interested in the images. + + + + If you need to distribute a BSP and include bootable images or build kernel and + filesystems meant to allow users to boot the BSP for evaluation + purposes, you should put the images and artifacts within a + binary/ subdirectory located in the + meta-<bsp_name> directory. + +
+
+
Customizing a Recipe for a BSP @@ -760,7 +956,7 @@ restart the build to continue where it left off. During the build, the prompt will not appear again since you have satisfied the requirement. - Once the appropriate license flags are whitelisted + Once the appropriate license flags are on the white list in the LICENSE_FLAGS_WHITELIST variable, you can build the encumbered image with no change at all to the normal build process. @@ -931,7 +1127,7 @@ Now that you know where these two commands reside and how to access information on them, you should find it relatively straightforward to discover the commands - necessary to create a BSP and perform basic kernel maintainence on that BSP using + necessary to create a BSP and perform basic kernel maintenance on that BSP using the tools. The next sections provide a concrete starting point to expand on a few points that might not be immediately obvious or that could use further explanation. @@ -990,7 +1186,7 @@ In every other way, this architecture is representative of how creating a BSP for a 'real' machine would work. The reason the example uses this architecture is because it is an emulated architecture - and can easily be followed without requireing actual hardware. + and can easily be followed without requiring actual hardware. @@ -1059,7 +1255,7 @@ If you enter 'n', the script prompts you to further enter the kernel you do want to use (e.g. 3.0, 3.2_preempt-rt, etc.). Next, the script asks whether you would like to have a new - branch created especially for your BSPin the local + branch created especially for your BSP in the local Linux Yocto Kernel Git repository . If not, then the script re-uses an existing branch. -- cgit v1.2.3-54-g00ecf