diff options
| author | Kevin Tian <kevin.tian@intel.com> | 2010-09-09 17:00:31 +0800 |
|---|---|---|
| committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-09-10 11:57:31 +0100 |
| commit | 3c6e1d7c623672f6424508fd0ebbe795265a0fe0 (patch) | |
| tree | 28a573430cf1982b6101be2eca74556fd569a323 /handbook | |
| parent | 7ef86584027458b41d8600700ef77647a23b1b92 (diff) | |
| download | poky-3c6e1d7c623672f6424508fd0ebbe795265a0fe0.tar.gz | |
handbook: review and correct CH3(extend poky) in handbook
Fix inaccurate descriptions.
Update recipe examples to make sure they do build
Add some examples for better guidance
Signed-off-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Ke Yu <ke.yu@intel.com>
Diffstat (limited to 'handbook')
| -rw-r--r-- | handbook/extendpoky.xml | 253 |
1 files changed, 172 insertions, 81 deletions
diff --git a/handbook/extendpoky.xml b/handbook/extendpoky.xml index 61d354f39e..61620053a6 100644 --- a/handbook/extendpoky.xml +++ b/handbook/extendpoky.xml | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | 27 | ||
| 28 | <para> | 28 | <para> |
| 29 | Before writing a recipe from scratch it is often useful to check | 29 | Before writing a recipe from scratch it is often useful to check |
| 30 | someone else hasn't written one already. OpenEmbedded is a good place | 30 | whether someone else has written one already. OpenEmbedded is a good place |
| 31 | to look as it has a wider scope and hence a wider range of packages. | 31 | to look as it has a wider scope and hence a wider range of packages. |
| 32 | Poky aims to be compatible with OpenEmbedded so most recipes should | 32 | Poky aims to be compatible with OpenEmbedded so most recipes should |
| 33 | just work in Poky. | 33 | just work in Poky. |
| @@ -43,8 +43,8 @@ | |||
| 43 | <title>Single .c File Package (Hello World!)</title> | 43 | <title>Single .c File Package (Hello World!)</title> |
| 44 | 44 | ||
| 45 | <para> | 45 | <para> |
| 46 | To build an application from a single file stored locally requires a | 46 | To build an application from a single file stored locally (e.g. under "files/") |
| 47 | recipe which has the file listed in the <glossterm><link | 47 | requires a recipe which has the file listed in the <glossterm><link |
| 48 | linkend='var-SRC_URI'>SRC_URI</link></glossterm> variable. In addition | 48 | linkend='var-SRC_URI'>SRC_URI</link></glossterm> variable. In addition |
| 49 | the <function>do_compile</function> and <function>do_install</function> | 49 | the <function>do_compile</function> and <function>do_install</function> |
| 50 | tasks need to be manually written. The <glossterm><link linkend='var-S'> | 50 | tasks need to be manually written. The <glossterm><link linkend='var-S'> |
| @@ -56,7 +56,7 @@ | |||
| 56 | DESCRIPTION = "Simple helloworld application" | 56 | DESCRIPTION = "Simple helloworld application" |
| 57 | SECTION = "examples" | 57 | SECTION = "examples" |
| 58 | LICENSE = "MIT" | 58 | LICENSE = "MIT" |
| 59 | LIC_FILES_CHKSUM = "file://COPYING;md5=ae764cfda68da96df20af9fbf9fe49bd" | 59 | PR = "r0" |
| 60 | 60 | ||
| 61 | SRC_URI = "file://helloworld.c" | 61 | SRC_URI = "file://helloworld.c" |
| 62 | 62 | ||
| @@ -73,8 +73,9 @@ do_install() { | |||
| 73 | </programlisting> | 73 | </programlisting> |
| 74 | 74 | ||
| 75 | <para> | 75 | <para> |
| 76 | As a result of the build process "helloworld" and "helloworld-dbg" | 76 | As a result of the build process "helloworld", "helloworld-dbg" and "hellworld-dev" |
| 77 | packages will be built. | 77 | packages will be built by default. You can <link linkend='usingpoky-extend-addpkg-files'> |
| 78 | control package process</link> yourself. | ||
| 78 | </para> | 79 | </para> |
| 79 | </section> | 80 | </section> |
| 80 | 81 | ||
| @@ -93,20 +94,28 @@ do_install() { | |||
| 93 | The result of the build will be automatically packaged and if | 94 | The result of the build will be automatically packaged and if |
| 94 | the application uses NLS to localise then packages with | 95 | the application uses NLS to localise then packages with |
| 95 | locale information will be generated (one package per | 96 | locale information will be generated (one package per |
| 96 | language). | 97 | language). Below is one example (hello_2.2.bb) |
| 97 | </para> | 98 | </para> |
| 98 | 99 | ||
| 99 | <programlisting> | 100 | <programlisting> |
| 100 | DESCRIPTION = "GNU Helloworld application" | 101 | DESCRIPTION = "GNU Helloworld application" |
| 101 | SECTION = "examples" | 102 | SECTION = "examples" |
| 102 | LICENSE = "GPLv2" | 103 | LICENSE = "GPLv2+" |
| 103 | LIC_FILES_CHKSUM = "file://COPYING;md5=ae764cfda68da96df20af9fbf9fe49bd" | 104 | LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" |
| 105 | PR = "r0" | ||
| 104 | 106 | ||
| 105 | SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.bz2" | 107 | SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz" |
| 106 | 108 | ||
| 107 | inherit autotools | 109 | inherit autotools gettext |
| 108 | </programlisting> | 110 | </programlisting> |
| 109 | 111 | ||
| 112 | <para> | ||
| 113 | <glossterm><link linkend='var-LIC_FILES_CHKSUM'>LIC_FILES_CHKSUM</link> | ||
| 114 | </glossterm> is used to <link linkend='usingpoky-configuring-LIC_FILES_CHKSUM'> | ||
| 115 | track source license change</link>. Autotool based recipe can be quickly | ||
| 116 | created this way like above example. | ||
| 117 | </para> | ||
| 118 | |||
| 110 | </section> | 119 | </section> |
| 111 | 120 | ||
| 112 | <section id='usingpoky-extend-addpkg-makefile'> | 121 | <section id='usingpoky-extend-addpkg-makefile'> |
| @@ -132,23 +141,38 @@ inherit autotools | |||
| 132 | Some applications may require extra parameters to be passed to | 141 | Some applications may require extra parameters to be passed to |
| 133 | the compiler, for example an additional header path. This can | 142 | the compiler, for example an additional header path. This can |
| 134 | be done buy adding to the <glossterm><link | 143 | be done buy adding to the <glossterm><link |
| 135 | linkend='var-CFLAGS'>CFLAGS</link></glossterm> variable, as in the example below. | 144 | linkend='var-CFLAGS'>CFLAGS</link></glossterm> variable, as in the example below: |
| 145 | </para> | ||
| 146 | |||
| 147 | <programlisting> | ||
| 148 | CFLAGS_prepend = "-I ${S}/include " | ||
| 149 | </programlisting> | ||
| 150 | |||
| 151 | <para> | ||
| 152 | mtd-utils is an example as Makefile-based: | ||
| 136 | </para> | 153 | </para> |
| 137 | 154 | ||
| 138 | <programlisting> | 155 | <programlisting> |
| 139 | DESCRIPTION = "Tools for managing memory technology devices." | 156 | DESCRIPTION = "Tools for managing memory technology devices." |
| 140 | SECTION = "base" | 157 | SECTION = "base" |
| 141 | DEPENDS = "zlib" | 158 | DEPENDS = "zlib lzo e2fsprogs util-linux" |
| 142 | HOMEPAGE = "http://www.linux-mtd.infradead.org/" | 159 | HOMEPAGE = "http://www.linux-mtd.infradead.org/" |
| 143 | LICENSE = "GPLv2" | 160 | LICENSE = "GPLv2" |
| 144 | LIC_FILES_CHKSUM = "file://COPYING;md5=ae764cfda68da96df20af9fbf9fe49bd" | ||
| 145 | 161 | ||
| 146 | SRC_URI = "ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-${PV}.tar.gz" | 162 | SRC_URI = "git://git.infradead.org/mtd-utils.git;protocol=git;tag=v${PV}" |
| 147 | 163 | ||
| 148 | CFLAGS_prepend = "-I ${S}/include " | 164 | S = "${WORKDIR}/git/" |
| 149 | 165 | ||
| 150 | do_install() { | 166 | EXTRA_OEMAKE = "'CC=${CC}' 'CFLAGS=${CFLAGS} -I${S}/include -DWITHOUT_XATTR' \ |
| 151 | oe_runmake install DESTDIR=${D} | 167 | 'BUILDDIR=${S}'" |
| 168 | |||
| 169 | do_install () { | ||
| 170 | oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} \ | ||
| 171 | INCLUDEDIR=${includedir} | ||
| 172 | install -d ${D}${includedir}/mtd/ | ||
| 173 | for f in ${S}/include/mtd/*.h; do | ||
| 174 | install -m 0644 $f ${D}${includedir}/mtd/ | ||
| 175 | done | ||
| 152 | } | 176 | } |
| 153 | </programlisting> | 177 | </programlisting> |
| 154 | 178 | ||
| @@ -165,7 +189,7 @@ do_install() { | |||
| 165 | </para> | 189 | </para> |
| 166 | 190 | ||
| 167 | <para> | 191 | <para> |
| 168 | Below the "libXpm" recipe is used as an example. By | 192 | Below the "libXpm" recipe (libxpm_3.5.7.bb) is used as an example. By |
| 169 | default the "libXpm" recipe generates one package | 193 | default the "libXpm" recipe generates one package |
| 170 | which contains the library | 194 | which contains the library |
| 171 | and also a few binaries. The recipe can be adapted to | 195 | and also a few binaries. The recipe can be adapted to |
| @@ -177,8 +201,9 @@ require xorg-lib-common.inc | |||
| 177 | 201 | ||
| 178 | DESCRIPTION = "X11 Pixmap library" | 202 | DESCRIPTION = "X11 Pixmap library" |
| 179 | LICENSE = "X-BSD" | 203 | LICENSE = "X-BSD" |
| 180 | LIC_FILES_CHKSUM = "file://COPYING;md5=ae764cfda68da96df20af9fbf9fe49bd" | 204 | DEPENDS += "libxext libsm libxt" |
| 181 | DEPENDS += "libxext" | 205 | PR = "r3" |
| 206 | PE = "1" | ||
| 182 | 207 | ||
| 183 | XORG_PN = "libXpm" | 208 | XORG_PN = "libXpm" |
| 184 | 209 | ||
| @@ -194,9 +219,12 @@ FILES_sxpm = "${bindir}/sxpm" | |||
| 194 | package as standard we prepend the <glossterm><link | 219 | package as standard we prepend the <glossterm><link |
| 195 | linkend='var-PACKAGES'>PACKAGES</link></glossterm> variable so | 220 | linkend='var-PACKAGES'>PACKAGES</link></glossterm> variable so |
| 196 | additional package names are added to the start of list. The | 221 | additional package names are added to the start of list. The |
| 197 | extra <glossterm><link linkend='var-PN'>FILES</link></glossterm>_* | 222 | extra <glossterm><link linkend='var-FILES'>FILES</link></glossterm>_* |
| 198 | variables then contain information to specify which files and | 223 | variables then contain information to specify which files and |
| 199 | directories goes into which package. | 224 | directories goes into which package. Files included by earlier |
| 225 | package are skipped by latter packages, and thus main <glossterm> | ||
| 226 | <link linkend='var-PN'>PN</link></glossterm> will not include | ||
| 227 | above listed files | ||
| 200 | </para> | 228 | </para> |
| 201 | </section> | 229 | </section> |
| 202 | 230 | ||
| @@ -208,12 +236,15 @@ FILES_sxpm = "${bindir}/sxpm" | |||
| 208 | a <function>pkg_postinst_PACKAGENAME()</function> | 236 | a <function>pkg_postinst_PACKAGENAME()</function> |
| 209 | function to the .bb file | 237 | function to the .bb file |
| 210 | where PACKAGENAME is the name of the package to attach | 238 | where PACKAGENAME is the name of the package to attach |
| 211 | the postinst script to. A post-installation function has the following structure: | 239 | the postinst script to. Normally <glossterm><link |
| 240 | linkend='var-PN'>PN</link></glossterm> can be used which expands | ||
| 241 | to PACKAGENAME automatically. A post-installation function has the | ||
| 242 | following structure: | ||
| 212 | </para> | 243 | </para> |
| 213 | <programlisting> | 244 | <programlisting> |
| 214 | pkg_postinst_PACKAGENAME () { | 245 | pkg_postinst_PACKAGENAME () { |
| 215 | #!/bin/sh -e | 246 | #!/bin/sh -e |
| 216 | # Commands to carry out | 247 | # Commands to carry out |
| 217 | } | 248 | } |
| 218 | </programlisting> | 249 | </programlisting> |
| 219 | <para> | 250 | <para> |
| @@ -234,12 +265,12 @@ pkg_postinst_PACKAGENAME () { | |||
| 234 | 265 | ||
| 235 | <programlisting> | 266 | <programlisting> |
| 236 | pkg_postinst_PACKAGENAME () { | 267 | pkg_postinst_PACKAGENAME () { |
| 237 | #!/bin/sh -e | 268 | #!/bin/sh -e |
| 238 | if [ x"$D" = "x" ]; then | 269 | if [ x"$D" = "x" ]; then |
| 239 | # Actions to carry out on the device go here | 270 | # Actions to carry out on the device go here |
| 240 | else | 271 | else |
| 241 | exit 1 | 272 | exit 1 |
| 242 | fi | 273 | fi |
| 243 | } | 274 | } |
| 244 | </programlisting> | 275 | </programlisting> |
| 245 | 276 | ||
| @@ -349,7 +380,7 @@ RRECOMMENDS_task-custom-tools = "\ | |||
| 349 | </para> | 380 | </para> |
| 350 | 381 | ||
| 351 | <para> | 382 | <para> |
| 352 | In this example, two tasks packages are created, task-custom-apps and | 383 | In this example, two task packages are created, task-custom-apps and |
| 353 | task-custom-tools with the dependencies and recommended package dependencies | 384 | task-custom-tools with the dependencies and recommended package dependencies |
| 354 | listed. To build an image using these task packages, you would then add | 385 | listed. To build an image using these task packages, you would then add |
| 355 | "task-custom-apps" and/or "task-custom-tools" to <glossterm><link | 386 | "task-custom-apps" and/or "task-custom-tools" to <glossterm><link |
| @@ -367,8 +398,9 @@ RRECOMMENDS_task-custom-tools = "\ | |||
| 367 | variable. To create these, the best reference is <filename>meta/classes/poky-image.bbclass</filename> | 398 | variable. To create these, the best reference is <filename>meta/classes/poky-image.bbclass</filename> |
| 368 | which illustrates how poky achieves this. In summary, the file looks at the contents of the | 399 | which illustrates how poky achieves this. In summary, the file looks at the contents of the |
| 369 | <glossterm><link linkend='var-IMAGE_FEATURES'>IMAGE_FEATURES</link></glossterm> | 400 | <glossterm><link linkend='var-IMAGE_FEATURES'>IMAGE_FEATURES</link></glossterm> |
| 370 | variable and based on this generates the <glossterm><link linkend='var-IMAGE_INSTALL'> | 401 | variable and then map into a set of tasks or packages. Based on this then the |
| 371 | IMAGE_INSTALL</link></glossterm> variable automatically. Extra features can be added by | 402 | <glossterm><link linkend='var-IMAGE_INSTALL'> IMAGE_INSTALL</link></glossterm> |
| 403 | variable is generated automatically. Extra features can be added by | ||
| 372 | extending the class or creating a custom class for use with specialised image .bb files. | 404 | extending the class or creating a custom class for use with specialised image .bb files. |
| 373 | </para> | 405 | </para> |
| 374 | </section> | 406 | </section> |
| @@ -397,11 +429,11 @@ DISTRO_EXTRA_RDEPENDS += "strace" | |||
| 397 | DISTRO_EXTRA_RDEPENDS</link></glossterm> variable is for | 429 | DISTRO_EXTRA_RDEPENDS</link></glossterm> variable is for |
| 398 | distribution maintainers this method does not make | 430 | distribution maintainers this method does not make |
| 399 | adding packages as simple as a custom .bb file. Using | 431 | adding packages as simple as a custom .bb file. Using |
| 400 | this method, a few packages will need to be recreated | 432 | this method, a few packages will need to be recreated if they have been |
| 401 | and the the image built. | 433 | created before and then the image is rebuilt. |
| 402 | </para> | 434 | </para> |
| 403 | <programlisting> | 435 | <programlisting> |
| 404 | bitbake -cclean task-boot task-base task-poky | 436 | bitbake -c clean task-boot task-base task-poky |
| 405 | bitbake poky-image-sato | 437 | bitbake poky-image-sato |
| 406 | </programlisting> | 438 | </programlisting> |
| 407 | 439 | ||
| @@ -410,7 +442,7 @@ bitbake poky-image-sato | |||
| 410 | <glossterm><link linkend='var-DISTRO_EXTRA_RDEPENDS'> | 442 | <glossterm><link linkend='var-DISTRO_EXTRA_RDEPENDS'> |
| 411 | DISTRO_EXTRA_RDEPENDS</link></glossterm> variable. There is no need to | 443 | DISTRO_EXTRA_RDEPENDS</link></glossterm> variable. There is no need to |
| 412 | build them by hand as Poky images depend on the packages they contain so | 444 | build them by hand as Poky images depend on the packages they contain so |
| 413 | dependencies will be built automatically. For this reason we don't use the | 445 | dependencies will be built automatically when building the image. For this reason we don't use the |
| 414 | "rebuild" task in this case since "rebuild" does not care about | 446 | "rebuild" task in this case since "rebuild" does not care about |
| 415 | dependencies - it only rebuilds the specified package. | 447 | dependencies - it only rebuilds the specified package. |
| 416 | </para> | 448 | </para> |
| @@ -451,7 +483,8 @@ bitbake poky-image-sato | |||
| 451 | </glossterm> (e.g. "zImage") and <glossterm><link linkend='var-IMAGE_FSTYPES'> | 483 | </glossterm> (e.g. "zImage") and <glossterm><link linkend='var-IMAGE_FSTYPES'> |
| 452 | IMAGE_FSTYPES</link></glossterm> (e.g. "tar.gz jffs2") might also be | 484 | IMAGE_FSTYPES</link></glossterm> (e.g. "tar.gz jffs2") might also be |
| 453 | needed. Full details on what these variables do and the meaning of | 485 | needed. Full details on what these variables do and the meaning of |
| 454 | their contents is available through the links. | 486 | their contents is available through the links. There're lots of existing |
| 487 | machine .conf files which can be easily leveraged from meta/conf/machine/. | ||
| 455 | </para> | 488 | </para> |
| 456 | </section> | 489 | </section> |
| 457 | 490 | ||
| @@ -461,10 +494,10 @@ bitbake poky-image-sato | |||
| 461 | Poky needs to be able to build a kernel for the machine. You need | 494 | Poky needs to be able to build a kernel for the machine. You need |
| 462 | to either create a new kernel recipe for this machine or extend an | 495 | to either create a new kernel recipe for this machine or extend an |
| 463 | existing recipe. There are plenty of kernel examples in the | 496 | existing recipe. There are plenty of kernel examples in the |
| 464 | packages/linux directory which can be used as references. | 497 | meta/recipes-kernel/linux directory which can be used as references. |
| 465 | </para> | 498 | </para> |
| 466 | <para> | 499 | <para> |
| 467 | If creating a new recipe the "normal" recipe writing rules apply | 500 | If creating a new recipe the "normal" recipe writing rules apply |
| 468 | for setting up a <glossterm><link linkend='var-SRC_URI'>SRC_URI | 501 | for setting up a <glossterm><link linkend='var-SRC_URI'>SRC_URI |
| 469 | </link></glossterm> including any patches and setting <glossterm> | 502 | </link></glossterm> including any patches and setting <glossterm> |
| 470 | <link linkend='var-S'>S</link></glossterm> to point at the source | 503 | <link linkend='var-S'>S</link></glossterm> to point at the source |
| @@ -481,8 +514,11 @@ bitbake poky-image-sato | |||
| 481 | machine's defconfig files in a given kernel, possibly listing it in | 514 | machine's defconfig files in a given kernel, possibly listing it in |
| 482 | the SRC_URI and adding the machine to the expression in <glossterm> | 515 | the SRC_URI and adding the machine to the expression in <glossterm> |
| 483 | <link linkend='var-COMPATIBLE_MACHINE'>COMPATIBLE_MACHINE</link> | 516 | <link linkend='var-COMPATIBLE_MACHINE'>COMPATIBLE_MACHINE</link> |
| 484 | </glossterm>. | 517 | </glossterm>: |
| 485 | </para> | 518 | </para> |
| 519 | <programlisting> | ||
| 520 | COMPATIBLE_MACHINE = '(qemux86|qemumips)' | ||
| 521 | </programlisting> | ||
| 486 | </section> | 522 | </section> |
| 487 | 523 | ||
| 488 | <section id="platdev-newmachine-formfactor"> | 524 | <section id="platdev-newmachine-formfactor"> |
| @@ -502,8 +538,21 @@ bitbake poky-image-sato | |||
| 502 | under <filename>meta/packages/formfactor/files/MACHINENAME/</filename> | 538 | under <filename>meta/packages/formfactor/files/MACHINENAME/</filename> |
| 503 | where <literal>MACHINENAME</literal> is the name for which this infomation | 539 | where <literal>MACHINENAME</literal> is the name for which this infomation |
| 504 | applies. For information about the settings available and the defaults, please see | 540 | applies. For information about the settings available and the defaults, please see |
| 505 | <filename>meta/packages/formfactor/files/config</filename>. | 541 | <filename>meta/packages/formfactor/files/config</filename>. Below is one |
| 542 | example for qemuarm: | ||
| 506 | </para> | 543 | </para> |
| 544 | <programlisting> | ||
| 545 | HAVE_TOUCHSCREEN=1 | ||
| 546 | HAVE_KEYBOARD=1 | ||
| 547 | |||
| 548 | DISPLAY_CAN_ROTATE=0 | ||
| 549 | DISPLAY_ORIENTATION=0 | ||
| 550 | #DISPLAY_WIDTH_PIXELS=640 | ||
| 551 | #DISPLAY_HEIGHT_PIXELS=480 | ||
| 552 | #DISPLAY_BPP=16 | ||
| 553 | DISPLAY_DPI=150 | ||
| 554 | DISPLAY_SUBPIXEL_ORDER=vrgb | ||
| 555 | </programlisting> | ||
| 507 | </section> | 556 | </section> |
| 508 | </section> | 557 | </section> |
| 509 | 558 | ||
| @@ -536,11 +585,13 @@ bitbake poky-image-sato | |||
| 536 | </para> | 585 | </para> |
| 537 | 586 | ||
| 538 | <para> | 587 | <para> |
| 539 | The Poky tree includes two additional layers which demonstrate | 588 | The Poky tree includes several additional layers which demonstrate |
| 540 | this functionality, meta-moblin and meta-extras. | 589 | this functionality, such as meta-moblin, meta-emenlow, meta-extras. |
| 541 | The meta-extras repostory is not enabled by default but enabling | 590 | Default layers enabled are meta-moblin and meta-emenlow, which may |
| 542 | it is as easy as adding the layers path to the BBLAYERS variable in | 591 | suffer from future changes. The meta-extras repostory is not enabled |
| 543 | your bblayers.conf, this is how all layers are enabled in Poky builds: | 592 | by default but enabling any layer is as easy as adding the layers path |
| 593 | to the BBLAYERS variable in your bblayers.conf. this is how meta-extras | ||
| 594 | are enabled in Poky builds: | ||
| 544 | </para> | 595 | </para> |
| 545 | <para> | 596 | <para> |
| 546 | <literallayout class='monospaced'>LCONF_VERSION = "1" | 597 | <literallayout class='monospaced'>LCONF_VERSION = "1" |
| @@ -549,6 +600,7 @@ BBFILES ?= "" | |||
| 549 | BBLAYERS = " \ | 600 | BBLAYERS = " \ |
| 550 | /path/to/poky/meta \ | 601 | /path/to/poky/meta \ |
| 551 | /path/to/poky/meta-moblin \ | 602 | /path/to/poky/meta-moblin \ |
| 603 | /path/to/poky/meta-emenlow \ | ||
| 552 | /path/to/poky/meta-extras \ | 604 | /path/to/poky/meta-extras \ |
| 553 | " | 605 | " |
| 554 | </literallayout> | 606 | </literallayout> |
| @@ -563,23 +615,23 @@ BBLAYERS = " \ | |||
| 563 | </para> | 615 | </para> |
| 564 | 616 | ||
| 565 | <para> | 617 | <para> |
| 566 | The meta-extras layer.conf demonstrates the required syntax: | 618 | The meta-emenlow/conf/layer.conf demonstrates the required syntax: |
| 567 | <literallayout class='monospaced'># We have a conf and classes directory, add to BBPATH | 619 | <literallayout class='monospaced'># We have a conf and classes directory, add to BBPATH |
| 568 | BBPATH := "${BBPATH}${LAYERDIR}" | 620 | BBPATH := "${BBPATH}:${LAYERDIR}" |
| 569 | 621 | ||
| 570 | # We have a packages directory, add to BBFILES | 622 | # We have a packages directory, add to BBFILES |
| 571 | BBFILES := "${BBFILES} ${LAYERDIR}/packages/*/*.bb" | 623 | BBFILES := "${BBFILES} ${LAYERDIR}/packages/*/*.bb \ |
| 572 | 624 | ${LAYERDIR}/packages/*/*.bbappend" | |
| 573 | BBFILE_COLLECTIONS += "extras" | ||
| 574 | BBFILE_PATTERN_extras := "^${LAYERDIR}/" | ||
| 575 | BBFILE_PRIORITY_extras = "5" | ||
| 576 | 625 | ||
| 577 | require conf/distro/include/poky-extras-src-revisions.inc | 626 | BBFILE_COLLECTIONS += "emenlow" |
| 627 | BBFILE_PATTERN_emenlow := "^${LAYERDIR}/" | ||
| 628 | BBFILE_PRIORITY_emenlow = "6" | ||
| 578 | </literallayout> | 629 | </literallayout> |
| 579 | </para> | 630 | </para> |
| 580 | 631 | ||
| 581 | <para> | 632 | <para> |
| 582 | As can be seen, the layers recipes are added to BBFILES. The | 633 | As can be seen, the layers recipes are added to |
| 634 | <glossterm> <link linkend='var-BBFILES'>BBFILES</link></glossterm>. The | ||
| 583 | BBFILE_COLLECTIONS variable is then appended to with the | 635 | BBFILE_COLLECTIONS variable is then appended to with the |
| 584 | layer name. The BBFILE_PATTERN variable is immediately expanded | 636 | layer name. The BBFILE_PATTERN variable is immediately expanded |
| 585 | with a regular expression used to match files from BBFILES into | 637 | with a regular expression used to match files from BBFILES into |
| @@ -588,15 +640,17 @@ require conf/distro/include/poky-extras-src-revisions.inc | |||
| 588 | priorities to the files in different layers. This is useful | 640 | priorities to the files in different layers. This is useful |
| 589 | in situations where the same package might appear in multiple | 641 | in situations where the same package might appear in multiple |
| 590 | layers and allows you to choose which layer should 'win'. | 642 | layers and allows you to choose which layer should 'win'. |
| 591 | Note the use of LAYERDIR with the immediate expansion operator. | 643 | Note the use of <glossterm><link linkend='var-LAYERDIR'> |
| 592 | LAYERDIR expands to the directory of the current layer and | 644 | LAYERDIR</link></glossterm> with the immediate expansion operator. |
| 645 | <glossterm><link linkend='var-LAYERDIR'>LAYERDIR</link></glossterm> | ||
| 646 | expands to the directory of the current layer and | ||
| 593 | requires use of the immediate expansion operator so that Bitbake | 647 | requires use of the immediate expansion operator so that Bitbake |
| 594 | does not lazily expand the variable when it's parsing a | 648 | does not lazily expand the variable when it's parsing a |
| 595 | different directory. | 649 | different directory. |
| 596 | </para> | 650 | </para> |
| 597 | 651 | ||
| 598 | <para> | 652 | <para> |
| 599 | Extra bbclasses and configuration are added to the BBPATH | 653 | Emenlow bbclasses and configuration are added to the BBPATH |
| 600 | environment variable. In this case, the first file with the | 654 | environment variable. In this case, the first file with the |
| 601 | matching name found in BBPATH is the one that is used, just | 655 | matching name found in BBPATH is the one that is used, just |
| 602 | like the PATH variable for binaries. It is therefore recommended | 656 | like the PATH variable for binaries. It is therefore recommended |
| @@ -630,9 +684,19 @@ require conf/distro/include/poky-extras-src-revisions.inc | |||
| 630 | summarises the change and starts with the name of any package affected | 684 | summarises the change and starts with the name of any package affected |
| 631 | work well. Not all changes are to specific packages so the prefix could | 685 | work well. Not all changes are to specific packages so the prefix could |
| 632 | also be a machine name or class name instead. If a change needs a longer | 686 | also be a machine name or class name instead. If a change needs a longer |
| 633 | description this should follow the summary. | 687 | description this should follow the summary: |
| 634 | </para> | 688 | </para> |
| 635 | 689 | ||
| 690 | <literallayout class='monospaced'> | ||
| 691 | bitbake/data.py: Add emit_func() and generate_dependencies() functions | ||
| 692 | |||
| 693 | These functions allow generation of dependency data between funcitons and | ||
| 694 | variables allowing moves to be made towards generating checksums and allowing | ||
| 695 | use of the dependency information in other parts of bitbake. | ||
| 696 | |||
| 697 | Signed-off-by: Richard Purdie rpurdie@linux.intel.com | ||
| 698 | </literallayout> | ||
| 699 | |||
| 636 | <para> | 700 | <para> |
| 637 | Any commit should be self contained in that it should leave the | 701 | Any commit should be self contained in that it should leave the |
| 638 | metadata in a consistent state, buildable before and after the | 702 | metadata in a consistent state, buildable before and after the |
| @@ -655,7 +719,7 @@ require conf/distro/include/poky-extras-src-revisions.inc | |||
| 655 | it easy to miss incrementing it when updating the recipe. | 719 | it easy to miss incrementing it when updating the recipe. |
| 656 | When upgrading the version of a package (<glossterm><link | 720 | When upgrading the version of a package (<glossterm><link |
| 657 | linkend='var-PV'>PV</link></glossterm>), the <glossterm><link | 721 | linkend='var-PV'>PV</link></glossterm>), the <glossterm><link |
| 658 | linkend='var-PR'>PR</link></glossterm> variable should be removed. | 722 | linkend='var-PR'>PR</link></glossterm> variable should be reset to "r0". |
| 659 | </para> | 723 | </para> |
| 660 | 724 | ||
| 661 | <para> | 725 | <para> |
| @@ -675,7 +739,7 @@ require conf/distro/include/poky-extras-src-revisions.inc | |||
| 675 | the repository and don't have to remember to rebuild any sections. | 739 | the repository and don't have to remember to rebuild any sections. |
| 676 | The second is to ensure that target users are able to upgrade their | 740 | The second is to ensure that target users are able to upgrade their |
| 677 | devices via their package manager such as with the <command> | 741 | devices via their package manager such as with the <command> |
| 678 | opkg update;opkg upgrade</command> commands (or similar for | 742 | opkg upgrade</command> commands (or similar for |
| 679 | dpkg/apt or rpm based systems). The aim is to ensure Poky has | 743 | dpkg/apt or rpm based systems). The aim is to ensure Poky has |
| 680 | upgradable packages in all cases. | 744 | upgradable packages in all cases. |
| 681 | </para> | 745 | </para> |
| @@ -708,6 +772,8 @@ require conf/distro/include/poky-extras-src-revisions.inc | |||
| 708 | are builds that build everything from the ground up and test everything. | 772 | are builds that build everything from the ground up and test everything. |
| 709 | They usually happen at preset times such as at night when the machine | 773 | They usually happen at preset times such as at night when the machine |
| 710 | load isn't high from the incremental builds. | 774 | load isn't high from the incremental builds. |
| 775 | <ulink url='http://autobuilder.pokylinux.org:8010'>poky autobuilder</ulink> | ||
| 776 | is an example implementation with buildrot. | ||
| 711 | </para> | 777 | </para> |
| 712 | 778 | ||
| 713 | <para> | 779 | <para> |
| @@ -783,11 +849,14 @@ src/gz beagleboard http://www.mysite.com/somedir/deploy/ipk/beagleboard</literal | |||
| 783 | </para> | 849 | </para> |
| 784 | 850 | ||
| 785 | <programlisting> | 851 | <programlisting> |
| 786 | bitbake --cmd compile --force NAME_OF_PACKAGE | 852 | bitbake -c compile -f NAME_OF_PACKAGE |
| 787 | </programlisting> | 853 | </programlisting> |
| 788 | 854 | ||
| 789 | <para> | 855 | <para> |
| 790 | Other tasks may also be called this way. | 856 | "-f" or "--force" is used to force re-execution of the specified task. |
| 857 | Other tasks may also be called this way. But note that all the modifications | ||
| 858 | in <glossterm><link linkend='var-WORKDIR'>WORKDIR</link></glossterm> | ||
| 859 | are gone once you executes "-c clean" for a pacakge. | ||
| 791 | </para> | 860 | </para> |
| 792 | 861 | ||
| 793 | <section id='usingpoky-modifying-packages-quilt'> | 862 | <section id='usingpoky-modifying-packages-quilt'> |
| @@ -840,10 +909,11 @@ SRC_URI += "file://NAME-OF-PATCH.patch" | |||
| 840 | 909 | ||
| 841 | </section> | 910 | </section> |
| 842 | <section id='usingpoky-configuring-LIC_FILES_CHKSUM'> | 911 | <section id='usingpoky-configuring-LIC_FILES_CHKSUM'> |
| 843 | <title>Configuring the LIC_FILES_CHKSUM variable</title> | 912 | <title>Track license change</title> |
| 844 | <para> | 913 | <para> |
| 845 | The changes in the license text inside source code files is tracked | 914 | The license of one upstream project may change in the future, and Poky provides |
| 846 | using the LIC_FILES_CHKSUM metadata variable. | 915 | one mechanism to track such license change - <glossterm> |
| 916 | <link linkend='var-LIC_FILES_CHKSUM'>LIC_FILES_CHKSUM</link></glossterm> variable. | ||
| 847 | </para> | 917 | </para> |
| 848 | 918 | ||
| 849 | <section id='usingpoky-specifying-LIC_FILES_CHKSUM'> | 919 | <section id='usingpoky-specifying-LIC_FILES_CHKSUM'> |
| @@ -855,6 +925,26 @@ LIC_FILES_CHKSUM = "file://COPYING; md5=xxxx \ | |||
| 855 | file://licfile2.txt; endline=50;md5=zzzz \ | 925 | file://licfile2.txt; endline=50;md5=zzzz \ |
| 856 | ..." | 926 | ..." |
| 857 | </programlisting> | 927 | </programlisting> |
| 928 | |||
| 929 | <para> | ||
| 930 | <glossterm><link linkend='var-S'>S</link></glossterm> is the default directory | ||
| 931 | for searching files listed in <glossterm><link linkend='var-LIC_FILES_CHKSUM'> | ||
| 932 | LIC_FILES_CHKSUM</link></glossterm>. Relative path could be used too: | ||
| 933 | </para> | ||
| 934 | |||
| 935 | <programlisting> | ||
| 936 | LIC_FILES_CHKSUM = "file://src/ls.c;startline=5;endline=16;\ | ||
| 937 | md5=bb14ed3c4cda583abc85401304b5cd4e" | ||
| 938 | LIC_FILES_CHKSUM = "file://../license.html;md5=5c94767cedb5d6987c902ac850ded2c6" | ||
| 939 | </programlisting> | ||
| 940 | |||
| 941 | <para> | ||
| 942 | The first line locates a file in <glossterm><link linkend='var-S'> | ||
| 943 | S</link></glossterm>/src/ls.c, and the second line refers to a file in | ||
| 944 | <glossterm><link linkend='var-WORKDIR'>WORKDIR</link></glossterm>, which is the parent | ||
| 945 | of <glossterm><link linkend='var-S'>S</link></glossterm> | ||
| 946 | </para> | ||
| 947 | |||
| 858 | </section> | 948 | </section> |
| 859 | 949 | ||
| 860 | <section id='usingpoky-LIC_FILES_CHKSUM-explanation-of-syntax'> | 950 | <section id='usingpoky-LIC_FILES_CHKSUM-explanation-of-syntax'> |
| @@ -873,12 +963,12 @@ to specify "beginline" and "endline" parameters. | |||
| 873 | </para> | 963 | </para> |
| 874 | <para> | 964 | <para> |
| 875 | The "md5" parameter stores the md5 checksum of the license text. So if | 965 | The "md5" parameter stores the md5 checksum of the license text. So if |
| 876 | the license text changes in any way from a file, then it's md5 sum will differ and will not | 966 | the license text changes in any way from a file, then its md5 sum will differ and will not |
| 877 | match with the previously stored md5 checksum. This mismatch will trigger build | 967 | match with the previously stored md5 checksum. This mismatch will trigger build |
| 878 | failure, notifying developer about the license text md5 mismatch, and allowing | 968 | failure, notifying developer about the license text md5 mismatch, and allowing |
| 879 | the developer to review the license text changes. Also note that if md5 checksum | 969 | the developer to review the license text changes. Also note that if md5 checksum |
| 880 | is not matched while building, the correct md5 checksum is printed in the build | 970 | is not matched while building, the correct md5 checksum is printed in the build |
| 881 | log. | 971 | log which can be easily copied to .bb file. |
| 882 | </para> | 972 | </para> |
| 883 | <para> | 973 | <para> |
| 884 | There is no limit on how many files can be specified on this parameter. But generally every | 974 | There is no limit on how many files can be specified on this parameter. But generally every |
| @@ -891,7 +981,7 @@ is valid then tracking only that file would be enough. | |||
| 891 | <para> | 981 | <para> |
| 892 | 1. If you specify empty or invalid "md5" parameter; then while building | 982 | 1. If you specify empty or invalid "md5" parameter; then while building |
| 893 | the package, bitbake will give md5 not matched error, and also show the correct | 983 | the package, bitbake will give md5 not matched error, and also show the correct |
| 894 | "md5" parameter value in the build log | 984 | "md5" parameter value both on the screen and in the build log |
| 895 | </para> | 985 | </para> |
| 896 | <para> | 986 | <para> |
| 897 | 2. If the whole file contains only license text, then there is no need to | 987 | 2. If the whole file contains only license text, then there is no need to |
| @@ -901,22 +991,23 @@ specify "beginline" and "endline" parameters. | |||
| 901 | </section> | 991 | </section> |
| 902 | </section> | 992 | </section> |
| 903 | <section id='usingpoky-configuring-DISTRO_PN_ALIAS'> | 993 | <section id='usingpoky-configuring-DISTRO_PN_ALIAS'> |
| 904 | <title>Configuring the DISTRO_PN_ALIAS variable</title> | 994 | <title>Handle package name alias</title> |
| 905 | <para> | 995 | <para> |
| 906 | Sometimes the names of the same packages are different in different | 996 | Poky implements a distro_check task which automatically connects to major distributions |
| 907 | linux distributions; and that can becomes an issue for the distro_check | 997 | and checks whether they contains same package. Sometimes the same package has different |
| 908 | task to check if the given recipe package exists in other linux distros. | 998 | names in different distributions, which results in a mismatch from distro_check task |
| 909 | This issue is avoided by defining per distro recipe name alias: | 999 | This can be solved by defining per distro recipe name alias - |
| 910 | DISTRO_PN_ALIAS | 1000 | <glossterm><link linkend='var-DISTRO_PN_ALIAS'>DISTRO_PN_ALIAS</link></glossterm> |
| 911 | </para> | 1001 | </para> |
| 912 | 1002 | ||
| 913 | <section id='usingpoky-specifying-DISTRO_PN_ALIAS'> | 1003 | <section id='usingpoky-specifying-DISTRO_PN_ALIAS'> |
| 914 | <title>Specifying the DISTRO_PN_ALIAS variable </title> | 1004 | <title>Specifying the DISTRO_PN_ALIAS variable </title> |
| 915 | 1005 | ||
| 916 | <programlisting> | 1006 | <programlisting> |
| 917 | DISTRO_PN_ALIAS_pn = "distro1=package_name_alias1 distro2=package_name_alias2 \ | 1007 | DISTRO_PN_ALIAS_pn-PACKAGENAME = "distro1=package_name_alias1 \ |
| 918 | distro3=package_name_alias3 \ | 1008 | distro2=package_name_alias2 \ |
| 919 | ..." | 1009 | distro3=package_name_alias3 \ |
| 1010 | ..." | ||
| 920 | </programlisting> | 1011 | </programlisting> |
| 921 | <para> | 1012 | <para> |
| 922 | Use space as the delimiter if there're multiple distro aliases | 1013 | Use space as the delimiter if there're multiple distro aliases |
