diff options
| -rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 75 |
1 files changed, 43 insertions, 32 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index 9a7682c3e2..6b9f3aa786 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
| @@ -8140,13 +8140,15 @@ Some notes from Cal: | |||
| 8140 | cause the OpenEmbedded build system to reuse software across the | 8140 | cause the OpenEmbedded build system to reuse software across the |
| 8141 | various machines where it makes sense. | 8141 | various machines where it makes sense. |
| 8142 | </para> | 8142 | </para> |
| 8143 | |||
| 8143 | <para> | 8144 | <para> |
| 8144 | If build speed and package feed maintenance are considerations, | 8145 | If build speed and package feed maintenance are considerations, |
| 8145 | you should consider the points in this section that can help you | 8146 | you should consider the points in this section that can help you |
| 8146 | optimize your tunings to best consider build times and package | 8147 | optimize your tunings to best consider build times and package |
| 8147 | feed maintenance. | 8148 | feed maintenance. |
| 8148 | <itemizedlist> | 8149 | <itemizedlist> |
| 8149 | <listitem><para><emphasis>Share the Build Directory:</emphasis> | 8150 | <listitem><para> |
| 8151 | <emphasis>Share the Build Directory:</emphasis> | ||
| 8150 | If at all possible, share the | 8152 | If at all possible, share the |
| 8151 | <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink> | 8153 | <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink> |
| 8152 | across builds. | 8154 | across builds. |
| @@ -8172,7 +8174,8 @@ Some notes from Cal: | |||
| 8172 | <filename>TMPDIR</filename>. | 8174 | <filename>TMPDIR</filename>. |
| 8173 | </note> | 8175 | </note> |
| 8174 | </para></listitem> | 8176 | </para></listitem> |
| 8175 | <listitem><para><emphasis>Enable the Appropriate Package Architecture:</emphasis> | 8177 | <listitem><para> |
| 8178 | <emphasis>Enable the Appropriate Package Architecture:</emphasis> | ||
| 8176 | By default, the OpenEmbedded build system enables three | 8179 | By default, the OpenEmbedded build system enables three |
| 8177 | levels of package architectures: "all", "tune" or "package", | 8180 | levels of package architectures: "all", "tune" or "package", |
| 8178 | and "machine". | 8181 | and "machine". |
| @@ -8181,6 +8184,7 @@ Some notes from Cal: | |||
| 8181 | Depending for what a given recipe creates packages, making | 8184 | Depending for what a given recipe creates packages, making |
| 8182 | sure you enable the appropriate package architecture can | 8185 | sure you enable the appropriate package architecture can |
| 8183 | directly impact the build time.</para> | 8186 | directly impact the build time.</para> |
| 8187 | |||
| 8184 | <para>A recipe that just generates scripts can enable | 8188 | <para>A recipe that just generates scripts can enable |
| 8185 | "all" architecture because there are no binaries to build. | 8189 | "all" architecture because there are no binaries to build. |
| 8186 | To specifically enable "all" architecture, be sure your | 8190 | To specifically enable "all" architecture, be sure your |
| @@ -8190,6 +8194,7 @@ Some notes from Cal: | |||
| 8190 | This class is useful for "all" architectures because it | 8194 | This class is useful for "all" architectures because it |
| 8191 | configures many variables so packages can be used across | 8195 | configures many variables so packages can be used across |
| 8192 | multiple architectures.</para> | 8196 | multiple architectures.</para> |
| 8197 | |||
| 8193 | <para>If your recipe needs to generate packages that are | 8198 | <para>If your recipe needs to generate packages that are |
| 8194 | machine-specific or when one of the build or runtime | 8199 | machine-specific or when one of the build or runtime |
| 8195 | dependencies is already machine-architecture dependent, | 8200 | dependencies is already machine-architecture dependent, |
| @@ -8211,7 +8216,8 @@ Some notes from Cal: | |||
| 8211 | PACKAGE_ARCH = "${TUNE_PKGARCH}" | 8216 | PACKAGE_ARCH = "${TUNE_PKGARCH}" |
| 8212 | </literallayout> | 8217 | </literallayout> |
| 8213 | </para></listitem> | 8218 | </para></listitem> |
| 8214 | <listitem><para><emphasis>Choose a Generic Tuning File if Possible:</emphasis> | 8219 | <listitem><para> |
| 8220 | <emphasis>Choose a Generic Tuning File if Possible:</emphasis> | ||
| 8215 | Some tunes are more generic and can run on multiple targets | 8221 | Some tunes are more generic and can run on multiple targets |
| 8216 | (e.g. an <filename>armv5</filename> set of packages could | 8222 | (e.g. an <filename>armv5</filename> set of packages could |
| 8217 | run on <filename>armv6</filename> and | 8223 | run on <filename>armv6</filename> and |
| @@ -8220,6 +8226,7 @@ Some notes from Cal: | |||
| 8220 | on <filename>i586</filename> and higher processors. | 8226 | on <filename>i586</filename> and higher processors. |
| 8221 | You should realize, however, that advances on newer | 8227 | You should realize, however, that advances on newer |
| 8222 | processor versions would not be used.</para> | 8228 | processor versions would not be used.</para> |
| 8229 | |||
| 8223 | <para>If you select the same tune for several different | 8230 | <para>If you select the same tune for several different |
| 8224 | machines, the OpenEmbedded build system reuses software | 8231 | machines, the OpenEmbedded build system reuses software |
| 8225 | previously built, thus speeding up the overall build time. | 8232 | previously built, thus speeding up the overall build time. |
| @@ -8227,34 +8234,35 @@ Some notes from Cal: | |||
| 8227 | generated, the software is not recompiled and only one | 8234 | generated, the software is not recompiled and only one |
| 8228 | package feed exists. | 8235 | package feed exists. |
| 8229 | </para></listitem> | 8236 | </para></listitem> |
| 8230 | <listitem><para><emphasis>Manage Granular Level Packaging:</emphasis> | 8237 | <listitem><para> |
| 8231 | Sometimes cases exist where injecting another level | 8238 | <emphasis>Manage Granular Level Packaging:</emphasis> |
| 8232 | of package architecture beyond the three higher levels | 8239 | Sometimes cases exist where injecting another level of |
| 8233 | noted earlier can be useful. | 8240 | package architecture beyond the three higher levels noted |
| 8234 | For example, consider the <filename>emgd</filename> | 8241 | earlier can be useful. |
| 8235 | graphics stack in the | 8242 | For example, consider how NXP (formerly Freescale) allows |
| 8236 | <filename>meta-intel</filename> layer. | 8243 | for the easy reuse of binary packages in their layer |
| 8237 | In this layer, a subset of software exists that is | 8244 | <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-freescale/'><filename>meta-freescale</filename></ulink>. |
| 8238 | compiled against something different from the rest of the | 8245 | In this example, the |
| 8239 | generic packages. | 8246 | <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-freescale/tree/classes/fsl-dynamic-packagearch.bbclass'><filename>fsl-dynamic-packagearch</filename></ulink> |
| 8240 | You can examine the key code in the | 8247 | class shares GPU packages for i.MX53 boards because |
| 8241 | <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi'>Source Repositories</ulink> | 8248 | all boards share the AMD GPU. |
| 8242 | "daisy" branch in | 8249 | The i.MX6-based boards can do the same because all boards |
| 8243 | <filename>classes/emgd-gl.bbclass</filename>. | 8250 | share the Vivante GPU. |
| 8244 | For a specific set of packages, the code redefines | 8251 | This class inspects the BitBake datastore to identify if |
| 8245 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></ulink>. | 8252 | the package provides or depends on one of the |
| 8246 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_EXTRA_ARCHS'><filename>PACKAGE_EXTRA_ARCHS</filename></ulink> | 8253 | sub-architecture values. |
| 8247 | is then appended with this extra tune name in | 8254 | If so, the class sets the |
| 8248 | <filename>meta-intel-emgd.inc</filename>. | 8255 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></ulink> |
| 8249 | The result is that when searching for packages, the | 8256 | value as <filename>MACHINE_SUBARCH</filename>. |
| 8250 | build system uses a four-level search and the packages | 8257 | If the package does not provide or depend on one of the |
| 8251 | in this new level are preferred as compared to the standard | 8258 | sub-architecture values but it matches a value in the |
| 8252 | tune. | 8259 | machine-specific filter, it sets |
| 8253 | The overall result is that the build system reuses most | 8260 | <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_ARCH'><filename>MACHINE_ARCH</filename></ulink>. |
| 8254 | software from the common tune except for specific cases | 8261 | This behavior reduces the number of packages built and |
| 8255 | as needed. | 8262 | saves build time by reusing binaries. |
| 8256 | </para></listitem> | 8263 | </para></listitem> |
| 8257 | <listitem><para><emphasis>Use Tools to Debug Issues:</emphasis> | 8264 | <listitem><para> |
| 8265 | <emphasis>Use Tools to Debug Issues:</emphasis> | ||
| 8258 | Sometimes you can run into situations where software is | 8266 | Sometimes you can run into situations where software is |
| 8259 | being rebuilt when you think it should not be. | 8267 | being rebuilt when you think it should not be. |
| 8260 | For example, the OpenEmbedded build system might not be | 8268 | For example, the OpenEmbedded build system might not be |
| @@ -8279,17 +8287,20 @@ Some notes from Cal: | |||
| 8279 | Patches to fix any issues identified are most welcome | 8287 | Patches to fix any issues identified are most welcome |
| 8280 | as these issues occasionally do occur. | 8288 | as these issues occasionally do occur. |
| 8281 | </note></para> | 8289 | </note></para> |
| 8290 | |||
| 8282 | <para>For such cases, you can use some tools to help you | 8291 | <para>For such cases, you can use some tools to help you |
| 8283 | sort out the situation: | 8292 | sort out the situation: |
| 8284 | <itemizedlist> | 8293 | <itemizedlist> |
| 8285 | <listitem><para><emphasis><filename>sstate-diff-machines.sh</filename>:</emphasis> | 8294 | <listitem><para> |
| 8295 | <emphasis><filename>sstate-diff-machines.sh</filename>:</emphasis> | ||
| 8286 | You can find this tool in the | 8296 | You can find this tool in the |
| 8287 | <filename>scripts</filename> directory of the | 8297 | <filename>scripts</filename> directory of the |
| 8288 | Source Repositories. | 8298 | Source Repositories. |
| 8289 | See the comments in the script for information on | 8299 | See the comments in the script for information on |
| 8290 | how to use the tool. | 8300 | how to use the tool. |
| 8291 | </para></listitem> | 8301 | </para></listitem> |
| 8292 | <listitem><para><emphasis>BitBake's "-S printdiff" Option:</emphasis> | 8302 | <listitem><para> |
| 8303 | <emphasis>BitBake's "-S printdiff" Option:</emphasis> | ||
| 8293 | Using this option causes BitBake to try to | 8304 | Using this option causes BitBake to try to |
| 8294 | establish the closest signature match it can | 8305 | establish the closest signature match it can |
| 8295 | (e.g. in the shared state cache) and then run | 8306 | (e.g. in the shared state cache) and then run |
